进程注入技术:CreateRemoteThread 和 LoadLibrary技术的步骤 (非dll注入)
来源:互联网 发布:java中的同步方法 编辑:程序博客网 时间:2024/04/30 17:05
1、得到远程进程的HANDLE(OpenProcess)
2、在远程进程中为DLL文件名分配内存(VirtualAllocEx)
3、把DLL的文件名(全路径)写到分配的内存中(WriteProcessMemory)
4、使用CreateRemoteThread和LoadLibrary把你的DLL映射进远程进程
5、等待远程进程结束(WaitForSingleObject),即等待LoadLibrary返回,也就是说当我们的DllMain返回时,远程线程也就立即结束了。
6、取回远程线程的结束码(GetExitCodeThread),即LoadLibrary的返回值---我们DLL加载后的基地址(HMODULE)
7、释放第2步分配的内存(VirtualFreeEx).
8、用CreateRemoteThread和FreeLibrary把DLL从远程进程中卸载。调用时传递第6步取得的HMODULE给FreeLibrary(通过CreateRemoteThread的lpParameter参数)
9、等待线程的结束(WaitSingleObject)
最后,关闭所有的句柄,包括4、8步生成的线程句柄,1生成的远程进程句柄
简略的代码如下:
HANDLE hThread;
char szLibPath[_MAX_PATH];// c:/.../LibSpy.dll
void* pLibRemote; //szLibPath将要复制到的地址
DWORD hLibModule; //已加载的DLL的基地址(HMODULE)
HMODULE hKernel32 = ::GetModuleHandle("Kernel32");
//初始化szLibPath
//......
pLibRemote = ::VirtualAllocEx(hProcess, NULL, sizeof(szLibPath), MEM_COMIT, PAGE_READWRITE );
::WriteProcessMemory(hProecess, pLibRemote, (void*)szLibPath, sizeof(szLibPath), NULL );
//加载LibSpy.dll到远程进程
hThread = ::CreateRemoteThread(hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)::GetProcAddress(hKernel32, "LoadLibraryA", pLibRemote, 0, NULL));
::WaitForSingleObject(hThread, INFINITE);
::GetExitCodeThread(hThread, &hLibModule);
::CloseHandle(hThread);
::VirtualFreeEx( hProcess, pLibRemote, sizeof(szLibPath), MEM_RELEASE);
.......
.......
//卸载
hThread = ::CreateRemoteThread( hProcess, NULL, 0, (LPTHREAD_START_ROUTINE)::GetProcAddress(hKernel32, "FreeLibrary"), (void*)hLibModule, 0, NULL);
::WaitForSingleObject(hTread, INFINITE );
::CloseHandle(hThread);
//待续
- 进程注入技术:CreateRemoteThread 和 LoadLibrary技术的步骤 (非dll注入)
- CreateRemoteThread LoadLibrary 注入DLL
- DLL注入进程技术
- CreateRemoteThread 简单的 例程-初学者必看 (非dll注入)
- 用createRemoteThread远程注入(非DLL插入)
- createremotethread()远程注入dll
- DLL注入之CreateRemoteThread
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- DLL的远程注入技术
- Android 程序调用系统发信息程序
- 更新系统新要求
- OverNet
- 使用正则替换文章屏蔽词,1500个屏蔽词,6KB的文章,替换用时01毫秒
- oracle:pl/sql developer 连接远程oracle数据库(精简版)
- 进程注入技术:CreateRemoteThread 和 LoadLibrary技术的步骤 (非dll注入)
- 【小郝推荐】《从实例走进OPhone世界》
- Oracle增加删除主键
- Research Related English
- 错误:预编译头文件 fatal error C1083: Cannot open precompiled header file: 'Debug
- Chord 算法(协议,原理)难点理解平【暂无内容】
- 视频播放器讨论区 欢迎留言~
- objective-c基本数据类型和限定词
- SQLSERVER 一次性删除所有表数据。