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

 

你可能感兴趣的:(文件)