首页
社区
课程
招聘
[旧帖] [求助]第一次脱壳中的问题,一个UPX壳 0.00雪花
发表于: 2009-11-17 21:15 1669

[旧帖] [求助]第一次脱壳中的问题,一个UPX壳 0.00雪花

2009-11-17 21:15
1669
软件:网上下的XPLite 1.9
目标:XPLite.exe
工具:OllyICE,PEiD-0.95-20081103,ImpREC 1.7c,lordpe14,W32DasmV10.0,WinHex

第一步,用PEiD查看

UPX 0.89.6 - 1.02 / 1.05 - 2.90 (Delphi) stub -> Markus & Laszlo

第二步,用OllyICE

使用论坛中介绍的ESP方法。
F8两次。
ESP=0012FFA4
下硬件断点。
hr 0x0012FFA4
F9
断在了005CAEF6
005CAEF6   8D4424 80       LEA     EAX, DWORD PTR [ESP-80]
005CAEFA   6A 00               PUSH    0
005CAEFC   39C4                CMP     ESP, EAX
005CAEFE   75 FA               JNZ     SHORT XPlite.005CAEFA
005CAF00   83EC 80           SUB     ESP, -80
005CAF03   E9 BC01F3FF    JMP     XPlite.004FB0C4
删除硬件断点。
F4,直接到005CAF03,F7进去。

004FB0C4    55              PUSH    EBP
004FB0C5    8BEC            MOV     EBP, ESP
004FB0C7    83C4 B0         ADD     ESP, -50
004FB0CA    33C0            XOR     EAX, EAX
004FB0CC    8945 B0         MOV     DWORD PTR [EBP-50], EAX
004FB0CF    8945 C0         MOV     DWORD PTR [EBP-40], EAX
004FB0D2    8945 BC         MOV     DWORD PTR [EBP-44], EAX
004FB0D5    8945 B8         MOV     DWORD PTR [EBP-48], EAX
004FB0D8    8945 B4         MOV     DWORD PTR [EBP-4C], EAX
004FB0DB    8945 E8         MOV     DWORD PTR [EBP-18], EAX
004FB0DE    8945 E4         MOV     DWORD PTR [EBP-1C], EAX
004FB0E1    8945 E0         MOV     DWORD PTR [EBP-20], EAX
004FB0E4    8945 DC         MOV     DWORD PTR [EBP-24], EAX
004FB0E7    8945 EC         MOV     DWORD PTR [EBP-14], EAX
004FB0EA    B8 4CAC4F00     MOV     EAX, XPlite_B.004FAC4C
004FB0EF    E8 E8BEF0FF     CALL    XPlite_B.00406FDC

认为OEP在004FB0C4;

第三步,使用lordpe,找到XPLite.exe,右键Full Dump。(呵呵,这个右键导出俺就google了N久才找到)

第四步,使用ImpREC 1.7c,选择XPLite.exe进程,OEP填写FB0C4。自动查找IAT,然后获取输入表,没有无效的。找到565个。然后修复上步在lordpe中转存的文件。

第五步,运行。呵呵,关机。重启后发现转存的文件不见了。

重复前面四步。

新的第五步,备份转存文件。

第六步,OllyICE载入转存文件。下断点,bp ExitwindowsEx
找到下面这个
004C5921  |. E8 8E20F4FF    CALL <JMP.&user32.ExitWindowsEx>
用W32Dasm反编译转存文件,找到004C5921这个地方,将出了PUSH和POP部分,其余的都用WinHex写入90。

第七步,运行转存文件,呵呵,没有关机了,不过文件被删除了。是不是自校验?

第八步,下断点 bp GetFileSize,game over;

新的第八步,下断点 bp CreateFileA,F8,N久没有收获。

新的第八步,复制一个虚拟机。(我上面的操作都是在虚拟机中进行的)

第九步,两个虚拟机中同时OllyICE,一个载入原程序,一个载入转存的

第十步,找不同,发现在00404306 CALL EAX循环到EBX=6F的下一次时不一样,转存的game over了。重新来,发现是004CB75C这个CALL里面有问题。继续两边同步,我眼睛好累啊。呵呵,这回找到程序获取文件大小了
004C4B60 CALL 004200B4 这个CALL里面,不管它,继续
004C4C73   . BB 14000000    MOV EBX,14
004C4C78   . 8D45 D4        LEA EAX,DWORD PTR SS:[EBP-2C]                        
004C4C7B   . 8D55 BC        LEA EDX,DWORD PTR SS:[EBP-44]
004C4C7E   > 8A08           MOV CL,BYTE PTR DS:[EAX]
004C4C80   . 3A0A           CMP CL,BYTE PTR DS:[EDX]
004C4C82   . 74 06          JE SHORT XPlite_q.004C4C8A       
004C4C84   . C645 FF 01     MOV BYTE PTR SS:[EBP-1],1            
004C4C88   . EB 05          JMP SHORT XPlite_q.004C4C8F
这里不同了,上面这段循环比较中设置了重启标志和跳转,呵呵,NOP。

第十一步,运行,不删除了,哈哈,因为程序出错了。

第十二步,继续OllyICE。F9,发现断在了一个异常,标志为EXCEPTION_NONCONTINUABLE
。google,没什么有用信息。嗯,找谁CALL的,发现上面没有跳转,找PUSH头,再找谁CALL的,发现一条信息,Invalid ZStream operation。还是Google大婶,应该是ZLib的一个解压缩错误。

