pe文件被装入内存时按64k对齐

看罗云彬的win32汇编,看到搜索kernel32.dll基址问题的时候,有点小问题,书上说:

主程序从堆栈得到的返回地址,将其作为参数传递过来,然后按64k对齐,也就是与0ffff0000h进行and操作,然后按页搜索时,递减10000h!

为什么按64k对齐呢?咋不按内存中一页大小对齐呢?还有为啥要递减10000h呢?纳闷啊。。。于是百度+google,老费劲地找到答案了。。。请看这段话!

“对于加载到程序中的模块,基址都是对齐的,你自己可以用调试器看一下,程序中各个模块包括dll和程序本身,加载进去的基址十六进制末四位都是0,也就是0xxxx0000H,也就是PE头会出现在这些地址附近,所以减去10000加快搜索效率”

相信你已经明白了吧!10000h就是64k!^_^呵呵,是偶太菜喽,不过假如你也和我一样不懂的话,希望能对你有点帮助!O(∩_∩)O

 

 

同样的疑问在看雪找到了答案:转:http://bbs.pediy.com/showthread.php?t=99859

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值