在这些日子里,我正在阅读一些 PE 可执行规范。然后我做了一个小的C程序push ebp, pop ebp
,我编译了它。成功编译后,我在可执行文件中打开了 PE 文件,并查看了PE_magic + PE_header_size + PE_OPTHDR_entrypoint
PE 魔术在文件中第一次出现“PE”字符串的位置,根据 PE 和 COFF 规范,PE_header_size 为 24,PE_OPTHDR 为 16。在那个位置我找到了地址 0x1000,但我的文件长度只有 0x600。那么我是在正确的位置上,还是入口点(顺便说一下在 0x200 上)地址设置不正确?
我包括我的文件内容和我的代码的图像。
代码(在项目属性中我没有选中添加标准库):
int main() {
int a = 0;
__asm {
push ebp
pop ebp
}
}