能力值:
( LV15,RANK:440 )
|
-
-
26 楼
LZ测下我这个程序,看看是不是模拟出了你的情况。
|
能力值:
( LV5,RANK:70 )
|
-
-
27 楼
哪有那么麻烦…直接EmunProcessModule
|
能力值:
( LV4,RANK:50 )
|
-
-
28 楼
入口地址每次都变的,
你的意思是 win7 装载pe时 imagebaseadr 没用了,win7 随即申请内存 装载?
|
能力值:
( LV4,RANK:50 )
|
-
-
29 楼
hehe,不是win7 作怪,是编译的时候的问题。
,就是 exe 文件 基地址重新定位。
原来 总在xp 下 调试 都加在到400000了,换到 win7下还不适应 了,
有一个 .reloc段, 基底重定位(base relocations )
长知识! 多谢!
总结 一下:
有重定位 的 exe 文件 如果windows不能装载到默认基地址上(imagebase) windows 就随机加载到别的地方, 根据.reloc段内容 重新定位一些数据。xp下好像都能加载到 imagebase地址上,win7 就不好说了,这样的程序 写内存注册机 就稍微麻烦一点,地址总是变动的,但是相对入口地址的变化量是不变的。
|
能力值:
( LV4,RANK:50 )
|
-
-
30 楼
VC2008下编译通过。(循环处未做进程有效判断,如果创建的进程在EnumProcessModules成功返回前意外中止,会死循环,你自己加些处理吧)
#include <Psapi.h>
#pragma comment(lib, "psapi.lib")
PROCESS_INFORMATION stPi;
STARTUPINFO stSi = {0};
stSi.cb = sizeof(stSi);
if (CreateProcess(_T("C:\\WINDOWS\\NOTEPAD.EXE"), 0, 0, 0, 0, NORMAL_PRIORITY_CLASS, 0, 0, &stSi, &stPi) != 0)
{
HMODULE hModule = 0;
while (hModule == 0)
{
EnumProcessModules(stPi.hProcess, &hModule, sizeof(hModule), 0);
}
CloseHandle(stPi.hThread);
CloseHandle(stPi.hProcess);
TCHAR tsTest[100];
wsprintf(tsTest, _T("基地址是:%08X"), hModule);
MessageBox(0, tsTest, 0, MB_ICONEXCLAMATION);
}
|
能力值:
( LV4,RANK:50 )
|
-
-
31 楼
多谢收藏了!
您就是 keymake的作者吧。
前辈多年前就对内存注册机有了深入研究了,佩服。
现在keymake被好多杀软都把他当成病毒了,有的程序加载的时候有时候不是按照基地址加载,找到补丁的每次都变,不容易搞定。
老大啥时候有空升级升级呗,或者把一些技术多教教 我们这些菜鸟
|
能力值:
( LV3,RANK:21 )
|
-
-
32 楼
Mx¢Xgt
额,刚没仔细看你内容,你是想获取自己创建的进程基地址?那获取PEB的方法告诉你:(需要是暂停或者调试方式创建的进程才可以)
&n ...
感谢
|
|
|