首页
社区
课程
招聘
[原创]字串替换器 1.05 双重壳脱壳分析
发表于: 2006-4-20 14:32 4400

[原创]字串替换器 1.05 双重壳脱壳分析

2006-4-20 14:32
4400
【破文标题】字串替换器 1.05 双重壳脱壳分析
【破文作者】lchhome
【作者邮箱】lchhome@163.com
【作者主页】http://lchhome.ys168.com
【破解工具】OD、Imp、LordPE
【破解平台】WinXP
【软件名称】字串替换器 1.05
【软件大小】88.5KB
【原版下载】http://www.overnimble.com
【保护方式】tElock 0.98b1 -> tE!+PEBundle 2.0b5 - 3.0x -> Jeremy Collake双重壳
【软件简介】本软件是一个本地化工具,主要用于非资源格式的本地化工作,支持的种类包括非资源格式的 C 编译的程序中的 ASCII 字符串和 UniCode 字符串、非资源格式的 Delphi(C++ Builder)编译的程序的字符串、VB 编译的程序的字符串、文本格式的字符串等的提取及替换。同时它还拥有方便的版本升级功能、字典处理功能,使您在翻译新版本时事半功倍。本软件提供英文、简体中文和繁体中文三种语言选择,并且您也可以很方便的添加对其它语言的支持。
【破解声明】仅供学习
------------------------------------------------------------------------
一、用OD载入程序,除了忽略在KERNEL32 中的内存访问异常打勾,其余一个勾都不打
<ModuleEn>^\E9 25E4FFFF     JMP LocPlus.00450000          OD停在这里
00451BDB    0000            ADD BYTE PTR DS:[EAX],AL
00451BDD    00E9            ADD CL,CH

F9运行,出现异常,按Shift+F9继续,直到最后一次异常:
00451813  ^\73 DC           JNB SHORT LocPlus.004517F1    停在这里
00451815    CD 20           INT 20
00451817    64:67:8F06 0000 POP DWORD PTR FS:[0]
0045181D    58              POP EAX

看堆栈区:
0013FF58  /0013FFE0  指针到下一个 SEH 记录
0013FF5C  |004517F7  SE 句柄    这里表示Od的最后一个异常处理出口就是004517F7,会在004517F7处的代码处
继续正常运行。
0013FF60  |00000000
按Ctrl+G,填入004517F7,回车,F2下断点,Shift+F9中断在这里。
004517F7    8B6424 08       MOV ESP,DWORD PTR SS:[ESP+8]     中断后,取消断点,
004517FB    EB 1A           JMP SHORT LocPlus.00451817
004517FD    64:67:FF36 0000 PUSH DWORD PTR FS:[0]
00451803    64:67:8926 0000 MOV DWORD PTR FS:[0],ESP

一路按F8走,会到这里:
0044E000    9C              PUSHFD   这里用LordPE脱壳,然后用PEID查得它又加了PEBundle 2.0b5 - 3.0x壳
0044E001    60              PUSHAD
0044E002    E8 02000000     CALL LocPlus.0044E009
0044E007    33C0            XOR EAX,EAX
0044E009    8BC4            MOV EAX,ESP

在命令行下d 13ffc0(我这里ESP是0013ffc0),下硬件写入Word断点,运行!
0044E1AD    C3              RETN                               中断在这里     
0044E1AE    0000            ADD BYTE PTR DS:[EAX],AL
0044E1B0    40              INC EAX
0044E1B1    0000            ADD BYTE PTR DS:[EAX],AL

按Alt+M,在00401000段下内存断点,F9运行:
004027FC    68 FC594000     PUSH dumped.004059FC
00402801    E8 EEFFFFFF     CALL dumped.004027F4  ; JMP to MSVBVM50.ThunRTMain     停在这里
00402806    0000            ADD BYTE PTR DS:[EAX],AL
00402808    0000            ADD BYTE PTR DS:[EAX],AL
0040280A    0000            ADD BYTE PTR DS:[EAX],AL
0040280C    3000            XOR BYTE PTR DS:[EAX],AL

往上走到004027FC句,这才是真正的OEP,在此新建EIP,用LordPE脱壳。运行,OK!正常,不要修复!

------------------------------------------------------------------------

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

[课程]Linux pwn 探索篇!

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
2
这样是不行的哦~~,PEBundle这个是个捆绑壳,脱了功能就没有了哦~~曾经帮[SLT]的兄弟做这个软件的破解的时候,就发现了这个问题。这个软件SMC及Patch比较好~!
2006-4-20 17:51
0
雪    币: 717
活跃值: (480)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
3
最初由 KuNgBiM 发布
这样是不行的哦~~,PEBundle这个是个捆绑壳,脱了功能就没有了哦~~曾经帮[SLT]的兄弟做这个软件的破解的时候,就发现了这个问题。这个软件SMC及Patch比较好~!

请你指点指点
2006-4-20 18:48
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
4
最初由 lchhome 发布
请你指点指点


其实也没什么好指点的,到最后一层壳末端写入一些Patch代码,让壳去解压它达到破解的目的。

大致流程是这样的:

壳解压完毕,将返回程序OEP附近的代码改为JMP [XXXXXX]
              ↓
申请的空白[XXXXXX]空间写入Patch代码:
mov byte ptr ds:[AAAAAA],BB   // 单字节应用类型
mov word ptr ds:[AAAAAA],BBBB // 双字节应用类型
mov dword ptr ds:[AAAAAA],BBBBBBBB   // 多字节应用类型
              ↓
Patch代码完毕后,再JMP跳回壳解压完毕返回OEP地址
              ↓
           程序运行
2006-4-20 20:33
0
雪    币: 717
活跃值: (480)
能力值: ( LV9,RANK:290 )
在线值:
发帖
回帖
粉丝
5
mov byte ptr ds:[AAAAAA],BB   // 单字节应用类型
mov word ptr ds:[AAAAAA],BBBB // 双字节应用类型
mov dword ptr ds:[AAAAAA],BBBBBBBB   // 多字节应用类

[AAAAAA]、BB、BBBB、BBBBBB从何而知?
2006-4-20 21:19
0
雪    币: 817
活跃值: (1927)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
6
最初由 lchhome 发布
mov byte ptr ds:[AAAAAA],BB // 单字节应用类型
mov word ptr ds:[AAAAAA],BBBB // 双字节应用类型
mov dword ptr ds:[AAAAAA],BBBBBBBB // 多字节应用类


........


AAAAAA // 指待修改的虚拟地址[例:0044E1B1]

BB // 指修改的数据代码[例:要把0044E1B1中的75改为74,那么BB就是74]

BBBB、BBBBBBBB  // 就不介绍了撒,同上
2006-4-21 13:28
0
游客
登录 | 注册 方可回帖
返回
//