【发布时间】:2013-03-09 12:40:51
【问题描述】:
在这些日子里,我正在阅读一些 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
}
}
【问题讨论】:
-
给我看你的代码来读取PE,至少到头信息
标签: c windows file assembly exe