能力值:
( LV2,RANK:10 )
|
-
-
2 楼
都没人知道吗?
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
没人知道这样的软件怎么写吗
|
能力值:
( LV6,RANK:90 )
|
-
-
4 楼
求何谓两层附加
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
名字自己取的,也就是说那个DLL要附加两次,最后还是附加在游戏上!
|
能力值:
( LV4,RANK:50 )
|
-
-
6 楼
HWND hWndOBJ = ::FindWindow(NULL, "窗口名字");
if(!hWndOBJ)
{
AfxMessageBox("找不到窗口");
return;
}
GetWindowThreadProcessId(hWndOBJ, &warpid);
if(!warpid)
{
AfxMessageBox("获得pid失败");
return;
}
uProcess.th32ProcessID = warpid;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, uProcess.th32ProcessID);
uProcess.dwSize = sizeof(uProcess);
n = Module32First(hSnapshot, &uProcess);
while(n)
{
if(stricmp(uProcess.szModule, "dll名字") == 0)
{
base = (DWORD)uProcess.modBaseAddr;
sprintf(tmp, "%d", base);
AfxMessageBox(tmp);
break;
}
n = Module32Next(hSnapshot, &uProcess);
}
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
大哥,能不能传个源文件,我对C++还不是太了解
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
你这个好象是挂接DLL函数吧,如何给DLL打内存补丁呢,DLL内存基址是随即的,好比如像上面图片那个基址+偏移,不过他那个不能过壳部分壳检测,最好是个DLL型
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
没有高人知道吗?
|
能力值:
( LV6,RANK:90 )
|
-
-
10 楼
他那个应该就是取得程序中dll的基址
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
dll名字还会变的?????????????
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
HINSTANCE hinstance = LoadLibrary("user32.dll");
hinstance就是加载的DLL的基址
|
能力值:
( LV2,RANK:10 )
|
-
-
13 楼
DLL名字不会变,但是内存基址要变
|
能力值:
( LV2,RANK:10 )
|
-
-
14 楼
请问应该怎么写?
|
能力值:
( LV3,RANK:20 )
|
-
-
15 楼
看LOADLIBRARY源码就可以了
|
能力值:
( LV2,RANK:10 )
|
-
-
16 楼
不太清楚 应该传个文件试试
|
能力值:
( LV2,RANK:10 )
|
-
-
17 楼
请问在哪看?
|
能力值:
( LV2,RANK:10 )
|
-
-
18 楼
是不是不会用这个工具?
|
能力值:
( LV2,RANK:10 )
|
-
-
19 楼
没见过,大哥能不能传个上来
|
能力值:
( LV2,RANK:10 )
|
-
-
20 楼
不懂帮顶!还在初级阶段呵呵
|
能力值:
(RANK:300 )
|
-
-
21 楼
LoadLibrary函数加载Dll 返回的句柄就是DLL的基地址。
可以通过PE头结构对DLL进行分析。
|
能力值:
( LV2,RANK:10 )
|
-
-
22 楼
主要是不知道怎么写,斑竹能不能传个上来
|
能力值:
( LV2,RANK:10 )
|
-
-
23 楼
|
能力值:
( LV2,RANK:10 )
|
-
-
24 楼
有没有懂的啊,谁传个上来
|
能力值:
( LV9,RANK:610 )
|
-
-
25 楼
从我做的小工具里面摘出一段:
MODULEENTRY32 TModuleEntry32;
HANDLE hSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPMODULE, dwID);
if (!Module32First(hSnapshot, &TModuleEntry32))
{
return ;
}
do
{
DWORD dwImageSize = 0;
DWORD dwImageBase = 0;
dwImageBase = (DWORD)TModuleEntry32.modBaseAddr;
dwImageSize = TModuleEntry32.modBaseSize;
}while(Module32Next(hSnapshot, &TModuleEntry32));
得到进程ID为 dwID所有加载的Dll的基址和镜像大小
注意:这个基址和Dll的PE头里面的基址不一样,PE头里面的定死的 而这个基址的会变化的,虽然大多数情况下这两个值是一样的,Good Luck!
|
|
|