关于使用CreateRemoteThread()隐藏DLL的一个问题
我在用关于使用CreateRemoteThread()隐藏DLL时,能成功将DLL插入到远程线程中,但我使用CreateRemoteThread()的这个程序的进程能看见,怎么解决呀?
#include"Injector.h"
#include "windows.h"
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpszCmdLine, int nCmdShow)
{
//给DLL文件全路径名赋值
char lpDllFullPathName[MAX_PATH]=TEXT("c:\\aim.dll");
//获得目标进程的进程号pid,这里取为"calcexe"
DWORD dwProcessId =0;
HWND hWnd = FindWindow("SciCalc","计算器");
if(!hWnd) return 0;
GetWindowThreadProcessId(hWnd,&dwProcessId);
LoadLib(dwProcessId,lpDllFullPathName);
return 1;
}
LoadLib是包含在Injector.h中的一个用CreateRemoteThread()向远程空间注入DLL的一个函数
//创建远程线程,并通过远程线程调用用户的DLL文件
hThread= CreateRemoteThread(
hProcess,
NULL,
0,
pfnThreadRtn,
(PVOID)pszLibFileRemote,
0,
NULL
);
if (hThread == NULL)
_leave;
***********************************************
//等待远程线程终止
WaitForSingleObject(hThread,INFINITE);
我调用的DLL 中有个消息循环
while (GetMessage(&msg,NULL,0,0))
{
TranslateMessage(&msg);//进行消息转换
DispatchMessage(&msg);//分派消息到窗口的回调函数处理,(OS调用窗口回调函数进行处理)。
};
所以调试发现当程序运行到*************处就不往下了,这样WinMain()里的LoadLib(dwProcessId,lpDllFullPathName)好象也就没法结束
达不到隐藏效果