CreateRemoteThread是一个Windows API函数,它能够创建一个在其它进程地址空间中运行的线程;
下面来简单做一下,配合procexp工具;
VC代码如下,我是写到一个菜单单击处理函数中,
void CCrrmthView::OnMenuitem32771()
{
// TODO: Add your command handler code here
HANDLE hProcess = OpenProcess( PROCESS_CREATE_THREAD, FALSE, 16700);
HMODULE kernel32Module = GetModuleHandle(_T("kernel32.dll"));
LPTHREAD_START_ROUTINE loadLibraryFunction = (LPTHREAD_START_ROUTINE)GetProcAddress(kernel32Module, "LoadLibraryW");
HANDLE hRemoteThread = CreateRemoteThread(hProcess, NULL, 0, loadLibraryFunction, NULL, 0, NULL);
}
CreateRemoteThread需要的参数,第一个是进程句柄,这用OpenProcess返回;
第四个参数是线程函数地址,这是在远程进程地址空间中的地址;一共有4句代码,中间两句是网上看的; 别的参数先取NULL;
OpenProcess()第一个参数是打开进程期望获得的权限,这里取PROCESS_CREATE_THREAD,打开后可以创建线程的权限,第三个参数是进程id;