吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6786|回复: 1
收起左侧

[分享] SoftSentry 3.0简单脱壳

[复制链接]
cshow 发表于 2009-1-8 22:00
SoftSentry 3.0简单脱壳【原创】   

--------------------------------------------------------------------------------
破解作者】 layper
【作者邮箱】 layper2002@yahoo.com.cn
【作者主页】 layper.51.net
【使用工具】 peid,od,lordPE
【破解平台】 Win9x/NT/2000/XP
【软件名称】 cakewalk sonar4.01汉化版
【软件简介】 呵呵,这个软件搞MIDI的朋友就不用说也知道它的江湖地位了
【软件大小】 6.73M
【加壳方式】 SoftSentry 3.0
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】

首先我感谢这位为我们汉化这个软件的作者,这个专业级的软件对于英语不好的朋友来说,入门可以说是很难的,这位
汉化的作者呢汉化了两部分的内容,非常难得。可是主程序没有汉化,而且,还加上了壳,我一不小心直接把他所谓的
汉化主程序覆盖了原来的主程序,呵呵,只能开工脱他的壳了。这个脱文很简单,高手免看了。:)
PEID查壳SoftSentry 3.0 -> 20/20 Software,直接OD载入准备脱壳,经过漫长的等待终于加载成功,
00B81270 >  55              PUSH EBP                 ;OD停在这里
00B81271    8BEC            MOV EBP,ESP
00B81273    83EC 78         SUB ESP,78
00B81276    53              PUSH EBX
00B81277    56              PUSH ESI
00B81278    57              PUSH EDI
00B81279    E9 B0060000     JMP sonarpdr.00B8192E     ;SoftSentry壳的典型入口特征,跳

