首页
社区
课程
招聘
脱ASPack + UPX-Scrambler 高手免了。
发表于: 2005-3-25 00:35 5877

脱ASPack + UPX-Scrambler 高手免了。

2005-3-25 00:35
5877
 今天碰到一个两层壳的软件:3D组号大师1.9B2 Build20050203,用ASPack 2.12 + UPX-Scrambler RC1.x加的壳。

 用PEID查看,是ASPack 2.12 -> Alexey Solodovnikov加的壳,呵呵易事,用AspackDie脱,运行后自动退出,看来还有自校验,再用PEID查看,还有UPX-Scrambler RC1.x -> ┫nT?L 的壳,那就先脱了再说。用脚本在401000处脱后,不能运行,用IREC修复:OEP 1000,RVA 1F8308,Size 1E8,却不能运行,PEID查看,是BC++5编的,没壳了,可能修复不完全吧。

 再看看IREC,
Current imports:
1 (decimal:1) valid module(s) (added: +1 (decimal:+1))
78 (decimal:120) imported function(s). (added: +78 (decimal:+120))

就只得kernel32.dll FThunk:001F830C NbFunc:78 (decimal:120)valid:YES,

看来就这里,在OD里看到很多的输入函数,修复漏了,呵呵,试试土办法,在IREC里加大Size到1000看看如何,结果:

Current imports:
A (decimal:10) valid module(s) (added: +9 (decimal:+9))
1C0 (decimal:448) imported function(s). (added: +148 (decimal:+328))

最后修复的一个是oleaut32.dll FThunk:001F8F58 NbFunc:7 (decimal:7) valid:YES,

在Size里再C50,GET后再FIX脱壳后的文件,OK,PEID查没壳了,OD载入没说有壳,不过程序运行后会退出,不知是脱不干净还是修复不完全,还是有自校检?请各位看看。

不知什么原因,试了几次,用OD的插件“OllyDump 2.21.108”Dump出来的文件修复后运行却出错,而用OD插件“OllyDbg PE Dumper 3.00”或PE Tools Dump出来的可以修复正常运行。
呵呵,大家注意下,用这个Dump后修复运行不了的可试试其他工具来Dump,或许成功。。。

附件上传不了,有兴趣的可到此下载:http://ocn.e5v.com/noncgi/2003/affix/050325002722__3.rar
或到QQ群:2005928的“共享”下载un3D组号大师.rar,不用验证。

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 454
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
呵呵,经过一翻周折,终于手脱成功了。
程序校验文件名(.EXE后面的没校验),大小没校验。程序运行中会生成3dpro.exe及3D_LOG.ini,不知有何用,正在努力中。。。

过程:
OD载入未脱壳程序,
0068C001 >  60                     pushad*************************停在这里,按F8跟下去
0068C002    E8 03000000            call BjQx3D.0068C00A***********F7跟进
0068C007  - E9 EB045D45            jmp 45C5C4F7
0068C00C    55                     push ebp
0068C00D    C3                     retn
0068C00E    E8 01000000            call BjQx3D.0068C014
0068C013    EB 5D                  jmp short BjQx3D.0068C072
0068C015    BB EDFFFFFF            mov ebx,-13
0068C01A    03DD                   add ebx,ebp
0068C01C    81EB 00C02800          sub ebx,28C000                           ; UNICODE ";0"

F7进入后,来到这里
0068C00A    5D                     pop ebp************************停在这里,按F8跟下去
0068C00B    45                     inc ebp
0068C00C    55                     push ebp
0068C00D    C3                     retn***************************返回到 0068C008
0068C00E    E8 01000000            call BjQx3D.0068C014
0068C013    EB 5D                  jmp short BjQx3D.0068C072
0068C015    BB EDFFFFFF            mov ebx,-13
0068C01A    03DD                   add ebx,ebp
0068C01C    81EB 00C02800          sub ebx,28C000                           ; UNICODE ";0"

到这里
0068C008   /EB 04                  jmp short BjQx3D.0068C00E
0068C00A   |5D                     pop ebp
0068C00B   |45                     inc ebp
0068C00C   |55                     push ebp
0068C00D   |C3                     retn
0068C00E   \E8 01000000            call BjQx3D.0068C014***********F7跟进
0068C013    EB 5D                  jmp short BjQx3D.0068C072
0068C015    BB EDFFFFFF            mov ebx,-13
0068C01A    03DD                   add ebx,ebp
0068C01C    81EB 00C02800          sub ebx,28C000                           ; UNICODE ";0"

到这里
0068C014    5D                     pop ebp                                  ; BjQx3D.0068C013
0068C015    BB EDFFFFFF            mov ebx,-13
0068C01A    03DD                   add ebx,ebp
0068C01C    81EB 00C02800          sub ebx,28C000                           ; UNICODE ";0"
0068C022    83BD 22040000 00       cmp dword ptr ss:[ebp+422],0
0068C029    899D 22040000          mov dword ptr ss:[ebp+422],ebx
0068C02F    0F85 65030000          jnz BjQx3D.0068C39A
0068C035    8D85 2E040000          lea eax,dword ptr ss:[ebp+42E]
0068C03B    50                     push eax

接着就是N个F8及F4,最后来到0068C3AF,会看到0068C3BA的变化,0068985F的地址可能是OEP。可以用d 401000在转存窗看文件头的解压过程。

