首页
社区
课程
招聘
[求助]问个弱智问题,找到 OEP 用来干嘛?
发表于: 2007-5-26 14:48 8099

[求助]问个弱智问题,找到 OEP 用来干嘛?

2007-5-26 14:48
8099
问个弱智问题,什么叫做从 OEP dump?

一般的说:
脱壳的时候步骤首先就是找 OEP, 然后再 dump 内存,最后重建输入表
从 OEP 开始 dump 就是真实的原程序.

既然是把内存中的代码转存为文件,那就得有初始地址和结束地址
可是我看到的入门帖里面说得都不太清楚,或者我理解能力不够,不管是 lordPE 还是什么 dump 插件,都不要求自己输入 OEP 的地址,我就糊涂了,我们自己找到的 OEP 用来干嘛?

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 201
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
好累呀..那种无助啊...
2007-5-26 17:04
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
找OEP用来脱壳
2007-5-26 17:16
0
雪    币: 5
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sdc
4
加壳程序需要还原自己,当然在内存中了;一旦它运行到OEP的时候,也就是在内存中完全重现没加壳时候的状态了,这时候dump出来就是没加壳的程序了,长度不用你管,程序自己有定义的。
大虾们见笑了,我乱说的。。。。。
2007-5-27 01:08
0
雪    币: 9
活跃值: (142)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
5
解释:OEP是软件的原始入口点
2007-5-27 06:43
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
我的理解是:
无壳程序的内存:
--------------(无壳程序的内存)----
MZ头
程序code
...
--------------(无壳程序的内存)----

有壳程序的内存(解码前):
--------------(有壳程序的内存)----
MZ头(加壳程序改过)
加密后的原程序code(重点)
解码code
...
--------------(有壳程序的内存)----

有壳程序的内存(解码后):
--------------(有壳程序的内存)----
MZ头(加壳程序改过)
原程序code(重点)
解码code
...
--------------(有壳程序的内存)----
程序的"目录"就是"MZ头"
加壳程序在"MZ头"中除了"入口偏移"以外可能会改的是:"输入表""区段表"
这两个 lordPE 会修改好.
所以脱壳后程序的内存:
--------------(脱壳后程序的内存)----
MZ头(脱壳程序改过)
原程序code(重点)
解码code(以没用)
...
--------------(脱壳后程序的内存)----
OEP就是内存中(解码后)"原程序code"的内存地址
代码长度保存在"MZ头"中(自己都晕了! )
2007-5-27 10:52
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
呵呵  学习学习
2007-5-27 11:27
0
雪    币: 215
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
“脱”就一个字
2007-5-27 13:48
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
可能就是在这种声音中长大...........
2007-5-27 15:51
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
OK,其实我明白 OEP 是 original entry point
是程序真正的入口点

可是从用来 dump 的程序和插件没让输入OEP的地址,那我要找它干嘛?
什么时候运行 dump 程序又有什么区别呢? 除非你得把你找到的 OEP 告诉它,让他从那开始 dump
可是lordPE就一个右键->完整dump,就完成了,那我OEP不就白找了?
2007-5-27 17:16
0
雪    币: 2506
活跃值: (1030)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
11
先看一下Lenus的这篇文章:
http://bbs.pediy.com/showthread.php?threadid=17624
另外你dump的程序没修正OEP能运行吗?如果在importRec中采用自动查找输入表时没输入OEP能得到正确的输入表吗?如果是Delphi程序,让程序运行起来再dump,你看看bss段的数据是空的吗?如果是VC的程序,程序运行起来再dump,.data段的数据和从OEP开始dump一样吗?

如果我是你,对这个有疑问,我就把一个程序分别从OEP处dump和让程序运行起来再dump,一比较两个dump后的文件不就明白了吗?遇到什么问题不是先问,先动手做一下,比你去问人而理解要深刻的多。
2007-5-27 18:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
正是由于看不懂,所以才问,有错吗?思考的不够确实是我的错,但我只是想少走一点弯路

"让我把他在oep处dump下来
嘿嘿,dump下来才发现,图表都没有了。"

这是他的帖子里面的原话,那么怎么叫做"在oep处dump下来"?过程没说
既然是教连dump是什么都不知道的人脱壳,这些细节的过程怎么就省略了呢?
我不是怪作者写得不够详细,而是我确实不知道
2007-5-27 19:22
0
雪    币: 5
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
sdc
13
红警,你要注意点了,各个论坛学习的风气不一样,我就曾经被别人严重的批评过,还是语气再客气点吧。
你要让程序运行到OEP,这样dump出来的才是程序“刚刚”脱完衣服的状态,才是我们需要的“脱过”的程序呀!并且在修复资源的时候也要oep,否则无法修复的。
2007-5-28 08:43
0
雪    币: 47147
活跃值: (20465)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
14
一般来说,建议到OEP再Dump,是因为这时原程序还没执行,一些环境变量还没初始化,此时Dump能保持程序主要结构和加壳前一至。
当然如果你熟悉某种壳,并不一定要到OEP才Dump,例如Aspack,外壳将数据解压后,此时内存镜像和加壳前几乎一样,可以直接Dump。
也就是说,建议到OEP处Dump是一个通则,能适用大部分情况。
2007-5-28 09:30
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
多谢各位,我继续努力......
2007-5-29 23:08
0
雪    币: 141
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
OEP是一个很有用的东西,在楼上说了很多.我想起了它的另一个用途.

有不少软件都隐藏了自己的ASCII等关键字符

OD载入后,如果搜索ASCII什么都没有找到(非VB code 程序)

大家就F8单步

跟进一个程序的CALL后 再搜索ASCII

另一种在真正OEP之前添加了些东西,但还不是壳.(强度太小)

(强烈同意11楼的意见:以后遇见这些问题先考虑自己理解,在看别人的理解.)
2007-6-2 21:18
0
雪    币: 9
活跃值: (142)
能力值: ( LV12,RANK:200 )
在线值:
发帖
回帖
粉丝
17
脱壳。找到OEP就等于找到你家的门钥匙
2007-6-3 06:33
0
游客
登录 | 注册 方可回帖
返回
//