首页
社区
课程
招聘
PECompact 2.x快速脱壳(我的第一篇脱文)
发表于: 2004-12-5 07:52 4892

PECompact 2.x快速脱壳(我的第一篇脱文)

2004-12-5 07:52
4892
PECompact 2.x快速脱壳(我的第一篇脱文)

【破文作者】vro

【作者邮箱】unpack@265.com

【个人主页】vro.nease.net

【使用工具】od lordPE importREC

【操作系统】Windows XP

--------------------------------------------------------------------------------

【破解声明】初次写脱文,大家多多关照!

[软件名称] 梦幻西游主程序

【保护方式】PECompact 2.x -> Jeremy Collake

--------------------------------------------------------------------------------

【脱壳过程】

p.s此壳我用f8单步大法,老跑飞,就换用esp定律

先载入主程序
来到
0040AD7A >  B8 088F4400     MOV EAX,my.00448F08
0040AD7F    50              PUSH EAX
0040AD80    64:FF35 0000000>PUSH DWORD PTR FS:[0]
0040AD87    64:8925 0000000>MOV DWORD PTR FS:[0],ESP《――看这个
0040AD8E    33C0            XOR EAX,EAX
0040AD90    8908            MOV DWORD PTR DS:[EAX],ECX
0040AD92    50              PUSH EAX
0040AD93    45              INC EBP
一。运用esp定律
1.f8单步运行到0040AD87
看右边窗口的esp值,我这里是0012ffbc
2.好下命令 d 0012ffbc
我们发现下方的转存窗口有所变化出现:
0012FFBC  E0 FF 12 00 08 8F 44 00  ?.?.
0012FFC4  4F 6D 81 7C 38 07 93 7C  Om?8?
在0012FFBC的4个字节下下硬件写入->DWord 断点(也就是在E0 FF 12 00上下)
f9运行程序
二.找oep
运行后断在
00448F3C    51              PUSH ECX<---断在这里
00448F3D    57              PUSH EDI
00448F3E    56              PUSH ESI
00448F3F    52              PUSH EDX
观察一下,不是oep阿,奇怪(这里不懂,望高手指点)
向下翻

00448FB5    8985 23120010   MOV DWORD PTR SS:[EBP+10001223],EAX
00448FBB    8BF0            MOV ESI,EAX
00448FBD    59              POP ECX
00448FBE    5A              POP EDX
00448FBF    03CA            ADD ECX,EDX
00448FC1    68 00800000     PUSH 8000
00448FC6    6A 00           PUSH 0
00448FC8    57              PUSH EDI
00448FC9    FF11            CALL DWORD PTR DS:[ECX]
00448FCB    8BC6            MOV EAX,ESI
00448FCD    5A              POP EDX
00448FCE    5E              POP ESI
00448FCF    5F              POP EDI
00448FD0    59              POP ECX
00448FD1    5B              POP EBX
00448FD2    5D              POP EBP
00448FD3    FFE0            JMP EAX<----关键代码
00448FD5    0000            ADD BYTE PTR DS:[EAX],AL
00448FD7    0000            ADD BYTE PTR DS:[EAX],AL
00448FD9    0000            ADD BYTE PTR DS:[EAX],AL
00448FDB    0000            ADD BYTE PTR DS:[EAX],AL

在00448FD3    FFE0            JMP EAX<----关键代码上下断点
f9运行,断下,在f8单步运行一下,到了---oep
0040AD7A >  6A 60           PUSH 60<---(oep!,接下来会用到)
0040AD7C    68 10704200     PUSH my.00427010
0040AD81    E8 A2230000     CALL my.0040D128

三.dump and修复
拿出lordPE选择文件,full dump
此时不要关闭od,拿出importREC,选取进程,oep填 0040ad7a-400000= ad7a填ad7a
点自动搜索ita,再点获取输入表,发现函数都有效,最后点修复抓取文件,save.....
到此为止,搞定了.
谢谢看完

[课程]Linux pwn 探索篇!

收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 93908
活跃值: (200199)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
2
支持一下!!!
2004-12-5 09:13
0
雪    币: 398
活跃值: (343)
能力值: (RANK:650 )
在线值:
发帖
回帖
粉丝
3
不错:)
有没有跟过它的数据包加密算法?
讨论一下
2004-12-5 09:13
0
雪    币: 266
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
98下脱PECompact 2.x,和upx一样简单
2004-12-5 11:21
0
雪    币: 61
活跃值: (160)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
5
继续努力把:D :D
2004-12-5 12:38
0
雪    币: 257
活跃值: (56)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
6
xiexie
:D :D
target is arm copyman II
2004-12-5 16:56
0
雪    币: 221
活跃值: (70)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
有更简单的,2。X版载入后是哪就在那下内存断点,F9到执行到。:D
2004-12-5 17:11
0
雪    币: 266
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
最初由 q3q3 发布
有更简单的,2。X版载入后是哪就在那下内存断点,F9到执行到。:D


NT系统这样不行
2004-12-5 18:15
0
游客
登录 | 注册 方可回帖
返回
//