首页
社区
课程
招聘
[求助]PECompact 2.x 脱壳问题
发表于: 2007-2-13 10:26 6851

[求助]PECompact 2.x 脱壳问题

2007-2-13 10:26
6851
尝试脱DiE v0.62圣诞版外壳时遇到了问题。

利用DiE扫描后得到如下信息:

DiE:PECompact 2.x
PEiE:PECompact 2.0x Heuristic Mode -> Jeremy Collake

脱壳过程

OllyDBG加载后停在了这里:

00401000 >  B8 FCB95200     MOV EAX,DiE.0052B9FC
00401005    50              PUSH EAX
00401006    64:FF35 0000000>PUSH DWORD PTR FS:[0]
0040100D    64:8925 0000000>MOV DWORD PTR FS:[0],ESP
00401014    33C0            XOR EAX,EAX
00401016    8908            MOV DWORD PTR DS:[EAX],ECX

感觉就是 PECompact 2.x 外壳。

0052BAB4    FF11            CALL DWORD PTR DS:[ECX]
0052BAB6    8BC6            MOV EAX,ESI
0052BAB8    5A              POP EDX
0052BAB9    5E              POP ESI
0052BABA    5F              POP EDI
0052BABB    59              POP ECX
0052BABC    5B              POP EBX
0052BABD    5D              POP EBP
0052BABE  - FFE0            JMP EAX                                  ; DiE.004E0980

跨段跳转,关键跳转?

004E0980    55              PUSH EBP                                 ; 似乎是入口点?
004E0981    8BEC            MOV EBP,ESP
004E0983    83C4 F0         ADD ESP,-10
004E0986    B8 E8064E00     MOV EAX,DiE.004E06E8
004E098B    E8 A45FF2FF     CALL DiE.00406934
004E0990    E8 EFFCFFFF     CALL DiE.004E0684
004E0995    84C0            TEST AL,AL
004E0997    74 1F           JE SHORT DiE.004E09B8
004E0999    68 000A4E00     PUSH DiE.004E0A00                        ; ASCII "DiE 0.60"
004E099E    68 0C0A4E00     PUSH DiE.004E0A0C                        ; ASCII "TApplication"
004E09A3    E8 8869F2FF     CALL DiE.00407330                        ; JMP 到 user32.FindWindowA

用入口点修正为 E0980 Dump?用这个地址DUMP出进行输入表修复,但是仍然无法运行。请指正!

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
PECompact壳,试试脱壳机:http://www.pediy.com/tools/unpacker.htm

如果脱壳成功,但不能运行,那就是有自校验了。
2007-2-13 10:30
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
谢谢回复,我手上碰巧有 RL!dePeCompact 2.x 脱壳机,用脱壳机可以顺利将壳子脱掉。

从脱壳机的日志来看,我找到的入口点是正确的,缺陷在于我的修复方法有误。

用脱掉后的文件在配合 ImportREC_fix v1.6 F重建后我在0llyDBG里脱出来的文件也可以运行了。

请教!
2007-2-13 10:44
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
DiE 某些版本有自校验
修复输入表后可能可以运行但是功能有问题
2007-2-13 11:05
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
5
谢谢版主回复,现在我遇到的问题是:

我能用OllyDBG一点一点的跟到正确的入口点。

但是DUMP出来的文件我不懂得如何去修复,之前修复其他壳子的方法似乎都无效了?

用 ImportREC_fix 追踪找出很多函数,但是有2个是错误,删除后对DUMP出的文件进行重建无效!

而脱壳机一点问题没有,上帝啊!我该怎么办呢?
2007-2-13 11:24
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
6
PECompact的输入表修复没有难度的
建议你多看前人的相关教程吧
2007-2-13 11:36
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
7
谢谢回复。

fly,我找到几篇资料,文章中提到PeCompact会加密IAT表,参照PeCompact 1.X解密IAT的方法,在PeCompact 2.x中做不来。伤心啊!

请版主赐招!
2007-2-13 13:30
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
8
找到解密的代码,直接PATCH
2007-2-13 13:32
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
9
最初由 笨笨雄 发布
找到解密的代码,直接PATCH


我找不到啊!

按照坛子里和下载的精华集里边的方法我没能找出来。因为,帖子中的方法是1.x的,文章中提到的地方我在2.x中一点影子都没出来!
2007-2-13 13:38
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
10
留意内存读写指令,注意数据窗口
会找到的
不过一般还得自己写汇编代码

你懂汇编?

如果不懂,你还是找脱壳机吧
2007-2-13 13:41
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
11
默哀中,似乎这个程序在加壳的时候是选择了PeCompact 2.x的IAT混淆重构插件。哎!

谢谢!版主,我想想别的方法,汇编我还不会,相信通过这次事情,我会学习汇编的!
2007-2-13 14:04
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
12
版主,我修复成功了。

下午,我们部队点名完毕之后我整理整理然后贴个帖子上来!!!终于明白了!!
2007-2-13 14:10
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
13
最初由 ruyi 发布
版主,我修复成功了。

下午,我们部队点名完毕之后我整理整理然后贴个帖子上来!!!终于明白了!!

你们部队还不错,能自由上网。
2007-2-13 14:22
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
14
最初由 kanxue 发布
你们部队还不错,能自由上网。


哪有的事情,我是自己偷着上的。我在部队空余时间现在比较多,不多学点东西回到地方只有被淘汰的份!
2007-2-13 15:04
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
15
不会汇编也能搞定啊?
真IAT加密还是假IAT加密
2007-2-13 16:41
0
雪    币: 191
活跃值: (58)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
16
最初由 笨笨雄 发布
不会汇编也能搞定啊?
真IAT加密还是假IAT加密


版主你一个DiE v0.62看看呢,我感觉是真加密了,而且把GetProcAddess给替换了。上帝保佑!

我是不懂得汇编!顺便我想问问ImpREC是直接在内存中抓的数据,如果IAT被加密的话,ImpREC只要在内存中读就能读取到解密后的IAT呢?

我的DUMP过程在这里,请参考!

http://bbs.pediy.com/showthread.php?s=&threadid=39603
2007-2-13 17:00
0
雪    币: 846
活跃值: (221)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
17
壳是始终得解密,否则一直加密,那么程序也就运行不起来了

IMPREC是直接从内存抓数据,对于一些简单的,没问题

但是对于复杂的就不行了

例如壳使用堆栈中的返回地址解密IAT的地址

IMPREC大概就跟踪不出来了。

我的意思是,当程序调用API时,壳才解密API的地址(每调用一次解密一次),这样IMPREC就很难识别了。
2007-2-13 17:33
0
游客
登录 | 注册 方可回帖
返回
//