远程线程DLL注入
在其他進程中,創建一個新的線程來LoadLibraryA我們的Dll。
?
/*作者:sysprogram
???編寫日期:2011年4月2日
???博客:http://hi.csdn.net/SysProgram
*/
?
#include <windows.h>
#include <stdio.h>
void main()
{
?//打開進程句柄
?HANDLE hProcess;
?hProcess = OpenProcess(PROCESS_ALL_ACCESS,false,1956);
?if (hProcess == NULL)
?{??
??printf("Open Process error/n");
??return;
?}
?//給進程分配內存
?LPVOID BaseAddress;?
?char *strDllName = {"C://dlltest.dll"};
?int len = strlen(strDllName) + 1;
?BaseAddress = VirtualAllocEx(hProcess,NULL,len,MEM_COMMIT,PAGE_READWRITE);
?
?//寫進程內存
?if (WriteProcessMemory(hProcess,BaseAddress,strDllName,len,NULL) == false)
?{
??printf("Write Memory error/n");
??return;
?}
?//創建遠程線程
?FARPROC ProcAddress;
?HMODULE hModule = GetModuleHandle("Kernel32.dll");
?ProcAddress = GetProcAddress(hModule,"LoadLibraryA");
?HANDLE hThread;
?hThread = CreateRemoteThread(hProcess,
????????NULL,
????????0,
????????(LPTHREAD_START_ROUTINE)ProcAddress,
????????BaseAddress,
????????0,
????????NULL);
?//等待線程完成
?WaitForSingleObject(hThread,INFINITE);
?
?//釋放內存,關閉句柄
?VirtualFreeEx(hProcess,BaseAddress,0,MEM_RELEASE);?
?CloseHandle(hThread);
?CloseHandle(hProcess);
}
總結
- 上一篇: CFileFind 遍历目录与子目录
- 下一篇: 禁止Dockpanel拖动