问题描述
最近开始了解PE文件的结构,有些疑问,请教下高手!OEP(AddressOfEntryPoint)它是相对虚拟地址?相对于基地址ImageBase而言?它是程序入口地址,它与节表中代码段的那个相对虚拟地址差别在哪,也就是说程序入口地址和代码段地址有什么差别?代码段难道不是程序入口地址?
解决方案
解决方案二:
代码段的起始地址当然不一定是入口啊。举个最简单的例子:如果用汇编写程序,从START标号之后的指令跳转到它之前的指令去执行,并不算一件难事啊。
解决方案三:
可以再打个比方,入口地址有点像C语言的main函数,这里我们暂不考虑程序在main之前需要执行的动作。但不管怎样,main函数的代码不见得必需排布在其它所有函数之前。只是它是入口,其它函数不是而已。其它函数的CODE即使排布在main的前面,执行时也要先跳到main,从main开始执行。
解决方案四:
引用2楼steedhorse的回复:
可以再打个比方,入口地址有点像C语言的main函数,这里我们暂不考虑程序在main之前需要执行的动作。但不管怎样,main函数的代码不见得必需排布在其它所有函数之前。只是它是入口,其它函数不是而已。其它函数的CODE即使排布在main的前面,执行时也要先跳到main,从main开始执行。
已经解释的很清楚了...
时间: 2024-08-31 02:21:27