首页
社区
课程
招聘
[原创]ASPack 2.12 变形壳之BadCopy Pro v3.73 Build 0106脱壳分析
发表于: 2006-4-16 16:32 4495

[原创]ASPack 2.12 变形壳之BadCopy Pro v3.73 Build 0106脱壳分析

2006-4-16 16:32
4495
【破文标题】ASPack 2.12 变形壳之BadCopy Pro v3.73 Build 0106脱壳分析
【破文作者】lchhome
【作者邮箱】lchhome@163.com
【作者主页】http://lchhome.ys168.com
【破解工具】OD、Imp、LordPE
【破解平台】WinXP
【软件名称】BadCopy Pro v3.73 Build 0106
【软件大小】512KB
【原版下载】
【保护方式】ASPack 2.12 -> Alexey Solodovnikov
【软件简介】  BadCopy Pro 是一个软盘、CD-ROM、CD-R/CD-RW/DVD、ZIP/JAZ/MO 磁盘、数码媒介及其它存储器的数据恢复工具。它可以从已损坏或有缺陷的磁盘中恢复数据。
【破解声明】仅供学习
------------------------------------------------------------------------
一、用Peid侦得它为ASPack 2.12 -> Alexey Solodovnikov壳,
二、用OD载入程序
<ModuleEn>  60              PUSHAD                    停在这里
00BFA002    E8 03000000     CALL BadCopy.00BFA00A
00BFA007  - E9 EB045D45     JMP 461CA4F7

用最简单的办法,就是按Ctrl+F,输入Popad,按Ctrl+L搜索几下,就会到达
00BFA3AF    61              POPAD                          停在这里,按F4,然后F8往下走
00BFA3B0    75 08           JNZ SHORT BadCopy.00BFA3BA
00BFA3B2    B8 01000000     MOV EAX,1
00BFA3B7    C2 0C00         RETN 0C
00BFA3BA    68 00000000     PUSH 0
00BFA3BF    C3              RETN   返回到00BF8000

在这里按Alt+M,在00401000 CODE段下断,按Shift+F9运行,会到00406EE0句,用LordPE脱壳
00406EE0  - FF25 78B2B700   JMP DWORD PTR DS:[B7B278]                ; kernel32.GetModuleHandleA
00406EE6    8BC0            MOV EAX,EAX
00406EE8  - FF25 74B2B700   JMP DWORD PTR DS:[B7B274]                ; kernel32.LocalAlloc
00406EEE    8BC0            MOV EAX,EAX
00406EF0  - FF25 70B2B700   JMP DWORD PTR DS:[B7B270]                ; kernel32.TlsGetValue
00406EF6    8BC0            MOV EAX,EAX
00406EF8  - FF25 6CB2B700   JMP DWORD PTR DS:[B7B26C]                ; kernel32.TlsSetValue
00406EFE    8BC0            MOV EAX,EAX
00406F00    50              PUSH EAX
00406F01    6A 40           PUSH 40
00406F03    E8 E0FFFFFF     CALL BadCopy.00406EE8                    ; JMP to kernel32.LocalAlloc
00406F08    C3              RETN

这里按F8继续走,会到
00406FB5    A3 14775000     MOV DWORD PTR DS:[507714],EAX            ; BadCopy.00400000
00406FBA    A1 14775000     MOV EAX,DWORD PTR DS:[507714]
00406FBF    A3 B4105000     MOV DWORD PTR DS:[5010B4],EAX
00406FC4    33C0            XOR EAX,EAX
00406FC6    A3 B8105000     MOV DWORD PTR DS:[5010B8],EAX
00406FCB    33C0            XOR EAX,EAX
00406FCD    A3 BC105000     MOV DWORD PTR DS:[5010BC],EAX
00406FD2    E8 C1FFFFFF     CALL BadCopy.00406F98
00406FD7    BA B0105000     MOV EDX,BadCopy.005010B0
00406FDC    8BC3            MOV EAX,EBX            EBX=00500638,记住仿OEP有用
00406FDE    E8 65D7FFFF     CALL BadCopy.00404748
00406FE3    5B              POP EBX
00406FE4    C3              RETN 返回到005009A8一般抽11字节的Dephi头部特征码

