[原创] 某多重壳软件的脱壳,优化及破解

某多重壳软件的脱壳,优化及破解

软件名称:财务分析师V6.9 Build 406
软件下载地址:http://www.fam2003.com/soft/FApSetup.rar

PEID查壳,显示:Armadillo 1.xx - 2.xx -> Silicon Realms Toolworks
OD载入,
下he GetModuleHandleA+5断点,目的还是找Magic Jmp。
Shift+F9
第六次看到
0012BF20  |00F9C824  返回到 00F9C824 来自 kernel32.GetModuleHandleA
0012BF24  |00FAD6C8  ASCII "kernel32.dll"
0012BF28  |00FAE670  ASCII "VirtualFree"
第七次看到
0012BC98  |00F8799B  返回到 00F8799B 来自 kernel32.GetModuleHandleA
0012BC9C  |0012BDD4  ASCII "kernel32.dll"
取消硬件断点,返回,来到
00F879B5    FF15 CC80FA00   call    dword ptr [FA80CC]               ; kernel32.LoadLibraryA
00F879BB    8B0D E011FB00   mov     ecx, dword ptr [FB11E0]
00F879C1    89040E          mov     dword ptr [esi+ecx], eax
00F879C4    A1 E011FB00     mov     eax, dword ptr [FB11E0]
00F879C9    393C06          cmp     dword ptr [esi+eax], edi
00F879CC    0F84 AD000000   je      00F87A7F                           //Magic Jmp

00F879CC    0F84 AD000000   je      00F87A7F
改成
00F879CC   /E9 AE000000     jmp     00F87A7F
00F879D1   |90              nop
好了。该找OEP了。
下BP GetCurrentThreadId [ESP]<10000000断点,
Shift+F9,来到这里
7C809737 >  64:A1 18000000  mov     eax, dword ptr fs:[18]
7C80973D    8B40 24         mov     eax, dword ptr [eax+24]
取消断点,返回,单步。
00FA45FD    2BF9            sub     edi, ecx
00FA45FF    FFD7            call    edi                              ; FAp.007F1001
F7单步步入
007F1001    60              pushad
007F1002    E8 03000000     call    007F100A
好像是aspack,用ESP定律
F8,下hr 0012f564
Shift+F9来到
007F13B0   /75 08           jnz     short 007F13BA
007F13B2   |B8 01000000     mov     eax, 1
007F13B7   |C2 0C00         retn    0C
007F13BA   \68 00F07E00     push    007EF000
007F13BF    C3              retn
取消硬件断点
3次F8来到这里
007EF000    9C              pushfd
007EF001    60              pushad
007EF002    E8 02000000     call    007EF009
好像是北斗。继续使用ESP定律
下hr 0012f580
Shift+F9,然后F8,来到这里。
007E2000    9C              pushfd
007E2001    60              pushad
007E2002    E8 02000000     call    007E2009
又是北斗?继续F9,F8,来到
004099B8    68 049C4000     push    00409C04                         ; ASCII "VB5!6&vb6chs.dll"
004099BD    E8 EEFFFFFF     call    004099B0
终于跑到OEP了。
接下来就是DUMP和修复了。
脱下来后出现程序有N多区段,体积也不小。
于是,除
.text
.data
.rsrc
.aspack
.reloc
.mackt
其它区段全部删除,重建PE。程序从5.58 MB变成3.48 MB。

接下来就是破解了。

这个比较简单。用c32asm查找unicode字符串,发现有“未注册”字样。
004BA05B::  68 9C104300              PUSH 43109C                                 \->:  (未注册)
CTRL+G来到004BA05B,发现
004B9F16    66:833D 0C81760>cmp     word ptr [76810C], 0FFFF
004B9F1E    0F85 DB000000   jnz     004B9FFF
只要这个跳不跳就会显示已注册。
在004B9F16下断,F9运行。断下来,可以看到
ds:[0076810C]=0000
对0076810C下硬件断点。CTRL+F2,重新载入。
程序在断在此处
004B9BD1    66:C705 0C817600 0000    mov     word ptr [76810C], 0
004B9BDA    C745 FC 16000000         mov     dword ptr [ebp-4], 16
看来在这里修改就可以了,把004B9BD1改成
004B9BD1    66:C705 0C817600 FFFF    mov     word ptr [76810C], 0FFFF
保存,收工



总结:都不知道VB程序作者加那么多重壳有什么用,作者加壳不累,我打字倒是打得挺辛苦的。
本帖最近评分记录
  • machenglin 大洋 +6 感谢您参与交流,内容加分,零位空间有您更 2008-2-20 14:28

TOP

好难..顶下楼主

TOP

总的来说对于vb程序加壳保护是有心无力啊!相对好脱些!

TOP

脱壳后,除保留以下5个区段外,其它区段全部删除!
.text
.rsrc
.aspack
.reloc
.mackt

LordPE重建PE。程序从5.58 MB变成3.41 MB,区段数也由5个变为4个:
.text
.rsrc
.aspack
.mackt




零位空间论坛温馨提示:您无权查看/下载本附件 Http://www.0wei.com
【0wei.com 一直东奔西走,那知零位全有。】

TOP

引用:
原帖由 KuNgBiM 于 2008-2-24 04:44 发表
脱壳后,除保留以下5个区段外,其它区段全部删除!
.text
.rsrc
.aspack
.reloc
.mackt

LordPE重建PE。程序从5.58 MB变成3.41 MB,区段数也由5个变为4个:
.text
.rsrc
.aspack
.mackt
不错,受教了,谢谢。。。。

TOP

2747201274720127472012747201274720127472012747201274720127472012747201274720127472012747201v
本帖最近评分记录
  • 排雷者 大洋 -5 恶意灌水回复,警告! 2008-3-30 09:14

TOP

很不错,顶一下了哟!!

TOP

厉害啊.要是能做个教程就更好了..

TOP

新手到底应该怎么做呀!!!

TOP

爽,就是我学了一年还没入门,脸红

TOP

财务分析师 V6.9 Build 406

TOP

发新话题