00B81923    FF15 24C1B800   CALL DWORD PTR DS:[<&KERNEL32.ExitProces>; kernel32.ExitProcess
00B81929    8B45 B4         MOV EAX,DWORD PTR SS:[EBP-4C]
00B8192C    EB 05           JMP SHORT sonarpdr.00B81933
00B8192E  ^ E9 3BFAFFFF     JMP sonarpdr.00B8136E       ;来到这里,往回跳不能F4往下,否则跑飞,跟着跳
00B81933    5F              POP EDI
00B81934    5E              POP ESI
00B81935    5B              POP EBX
00B81936    8BE5            MOV ESP,EBP
00B81938    5D              POP EBP
00B81939    C2 1000         RETN 10

00B8136E    C745 E4 0000000>MOV DWORD PTR SS:[EBP-1C],0          ;来到这里F8走,注意函数变化
00B81375    8D45 B8         LEA EAX,DWORD PTR SS:[EBP-48]
00B81378    50              PUSH EAX
00B81379    FF15 30C1B800   CALL DWORD PTR DS:[<&KERNEL32.GetStartup>; kernel32.GetStartupInfoA
00B8137F    8B4D E4         MOV ECX,DWORD PTR SS:[EBP-1C]
00B81382    83E1 01         AND ECX,1
00B81385    85C9            TEST ECX,ECX
00B81387    74 0E           JE SHORT sonarpdr.00B81397
00B81389    8B55 E8         MOV EDX,DWORD PTR SS:[EBP-18]
00B8138C    81E2 FFFF0000   AND EDX,0FFFF
00B81392    8955 88         MOV DWORD PTR SS:[EBP-78],EDX
00B81395    EB 07           JMP SHORT sonarpdr.00B8139E       ;跳
00B81397    C745 88 0A00000>MOV DWORD PTR SS:[EBP-78],0A
00B8139E    8B45 88         MOV EAX,DWORD PTR SS:[EBP-78]    ;跳到这
00B813A1    8945 14         MOV DWORD PTR SS:[EBP+14],EAX
00B813A4    6A 00           PUSH 0
00B813A6    FF15 40C1B800   CALL DWORD PTR DS:[<&KERNEL32.GetModuleH>; kernel32.GetModuleHandleA
00B813AC    8945 08         MOV DWORD PTR SS:[EBP+8],EAX
00B813AF    C745 0C 0000000>MOV DWORD PTR SS:[EBP+C],0
00B813B6    FF15 1CC1B800   CALL DWORD PTR DS:[<&KERNEL32.GetCommand>; kernel32.GetCommandLineA
00B813BC    8945 10         MOV DWORD PTR SS:[EBP+10],EAX
00B813BF    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]
00B813C2    894D AC         MOV DWORD PTR SS:[EBP-54],ECX
00B813C5    66:C705 10BEB80>MOV WORD PTR DS:[B8BE10],0
00B813CE    66:C705 08BBB80>MOV WORD PTR DS:[B8BB08],0
00B813D7    837D 0C 00      CMP DWORD PTR SS:[EBP+C],0
00B813DB    75 13           JNZ SHORT sonarpdr.00B813F0
00B813DD    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]
00B813E0    E8 EB100000     CALL sonarpdr.00B824D0
00B813E5    85C0            TEST EAX,EAX
00B813E7    75 07           JNZ SHORT sonarpdr.00B813F0       ;跳
00B813E9    33C0            XOR EAX,EAX
00B813EB    E9 43050000     JMP sonarpdr.00B81933
00B813F0    68 04010000     PUSH 104                          ;跳到这
00B813F5    68 7CBCB800     PUSH sonarpdr.00B8BC7C
00B813FA    8B55 08         MOV EDX,DWORD PTR SS:[EBP+8]
00B813FD    52              PUSH EDX
00B813FE    FF15 20C1B800   CALL DWORD PTR DS:[<&KERNEL32.GetModuleF>; kernel32.GetModuleFileNameA
00B81404    85C0            TEST EAX,EAX
00B81406    75 07           JNZ SHORT sonarpdr.00B8140F             ;跳
00B81408    33C0            XOR EAX,EAX
00B8140A    E9 24050000     JMP sonarpdr.00B81933
00B8140F    8B55 14         MOV EDX,DWORD PTR SS:[EBP+14]           ;跳到这里
00B81412    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]
00B81415    E8 16110000     CALL sonarpdr.00B82530
00B8141A    85C0            TEST EAX,EAX
00B8141C    75 1B           JNZ SHORT sonarpdr.00B81439            ;跳
00B8141E    6A 00           PUSH 0
00B81420    68 7CBBB800     PUSH sonarpdr.00B8BB7C
00B81425    68 D882B800     PUSH sonarpdr.00B882D8                   ; ASCII "InitInstance FALSE"
00B8142A    6A 00           PUSH 0
00B8142C    FF15 00C2B800   CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; USER32.MessageBoxA
00B81432    33C0            XOR EAX,EAX
00B81434    E9 FA040000     JMP sonarpdr.00B81933
00B81439    C745 B4 0100000>MOV DWORD PTR SS:[EBP-4C],1             ;跳到这里
00B81440    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]
00B81443    A3 1CBCB800     MOV DWORD PTR DS:[B8BC1C],EAX
00B81448    E8 C32E0000     CALL sonarpdr.00B84310
00B8144D    85C0            TEST EAX,EAX
00B8144F    0F84 28010000   JE sonarpdr.00B8157D                   ;这里跳走,如果这里跳的话就无法跟踪到OEP了,nop它
前面这里并非我有意灌水,想我初学手动脱壳,先注意观察一下代码是有好处的,以后直接下bp GetModuleFileNameA断点就轻松多了,F8继



00B814F4    85C9            TEST ECX,ECX
00B814F6    75 1E           JNZ SHORT sonarpdr.00B81516    ;跳

00B81522    85C9            TEST ECX,ECX
00B81524    75 21           JNZ SHORT sonarpdr.00B81547    ;跳

00B81573    A3 80BDB800     MOV DWORD PTR DS:[B8BD80],EAX
00B81578    E9 1C030000     JMP sonarpdr.00B81899           ;大跳

00B818E9    50              PUSH EAX
00B818EA    68 8882B800     PUSH sonarpdr.00B88288                   ; ASCII "sSENTRYWndClass"
00B818EF    FF15 98C1B800   CALL DWORD PTR DS:[<&USER32.UnregisterCl>; USER32.UnregisterClassA
这两句是特征码,经过这里注意CALL
00B818F5    33C9            XOR ECX,ECX
00B818F7    66:8B0D 9882B80>MOV CX,WORD PTR DS:[B88298]
00B818FE    85C9            TEST ECX,ECX
00B81900    74 0F           JE SHORT sonarpdr.00B81911
00B81902    8B55 AC         MOV EDX,DWORD PTR SS:[EBP-54]
00B81905    52              PUSH EDX
00B81906    8D55 B0         LEA EDX,DWORD PTR SS:[EBP-50]
00B81909    8B4D FC         MOV ECX,DWORD PTR SS:[EBP-4]
00B8190C    E8 2F000000     CALL sonarpdr.00B81940      ;这里是关键CALL,如果F8往下单步则跑飞,跟进

00B81940    A1 80BDB800     MOV EAX,DWORD PTR DS:[B8BD80]    ;跟进到这里
00B81945    53              PUSH EBX
00B81946    55              PUSH EBP
00B81947    56              PUSH ESI
00B81948    8B71 06         MOV ESI,DWORD PTR DS:[ECX+6]
00B8194B    57              PUSH EDI
00B8194C    8BFA            MOV EDI,EDX
00B8194E    8B51 02         MOV EDX,DWORD PTR DS:[ECX+2]
00B81951    33D0            XOR EDX,EAX
00B81953    8BC2            MOV EAX,EDX
00B81955    8951 02         MOV DWORD PTR DS:[ECX+2],EDX   ;不能单步走到这里,否则跑飞   
00B81958    8B51 0A         MOV EDX,DWORD PTR DS:[ECX+A]    ;F2下断,直接下来,继续

00B819AA    FFD6            CALL ESI        ;跟进,到了

00879BD8      55            DB 55                                    ;  CHAR 'U',从模块删除分析,LordPE完整脱壳
00879BD9      8B            DB 8B
00879BDA      EC            DB EC
00879BDB      6A            DB 6A                                    ;  CHAR 'j'


脱壳后用LordPE中的PE编辑器载入脱壳后的文件,修改入口点为00879BD8-00400000=00479BD8,保存脱壳就完成了

--------------------------------------------------------------------------------
【破解总结】

(1)下bp GetModuleFileNameA断点返回用户代码
(2)之后第三个跳转(je)改为nop
(3)经过"sSENTRYWndClass"、UnregisterClassA注意CALL
(4)跟进关键CALL
(5)查看特征码MOV DWORD PTR DS:[ECX+2],EDX,在它下面下断F9直接下去
(6)CALL ESI跟进,脱壳
(7)修正入口点,保存
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

a2213572 发表于 2009-2-10 09:59
下載學習手動脫殼.
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-15 01:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表