(补充第十二步)
下面这句话是从网上抄的。
在整个代码中有很多完整性检查的代码,如果发现问题,它会触发一个异常报告问题,并设置 EXCEPTION_NONCONTINUABLE 标志。当进程碰到这个标志时,他将停止运行。
0012FB20   004BC14F  /CALL 到 RaiseException 来自 dump_.004BC14A
0012FB24   0EEDFADE  |ExceptionCode = EEDFADE
0012FB28   00000001  |ExceptionFlags = EXCEPTION_NONCONTINUABLE
0012FB2C   00000007  |nArguments = 7
0012FB30   0012FB34  \pArguments = 0012FB34
0012FB34   004BC14F  返回到 dump_.004BC14F 来自 dump_.004040F4

唉,第十三步,怎么走?是什么原因造成了这个错误。overlay?我算过了,应该没有这个问题吧。

第一次,唉。该做饭了。肚子好饿。

希望各位大大能够帮帮俺这个菜鸟。

XPLite-v1.9.rar 是原文件;
dump_.rar是第十三步之前的文件;

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

上传的附件:
收藏
免费 0
支持
分享
最新回复 (15)
雪    币: 914
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
UPX的壳通常好拖的  偶是新手  觉得单步跟就能跟出来
2009-11-18 07:44
0
雪    币: 111
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
脱壳机不能用吗?
2009-11-18 13:04
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
我觉得脱壳已经完成了。
软件有自校验,我也认为自校验已经去掉了。
现在问题是出错。找不到头绪。
2009-11-18 14:41
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
今天想给认为脱壳的dump文件再加个UPX看看,用1.xx的版本提示已经保护了,用3.04w可以加壳,不过运行一点反应都没有。

不知道谁有UPX 1.xx版本的源代码发给我,我看看里面是怎么确认它是受保护的。UPX的官方网站上面已经只有3点几的源代码了。

C:\Soft\XPLite-v1.9>c:\tools\packers\upx_v1.00 -9 dumped_new_norestart.exe
                     Ultimate Packer for eXecutables
               Copyright (C) 1996, 1997, 1998, 1999, 2000
UPX v1.00        Markus F.X.J. Oberhumer & Laszlo Molnar        Mar 26th 2000

        File size        Ratio      Format      Name
   -------------------   ------   -----------   -----------
upx_v1.00: dumped_new_norestart.exe: CantPackException: file is possibly packed/
protected  (try --force)

Packed 1 file: 0 ok, 1 error.

C:\Soft\XPLite-v1.9>c:\tools\packers\upx_v1.25w -9 dumped_new_norestart.exe
                     Ultimate Packer for eXecutables
   Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004
UPX 1.25w        Markus F.X.J. Oberhumer & Laszlo Molnar        Jun 29th 2004

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
upx_v1.25w: dumped_new_norestart.exe: CantPackException: file is possibly packed
/protected (try --force)

Packed 1 file: 0 ok, 1 error.

C:\Soft\XPLite-v1.9>c:\tools\packers\upx_v3.04w -9 dumped_new_norestart.exe
                       Ultimate Packer for eXecutables
                          Copyright (C) 1996 - 2009
UPX 3.04w       Markus Oberhumer, Laszlo Molnar & John Reiser   Sep 27th 2009

        File size         Ratio      Format      Name
   --------------------   ------   -----------   -----------
   1908736 ->    540672   28.33%    win32/pe     dumped_new_norestart.exe

Packed 1 file.
2009-11-19 15:30
0
雪    币: 14
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
脱UPX的壳用脱壳机啊。。放便快捷!!!
2009-11-19 15:40
0
雪    币: 71
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7

个人认为现在的问题 已经不是脱壳了
2009-11-19 16:13
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
本菜鸟试了一下 ope都没找到。。等着看解。
2009-11-19 16:21
0
雪    币: 120
活跃值: (160)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
试试看,,,,怕。
2009-11-19 18:43
0
雪    币: 27
活跃值: (10)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
10
都是自校验惹的祸
2009-11-19 23:17
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
已经用过看雪工具里面的几个了。
2009-11-20 14:35
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
有一个自校验已经去掉了。现在我觉得不是在自校验上面。感觉好像资源也加壳了还是怎么。
2009-11-20 14:37
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
用ESP方法很快啊。F8两次,下硬件断点,F9,会发现下面有个JMP指令,好像下面4行5行的样子。去掉硬件断点,单步走或者F4到JMP指令,F7进去就是OEP了。呵呵,到目前为止,我认为是正确的OEP。
2009-11-20 14:38
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
不知道有什么好的意见。
昨天用1.0的UPX和原程序比较了一下。发现壳代码有些不同,但是这些不同造成了什么,没有弄清楚。
2009-11-20 14:40
0
雪    币: 34
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
谢谢,OPE我也找到了,现在到了一运行就关机这一步了。继续尝试中。。
2009-11-23 15:54
0
雪    币: 26
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
用软件中带的序列号注册上网认证,发现重启删执行文件,呵呵,和脱壳后的问题一样。
2009-11-26 15:21
0
游客
登录 | 注册 方可回帖
返回
//