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;

04-04 23:29