能力值:
( LV7,RANK:100 )
|
-
-
2 楼
无句柄的模块是不能使用资源的,很多API都不能用。
老老实实别重载了。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
谢谢,首先感谢下您的回答。我主要是想实现防止游戏检测到自己注入的DLL报非法的问题,所以想通过代码重载的方式,把原DLL模块给卸载了,然后直接调用代码的函数的地址实现显示外挂框的功能。
请问有其他什么方法可以既让游戏检测不到非法的DLL模块吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
换DEPLHI吧,他的窗口可以显示出来
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
DELIPH是不是调用的sdk的API函数绘制的窗口,MFC因为用到了资源,所以才不行,如果不用mfc而是采用win32 的sdk编程自己绘制的窗口是不是就可以显示出来了?
|
能力值:
( LV7,RANK:100 )
|
-
-
6 楼
是的,重载出来的DLL也不能使用try-catch,很麻烦。
不过可以考虑断链等其他方式。
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
// 在DllMain 或者 InitInstance 创建消息线程
CloseHandle(::CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)GameThreadProc, this, 0, &dwThreadID));
// GameThreadProc
DWORD WINAPI GameThreadProc(LPVOID lparam)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState()); // MFC的资源切换
Cdemol *demol = new Cdemol;
demol->Create(IDD_DIALOG1);
demol->ShowWindow(SW_SHOW);
MSG stMsg = {0};
while (TRUE)
{
GetMessage(&stMsg,demol->GetSafeHwnd(),0,0);
TranslateMessage(&stMsg);
DispatchMessage(&stMsg);
}
return 0;
}
|
能力值:
( LV3,RANK:30 )
|
-
-
8 楼
(FARPROC)GetModuleFileNameA,
(FARPROC)GetModuleFileNameW,
(FARPROC)GetModuleHandleA,
(FARPROC)GetModuleHandleW,
(FARPROC)GetProcAddress,
hook自己模块的这些函数,然后让自己的模块,基本就能正常工作了。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
这种方法可行吗?我记得以前试过过不用DoModule的方式,用Show的方法,也是不行的,可能真的是跟内存块不能访问资源有关系吧
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
不能显示窗口,那是否可以执行依赖窗口的代码呢,比如定时器
|
|
|