在这些日子里,我正在阅读一些PE可执行文件规范。然后我编写了一个简单的C程序,用到了"push ebp, pop ebp"语句,并对其进行了编译。编译成功后,我在可执行文件中打开了PE文件并查看了位置"PE_magic + PE_header_size + PE_OPTHDR_entrypoint",其中PE magic是文件中第一次出现的“PE”字符串,PE_header_size根据PE和COFF规范为24,PE_OPTHDR为16。在那个位置上,我发现地址是0x1000,但我的文件长度仅为0x600。那么我是否在正确的位置,或者入口点(顺便提一下,入口点在0x200)地址设置不正确呢?
我附上了我的文件内容和我的代码的图片。
代码(在项目属性中我取消了添加标准库的选项):
我附上了我的文件内容和我的代码的图片。
代码(在项目属性中我取消了添加标准库的选项):
int main() {
int a = 0;
__asm {
push ebp
pop ebp
}
}