首页
论坛
课程
招聘
[调试逆向] [系统底层] [软件保护] [原创][原创]关于OEP和EP
2021-4-8 17:54 1343

[调试逆向] [系统底层] [软件保护] [原创][原创]关于OEP和EP

2021-4-8 17:54
1343

今天学习IDA的时候,视频中提到了EP这个词,之前学习的时候我还特意记了一下OEPEP的区别以及两者之间的关系(差值很有规律),但是今天遇到了有突然想不起来了。问了很多朋友都没有get到我心中的的那个点,百度上的答案也是五花八门,解释看起来比较专业的是下边两个:

 

a、EPEntryPoint简称,就是入口点。如果程序加壳后,程序会有个入口点,就是EntryPoint。但加壳前的程序入口点就称为OEPOriginal EntryPoint),

 

b、如果源程序被加了壳或者入口函数被劫持,则会产生OEP

 

其实上边两个回答都不对,一个200+KB的PE解析工具能有这么玄乎?还能分析出来程序有没有被改动过?我又老老实实的找了一下笔记,原来之前海哥讲过,下边我就讲一下OEPEP

1.OEPEP的由来

查看PE结构,我经常要用到PE解析工具PETool,已打开记事本程序为例,打开之后是这样PE工具界面1

 

上边的箭头指向的就是EPOEP

2.OEPEP的的区别

EPIMAGE_OPTIONAL_HEADER32结构体中的AddressOfEntryPoint属性,表示在内存中,程序入口函数相对于imagebase的偏移(内存偏移)。见下图:

 

PE工具界面2

 

那什么是OEPOEP是在文件中,程序入口函数相对于imagebase的偏移(文件偏移偏移)。

 

以第一个图为例:

 

EP0x0000739d(已经不用验证了,看上边第2个图,PETool已经给出来了)

 

OEP0x0000679d

 

下边来验证我上边的解释:OEP是在文件中,程序入口函数相对于imagebase的偏移(文件偏移偏移),下图为笔记本程序的节信息:

 

PE工具界面3

 

0x0000739d>0x00001000并且0x0000739d<0x00009000,这就表明入口点在第一个节中;

 

下边计算在内存中,入口点相对于第一个节起始点的偏移;

 

RVA=0x0000739d-0x00001000

 

既:RVA=0x0000639d

 

因为入口点在内存中相对于第一个节起点的偏移==入口点在文件中相对于第一个节起点的偏移,因此入口点在文件中的偏移=RVA+第一个点在文件中的偏移,计算如下:

 

RVA+0x00000400既0x0000639d+0x00000400

 

结果:入口点在文件中的偏移=0x0000679d,结果就是第一张图上的OEP的值!

3.为什么有的程序OEPEP相等,有的不相等?

这涉及到文件对齐值和内存对齐值是否一致,见下图:

 

PE工具界面4

 

可选PE头(IMAGE_OPTIONAL_HEADER)有两个参数:SectionAlignmentFileAlignmen,当两值相等,则PE结构中每个节的起始偏移相同,导致OEP==EP;当两值不相等(通常都是文件对齐<内存对齐),导致OEP!=EP

 

第一次发帖,如有误还请看雪大佬指正,我是菜鸟初学。


[看雪官方培训] Unicorn Trace还原Ollvm算法!《安卓高级研修班》2021年秋季班火热招生!!

收藏
点赞2
打赏
分享
最新回复 (6)
雪    币: 2072
活跃值: 活跃值 (1492)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
平头猿小哥 活跃值 2021-4-8 18:13
2
0

老哥,你说错了呀。OEP就是原始入口点,这个是相对于EP来说的(如果EP被更改了)。只不过在PETool这个工具中,它的OEP(RAW),指的是EP的RAW,就是入口点在文件中的位置;

雪    币: 2144
活跃值: 活跃值 (639)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
htpidk 活跃值 2021-4-8 18:39
3
0
不是你这样理解的
雪    币: 257
活跃值: 活跃值 (336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
自由狼 活跃值 2021-4-8 18:39
4
0
这个我当时用这个软件也有这个疑问来,继续关注,可能是一些约定俗称不一致导致的
雪    币: 257
活跃值: 活跃值 (336)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
自由狼 活跃值 2021-4-8 18:39
5
0
这个我当时用这个软件也有这个疑问来,继续关注,可能是一些约定俗称不一致导致的
雪    币: 11581
活跃值: 活跃值 (2650)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
ninebell 活跃值 2021-4-8 20:31
6
0
oep等价ep
不信看x64dbg.chm
雪    币: 28
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
夺命黑裤衩 活跃值 2021-4-9 08:20
7
0
这里说的OEP特指的是PETool里的OEP,我图1已经指出来了。不排除在OEP在其他地方有别的含义。EP是入口点,OEP是原始入口点,因为相对于内存中的入口点,本地文件中的入口点就是它的"源"对吧.....
游客
登录 | 注册 方可回帖
返回