首页
社区
课程
招聘
[求助]已知一个进程的句柄,怎么获得这个进程的基地址?
发表于: 2011-6-26 22:08 18154

[求助]已知一个进程的句柄,怎么获得这个进程的基地址?

2011-6-26 22:08
18154
收藏
免费 0
支持
分享
最新回复 (31)
雪    币: 1689
活跃值: (379)
能力值: ( LV15,RANK:440 )
在线值:
发帖
回帖
粉丝
26
LZ测下我这个程序,看看是不是模拟出了你的情况。
上传的附件:
2011-6-28 20:21
0
雪    币: 143
活跃值: (61)
能力值: ( LV5,RANK:70 )
在线值:
发帖
回帖
粉丝
27
哪有那么麻烦…直接EmunProcessModule
2011-6-28 20:35
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
28
入口地址每次都变的,
你的意思是 win7 装载pe时 imagebaseadr 没用了,win7 随即申请内存 装载?
2011-6-28 22:23
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
29
hehe,不是win7 作怪,是编译的时候的问题。
,就是 exe 文件 基地址重新定位。
原来 总在xp 下 调试 都加在到400000了,换到 win7下还不适应 了,
有一个 .reloc段, 基底重定位(base relocations )
长知识! 多谢!

总结 一下:
有重定位 的 exe 文件 如果windows不能装载到默认基地址上(imagebase) windows 就随机加载到别的地方, 根据.reloc段内容 重新定位一些数据。xp下好像都能加载到 imagebase地址上,win7 就不好说了,这样的程序 写内存注册机 就稍微麻烦一点,地址总是变动的,但是相对入口地址的变化量是不变的。
2011-6-29 10:39
0
雪    币: 206
活跃值: (186)
能力值: ( 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);
}
2011-6-29 19:37
0
雪    币: 156
活跃值: (48)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
31
多谢收藏了!
您就是 keymake的作者吧。
前辈多年前就对内存注册机有了深入研究了,佩服。
现在keymake被好多杀软都把他当成病毒了,有的程序加载的时候有时候不是按照基地址加载,找到补丁的每次都变,不容易搞定。
老大啥时候有空升级升级呗,或者把一些技术多教教 我们这些菜鸟
2011-6-30 08:31
0
雪    币: 136
活跃值: (648)
能力值: ( LV3,RANK:21 )
在线值:
发帖
回帖
粉丝
32
Mx¢Xgt 额,刚没仔细看你内容,你是想获取自己创建的进程基地址?那获取PEB的方法告诉你:(需要是暂停或者调试方式创建的进程才可以) &nbsp; &nbsp;&nbsp; &n ...
感谢
2020-6-26 23:46
0
游客
登录 | 注册 方可回帖
返回
//