API HOOK远程卸载方法
来源:互联网 发布:网络调查问卷设计 编辑:程序博客网 时间:2024/06/05 20:49
远程卸载的方法主要是在注入的基础上进行,主要区别在写入内存后干的事情不同,注入的代码在我上一篇文章中又写到,下面我们只讨论不同的地方,废话不多说上代码:
#include <Windows.h>#include <tchar.h>void main(){TCHAR dllstr[MAX_PATH] = _T("dlltest.dll");HANDLE hprocess;hprocess = OpenProcess(PROCESS_CREATE_THREAD|PROCESS_VM_OPERATION|PROCESS_VM_WRITE, FALSE,7104);LPVOID lpbuf;lpbuf = VirtualAllocEx(hprocess,NULL,sizeof(dllstr),MEM_COMMIT,PAGE_READWRITE);if(lpbuf==NULL){VirtualFreeEx(hprocess,NULL,sizeof(dllstr),MEM_DECOMMIT);CloseHandle(hprocess);return;}WriteProcessMemory(hprocess,lpbuf,(LPVOID)dllstr,sizeof(dllstr),0);while(1){HANDLE thread = CreateRemoteThread(hprocess,NULL,0,(LPTHREAD_START_ROUTINE)GetModuleHandle,lpbuf,0,0);WaitForSingleObject(thread,INFINITE);DWORD hdll; GetExitCodeThread(thread,&hdll);//hdll存储指定线程的返回值if(!hdll){VirtualFreeEx(hprocess,lpbuf,sizeof(dllstr),MEM_RELEASE);CloseHandle(hprocess);CloseHandle(thread);return;}thread = CreateRemoteThread(hprocess,NULL,0,(LPTHREAD_START_ROUTINE)FreeLibrary,(LPVOID)hdll,0,0);WaitForSingleObject(thread,INFINITE);DWORD exit;GetExitCodeThread(thread,&exit);if(!exit){VirtualFreeEx(hprocess,lpbuf,sizeof(dllstr),MEM_DECOMMIT);CloseHandle(hprocess);CloseHandle(thread);return;}}return;}
在写入后,创建远程线程,CreateRemoteThread函数的第4个参数是已经加载到调用者进程空间中的模块句柄的地址,然后判断线程是否结束。
然后再一次调用CreateRemoteThread函数进行释放模块第4个参数为FreeLibrary,判断进程是否结束。
关闭句柄,进程,卸载结束。
源码下载地址:http://download.csdn.net/detail/qyuewei/7653067
0 0
- API HOOK远程卸载方法
- API HOOK的 IAT方法
- EasyHook远程进程注入并hook api的实现
- API HOOK
- Hook API
- hook api
- hook api
- API HOOK
- Hook API
- API HOOK
- HOOK API
- API HOOK
- API Hook
- API Hook
- API Hook
- API HOOK
- hook api
- API HOOK
- elasticsearch的一些基本概念
- 计算机视觉国外研究机构及大牛
- OCP 1Z0 053 169
- 黑马程序员_JAVA多线程_2
- 造个核弹有多难?
- API HOOK远程卸载方法
- VIM查找替换归纳总结
- poj 2109 Power of Cryptography
- 稀疏表达
- Foundation框架 —— NSArray
- Leetcode_Longest Substring Without Repeating Characters
- Java集合源码学习(4)_List接口
- Saruman's Army
- 设计模式学习笔记——备忘录模式