微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

基于 PE 部分标题中的 VirutalAddress 属性的偏移计算不正确

如何解决基于 PE 部分标题中的 VirutalAddress 属性的偏移计算不正确

我用平面汇编程序创建了一个简单的 .exe 文件,它实际上什么都不做,只有一条指令

format pe64
use64
section '.text' code executable readable
mov eax,20 

创建后,我在 Ghidra 中打开了可执行文件,它自动将语言检测为 PE -> x86:LE:64:default:windows,这对我来说似乎没问题。

现在第一个地址是 00400000,基于 MSDN 的 PE 格式(认 ImageBase),这看起来也不错。

当我现在转到 VirtualAddress 属性时,该属性应该为我提供入口函数相对于 ImageBase 的位置,Ghidra 显示以下 4 个字节:00 10 00 00

现在,也许我的数学计算不正确,但偏移量计算不应该是:0x400000 + 0x100000 即 0x500000

这个偏移量不在我的图像中。当我转到 Ghidra 中的 EntryPoint(主函数)时,它位于 Offset 0x401000

那么我的数学错了吗?如果我从 VirtualAddress 属性删除 1 字节,它就是那个位置,但它只会是 3 字节,但 PE 格式说该属性是 4 字节。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。