0068C395  ^\E9 EBFEFFFF            jmp BjQx3D.0068C285
0068C39A    B8 5F982800            mov eax,28985F
0068C39F    50                     push eax
0068C3A0    0385 22040000          add eax,dword ptr ss:[ebp+422]
0068C3A6    59                     pop ecx
0068C3A7    0BC9                   or ecx,ecx
0068C3A9    8985 A8030000          mov dword ptr ss:[ebp+3A8],eax
0068C3AF    61                     popad********************************到这里停下,注意下面的push
0068C3B0    75 08                  jnz short BjQx3D.0068C3BA
0068C3B2    B8 01000000            mov eax,1
0068C3B7    C2 0C00                retn 0C
0068C3BA    68 5F986800            push BjQx3D.0068985F*****************注意地址
0068C3BF    C3                     retn*********************************返回到上面的地址。

返回到这
0068985F    90                     nop******************可能是OEP,试DUMP后,PEID查是UPX-Scrambler RC1.x -> ┫nT?L,继续F8跟下去
00689860    61                     popad
00689861    BE 00E05F00            mov esi,BjQx3D.005FE000
00689866    8DBE 0030E0FF          lea edi,dword ptr ds:[esi+FFE03000]
0068986C    57                     push edi******************************注意EDI的值,00401000,按F8及F4跟下去
0068986D    83CD FF                or ebp,FFFFFFFF
00689870    EB 10                  jmp short BjQx3D.00689882
00689872    EB 00                  jmp short BjQx3D.00689874
00689874  ^ EB EA                  jmp short BjQx3D.00689860
00689876  ^ EB E8                  jmp short BjQx3D.00689860
00689878    8A06                   mov al,byte ptr ds:[esi]
0068987A    46                     inc esi
0068987B    8807                   mov byte ptr ds:[edi],al
0068987D    47                     inc edi

经地漫长的F8+F4后,来到
006899A2  ^\74 DC                  je short BjQx3D.00689980**************来到这后,向下看,找到下面的pushad或popad就快成功了
006899A4    89F9                   mov ecx,edi
006899A6    79 07                  jns short BjQx3D.006899AF
006899A8    0FB707                 movzx eax,word ptr ds:[edi]
006899AB    47                     inc edi
006899AC    50                     push eax
006899AD    47                     inc edi
006899AE    B9 5748F2AE            mov ecx,AEF24857
006899B3    55                     push ebp
006899B4    FF96 08A42800          call dword ptr ds:[esi+28A408]
006899BA    09C0                   or eax,eax
006899BC    74 07                  je short BjQx3D.006899C5
006899BE    8903                   mov dword ptr ds:[ebx],eax
006899C0    83C3 04                add ebx,4
006899C3  ^ EB D8                  jmp short BjQx3D.0068999D
006899C5    FF96 0CA42800          call dword ptr ds:[esi+28A40C]
006899CB    60                     pushad**************************UPX壳特征pushad jmp xxxxxxxx 或popad jmp xxxxxxxx,代码解压完才看到,否则就是add byte ptr ds:[eax],al之类的。
006899CC  - E9 2F76D7FF            jmp BjQx3D.00401000*************跳到真正的OEP,F8跟
006899D1    0000                   add byte ptr ds:[eax],al
006899D3    00EC                   add ah,ch
006899D5    99                     cdq
006899D6    68 00A09A68            push 689AA000
006899DB    0038                   add byte ptr ds:[eax],bh
006899DD    16                     push ss
006899DE    5F                     pop edi
006899DF    0000                   add byte ptr ds:[eax],al
006899E1    0000                   add byte ptr ds:[eax],al
006899E3    0000                   add byte ptr ds:[eax],al
006899E5    0000                   add byte ptr ds:[eax],al
006899E7    0000                   add byte ptr ds:[eax],al

呵呵,终于见到光明了,
00401000   /EB 10                  jmp short BjQx3D.00401012***************OEP,DUMP吧。
00401002   |66:623A                bound di,dword ptr ds:[edx]
00401005   |43                     inc ebx
00401006   |2B2B                   sub ebp,dword ptr ds:[ebx]
00401008   |48                     dec eax
00401009   |4F                     dec edi
0040100A   |4F                     dec edi
0040100B   |4B                     dec ebx
0040100C   |90                     nop
0040100D  -|E9 DC145A00            jmp 009A24EE
00401012   \A1 CF145A00            mov eax,dword ptr ds:[5A14CF]
00401017    C1E0 02                shl eax,2
0040101A    A3 D3145A00            mov dword ptr ds:[5A14D3],eax
0040101F    52                     push edx
00401020    6A 00                  push 0

 DUMP后的文件不能运行,要用IREC修复,填上OEP=1000,按IAT Autosearch后,RVA变为001F8308,Size为000001E8,若按这样获得的输入表是不完全的,这样FIX出来的文件不能运行!改Size=1000,这样获得完整的输入表了。
奇怪的是我用OD插件“OllyDump 2.21.108”DUMP下来的修复后,有2.56M,可以正常运行,但用OD插件“OllyDbg PE Dumper 3.00”的DUMP下来的还有壳?用不了。
另外要注意的是,用“OllyDump 2.21.108”DUMP时,记得将“重建输入表”前的勾取消,否则修复后不能运行的。
by cnnets 2005.3.25 (菜鸟定文章,谢谢你看完)
最终脱壳文件:http://ocn.e5v.com/noncgi/2003/affix/050325044517__3_bjqx.rar
2005-3-25 04:08
0
雪    币: 207
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
这样还没弄好吧!可以运行,但在运行中程序有自校验的吧!
2005-5-12 08:54
0
雪    币: 427
活跃值: (412)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
慢慢搞吧,呵呵。
2005-5-12 14:14
0
游客
登录 | 注册 方可回帖
返回
//