appleii:不错,有技术含量!
(发表于2005-7-11 21:35:00)
localvar:把ThreadMain的代码给丢了,在这补上:
DWORD ThreadMain(HINSTANCE hInst)
{
TCHAR szModule[256], szText[512], szFormat[256];
LoadString(hInst, IDS_FORMAT, szFormat, sizeof(szFormat) / sizeof(TCHAR));
GetModuleFileName(NULL, szModule, 256);
_stprintf(szText, szFormat, szModule);
MessageBox(NULL, szText, _T("远程线程"), MB_OK|MB_ICONINFORMATION);
return 0;
}
(发表于2005-7-12 13:43:00)
uisoft:不错,但是我觉得你的还是比汇编的要复杂好多,还是用汇编好
(发表于2005-7-20 14:16:00)
localvar:比汇编复杂是因为它处理了很多pe格式相关的内容,而这部分是不用变得,我已经写好了,直接拿过来用就行了。需要改写的只有ThreadMain,我相信写这个函数是非常简单的
(发表于2005-7-22 12:27:00)
laodu:是否会发生内存泄漏?宿主进程中分配的内存,在远程线程结束后,是否可以自动释放,请相告。谢谢!!!!!!!!!!!!!
(发表于2005-11-5 11:50:00)
laodu:在LoadImportFx中利用LoadLibrary产生的库句柄,在远程线程结束前,没有释放。
(发表于2005-11-6 14:35:00)
fuceo:这个程序会发生内存泄露,程序中有两个地方导致宿主进程中分配内存,一个是LPBYTE pInjectPos = (LPBYTE)VirtualAllocEx(hProcess, NULL, IMAGE_SIZE,
MEM_COMMIT, PAGE_EXECUTE_READWRITE);
还有是HANDLE hThread = CreateRemoteThread(hProcess, NULL, 0, pEntry, pParam, 0, NULL);
CloseHandle(hThread); //⑤
当在远程线程结束后,CreateRemoteThread引起的内存是自动释放了,可是VirtualallocEx产生的内存并没有释放,可以从系统监视信息中明显看出
(发表于2006-3-8 17:13:00)
fuceo:哦,本人改了一下,可以这样,
在宿主程序的最后
CloseHandle(hThread); //⑤
前面加上
WaitForSingleObject(hThread,INITIFE);
irtualFree(pInjectPos , 0, MEM_RELEASE);
这样就不会内存泄露了,呵呵,搞定
(发表于2006-3-8 17:30:00)
mickeyhaha:LoadImportF中:
piibn = (PIMAGE_IMPORT_BY_NAME)(pBase + pOrigin->u1.AddressOfData);
报错:cannot add two pointers
麻烦要怎么改啊?
(发表于2006-3-11 13:10:00)
wanyn-al:请问:
HRSRC hRsrc = FindResource(NULL, _T("rtdll"), _T("RT_DLL")); 这句所查找的是什么资源,为什么在上述的程序中的返回值始终是NULL???
(发表于2007-1-14 14:22:00)
ytweiwei:为什么用VS2005编译的DLL,竟然怎么无法工作?
(发表于2007-3-16 12:48:00)
linkyang:我在vs2005编译后,执行后,怎么任务管理器无法打开?!
(发表于2008-6-6 16:10:00)
..........................................................................
--------------------next---------------------