PUSH EBP
MOV EBP,ESP
ADD ESP,-10   
MOV EAX,xxxxxxxx  这里xxxxxxxx=00500638

这个程序一共抽掉11字节。

00500997    0000            ADD BYTE PTR DS:[EAX],AL      00500998这才是真正的OEP
00500999    0000            ADD BYTE PTR DS:[EAX],AL
0050099B    0000            ADD BYTE PTR DS:[EAX],AL
0050099D    0000            ADD BYTE PTR DS:[EAX],AL
0050099F    0000            ADD BYTE PTR DS:[EAX],AL
005009A1    0000            ADD BYTE PTR DS:[EAX],AL
005009A3    E8 FC65F0FF     CALL BadCopy.00406FA4
005009A8    B0 01           MOV AL,1                         到这里,这是临时OEP,往上走
005009AA    84C0            TEST AL,AL
005009AC    74 59           JE SHORT BadCopy.00500A07

Imp载入程序,OEP填入1000,点IAT自动搜索,在大小填入1000,点获得输入信息,发现很多无效指针,经过观查,发现
只有以下几处为未发现的指针:
rva:0077BC28 ptr:0041656C  它为oleaut32.dll/VariantInit
rva:0077BC70 ptr:0041786F  它为oleaut32.dll/SafeArrayCreate
rva:0077BC7C ptr:00417478  它为oleaut32.dll/SafeArrayCreate
rva;0077BD94 ptr:00417845  它为oleaut32.dll/SafeArrayCreate
rva:0077BDB4 ptr:00417845  它为oleaut32.dll/SafeArrayCreate
其余的都是垃圾指针,全部剪切,最后把OEP修正为00500998,修复文件。
用OD载入修复后的程序,把以下内容补上,
PUSH EBP
MOV EBP,ESP
ADD ESP,-10   
MOV EAX,00500638
保存文件,OK!程序能正常运行。
------------------------------------------------------------------------

------------------------------------------------------------------------
【版权声明】属于lchhome所有,支持正版!

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

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 181
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
嘎嘎没人顶啊
我顶一个
2006-4-17 14:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
我想向你学习,请加我QQ328774920,
2006-4-17 23:13
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
0075D000    90              nop
0075D001 >  60              pushad
0075D002    E8 03000000     call    0075D00A
0075D007  - E9 EB045D45     jmp     45D2D4F7
0075D00C    55              push    ebp
0075D00D    C3              retn
0075D00E    E8 01000000     call    0075D014
0075D013    EB 5D           jmp     short 0075D072
0075D015    BB EDFFFFFF     mov     ebx, -13
0075D01A    03DD            add     ebx, ebp
0075D01C    81EB 00D03500   sub     ebx, 35D000
0075D022    83BD 22040000 0>cmp     dword ptr [ebp+422], 0
0075D029    899D 22040000   mov     [ebp+422], ebx
0075D02F    0F85 65030000   jnz     0075D39A
0075D035    8D85 2E040000   lea     eax, [ebp+42E]
0075D03B    50              push    eax
0075D03C    FF95 4D0F0000   call    [ebp+F4D]
0075D042    8985 26040000   mov     [ebp+426], eax
0075D048    8BF8            mov     edi, eax
0075D04A    8D5D 5E         lea     ebx, [ebp+5E]
0075D04D    53              push    ebx
0075D04E    50              push    eax
0075D04F    FF95 490F0000   call    [ebp+F49]
0075D055    8985 4D050000   mov     [ebp+54D], eax
0075D05B    8D5D 6B         lea     ebx, [ebp+6B]
0075D05E    53              push    ebx
0075D05F    57              push    edi
0075D060    FF95 490F0000   call    [ebp+F49]
我的你看看怎么走怎么破解怎么找OEP
2006-4-19 15:58
0
雪    币: 717
活跃值: (480)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
5
同样可以按Ctrl+F,输入Popad,按Ctrl+L搜索几下,就会到达
2006-4-19 16:16
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
LZ,为什么我照你的方法脱2.12会出现问题呢?按shit+F9会飞到ntdll中止,不知道什么问题!我这个软件好像加了几层壳!急啊,始终找不到解决的方法!
2006-4-29 15:48
0
游客
登录 | 注册 方可回帖
返回
//