首页
社区
课程
招聘
关于脱壳的问题,什么才是真正的OEP?
发表于: 2005-10-11 09:10 6725

关于脱壳的问题,什么才是真正的OEP?

2005-10-11 09:10
6725
一软件用Aspack2.12加壳,我使用OD载入并使用插件DUMP脱壳后的程序不能运行;于是我使用ImportREC v1.6F fix修复,但为什么说我输入的OEP值是无效的呢?我输入的,就是我进入到入口的第一个地址。要怎么样解决呢?

希望高手不吝赐教,感谢为上!

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
支持
分享
最新回复 (9)
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
2
RVA
-基址
2005-10-11 09:18
0
雪    币: 233
活跃值: (130)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
3
可能是delphi的程序, 手动定位一下输入表的位置
2005-10-11 09:18
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
谢谢老大
RVA-基址,如何减呢?这个教程哪儿有?我正在学习那个手动脱壳教程,就是65M那个,我就是根据教程上说的一步一步在做。

另外问问 南蛮妈妈,手动定位一下输入表的位置,哪儿有这方面的教程?只要有一篇经典的就行,感谢。

     

小弟正处于入门的边缘,能得到你们的帮助,我真的非常感谢!
2005-10-11 09:45
0
雪    币: 44229
活跃值: (19960)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
5
最初由 wclzxy 发布
手动定位一下输入表的位置,哪儿有这方面的教程?只要有一篇经典的就行,感谢。

........


手动定位输入表的位置看看这篇:
http://www.pediy.com/tutorial/chap8/Chap8-5-5-1.htm
2005-10-11 09:52
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
3,4年前吧,就来转过老大网页,那个时候没想过学习破解,但自己在学汇编。后来又经常去白菜乐园找软件,都没想过自己学习加密解密,后来由于工作太忙就耽搁了。现在才发觉,那个时候学的汇编对加密解密太重要了。

能得到kanxue老大的回答,非常感谢。对你们这些吃螃蟹的人有了更深的敬仰。

再次感谢kanxue老大。

2005-10-11 10:12
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
不知道对你有没有帮助.按这个方法我脱壳成功,也是delphi程序
接下来就开始脱壳
第一步:用Ollydbg装载要脱壳的软件,装载中会出现个对话框,装载中会出现两个对话框,第一个按‘确定’
第二个按‘否’(我是中文版的,如果英文版的第一个按‘OK’第二个按‘NO’)
第二步:按 Ctrl+B键 或者 右键→搜索→二进制字符 在HEX +03框中输入ASPack壳的各版本通用
特征代码 61 75 08 后按确定程序会停在入口附近。
注意下面一行跳转代码 JNZ SHORT 把光标移到这行代码上,然后设置断点,按F2或者
右键→断点→切换,此时会出来一个对话框选 ‘YES’。这样,断点就设置好了
第三步:按一下F9键运行程序,程序会被暂停住,然后按几次F8键单步跳过(我这里大概按了4次),就会来到入口点(一般入口点的代码特征是:55   PUSH EBP)
第四步:按菜单上面插件→OllyDump→转存调试进程 ,出来对话框按一下
‘获取EIP作为OEP’在按转存,(注意记住OEP的地址,下面还要用到的,本例入
口点的地址是8876C) 。保存文件名为DUMP.EXE。然后就OK了,关掉OllyDbg,
运行保存的文件看看会怎么样?
第五步:我们发现刚刚保存出来的文件不能运行,提示出现错误。
因为通常这个时候软件的IAT表还没有修复,所以就有可能会出错,下面我们就来修复IAT表,以保证程序的完美性。
先运行未脱壳的那个文件,然后再运行Import REConstructor,‘在选择一个使用中的程序’的下拉列表中选择
未脱壳文件的进程,这里是neogeoxp.exe。然后在左下角OEP文本框里填入刚刚记下来
的入口地址8876C后,先按‘IAT 自动搜索’按钮后出来一个对话框,意思是找到IAT表的地址,
点确定,然后在按‘获得输入信息’按钮后‘找到的输入函数’框中显示DLL文件修复的结果,
发现所有的DLL后面都出现‘是’后表示修复成功。成功后按‘修理抓取文件’
按钮选刚刚转寸出来的文件DUMP.EXE后就成功了,文件名为DUMP_.EXE就是修复以后的文件了
现在。脱壳成功!!!

此文也是转载的,但是找不到转载的人了,很感谢他。
另外我的程序55 不是push ebp 而是 db 55,不过还是dump了。成功
2005-10-12 09:38
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢我不浪漫

我马上照你说的做一遍,感谢!
2005-10-12 11:58
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
按照你的说法,我遇到2个问题:

1:-----按一下F9键运行程序,程序会被暂停住
我已经照你说的做了,问题是无论我怎么设置断点(包括硬件断点),程序都会飞,直接运行了,根本不会被暂停住啊?

2:-----在选择一个使用中的程序’的下拉列表中选择未脱壳文件的进程
在Import REConstructor的下拉列表中又如何选择呢?要先运行那个未脱壳的程序吗?。因为选择的程序必须是正在运行的程序。

现在好多的教程,遇到上面这两点就跳过了,根本就没说,也许作者认为菜鸟都懂了,唉!

我试过了,还是不行,仍然提示:
运行时错误"7"
内存溢出
我没有运行程序,用OD直接F8走到入口语句004015B4     68 80174000     push Register.00401780上DUMP,IAT表也修复了。
要进入了:
0041539A     B8 B4150000     mov eax,15B4
0041539F     50              push eax
004153A0     0385 22040000   add eax,dword ptr ss:[ebp+422]
004153A6     59              pop ecx
004153A7     0BC9            or ecx,ecx
004153A9     8985 A8030000   mov dword ptr ss:[ebp+3A8],eax
004153AF     61              popad
004153B0     75 08           jnz short Register.004153BA
004153B2     B8 01000000     mov eax,1
004153B7     C2 0C00         retn 0C
004153BA     68 B4154000     push Register.004015B4
004153BF     C3              retn
-----------------------------------------------------------
进去后:
004015B4     68 80174000     push Register.00401780
004015B9     E8 F0FFFFFF     call Register.004015AE             ; jmp to msvbvm60.ThunRTMain
004015BE     0000            add byte ptr ds:[eax],al
004015C0     0000            add byte ptr ds:[eax],al
004015C2     0000            add byte ptr ds:[eax],al
004015C4     3000            xor byte ptr ds:[eax],al
004015C6     0000            add byte ptr ds:[eax],al
004015C8     58              pop eax

看样子这个是脱不掉了,另外选程序学习好了。真是奇怪了,脱第一个程序就遇到这样的事。
2005-10-12 15:36
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
可能程序不一样吧?查找并断点设置以后,程序由开始执行f9,会出现暂停,应该就是你中断的地方,这时候按f8,我按了3次出现 55 db 55,这里就dump了。
2005-10-13 08:33
0
游客
登录 | 注册 方可回帖
返回
//