我自己想写一个关于代码crc32校验的东西, 一个函数从内存读取已经加载到内存的程序的代码端进行校验,一个函数通过读取文件的方式定位到PE文件的代码段就行校验,但是我校验 user32.dll的时候发现一个问题, 文件定位到代码段开始位置是1024, 但是发现好像不是代码段开始的位置,和从加载到内存读取到的不一样,请问这个是什么导致的那? 各位大神有没有知道为什么?真心请教,谢谢啦...
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!
mb_ldtiaylu 加载到内存会拉伸,那个代码段起始RVA对应文件中的1024
不是,可能我没有说清楚, 就是通过文件方式从1024位置开始获取的代码段和加载到内存中从0X401000处获取的代码段不一样,这个好像仅限于系统的DLL,我自己写的DLL就没有这个问题,我也不知道问题出在哪里......【0X401000只是我打个比方的内存地址,具体DLL加载的内存空间是通过计算的出来的】
是因为重定位,你看看user32.dll重定位表第一个表的第一项就是rva为0x1000的地方