首页
社区
课程
招聘
[旧帖] 手脱SoftSentry+自校验+时间限制=在菜鸟的破解路上。。。。 0.00雪花
发表于: 2008-4-11 16:12 4831

[旧帖] 手脱SoftSentry+自校验+时间限制=在菜鸟的破解路上。。。。 0.00雪花

2008-4-11 16:12
4831
手脱SoftSentry+附加数据处理+时间限制=在菜鸟的破解路上。。。。
                  
                  
  没有“softworm”《七年一剑》中滚滚长江东逝水的气概!
  没有“ riijj ”发生那么多,某天的故事!
  没有赶上 “北极星”的末班车!
  不知道《失去的东西永不再来》中“ Ivanov ”失去了什么?
。。。。。。。。。。。。。。。。。。。。。。。。。。。。

   但是我依然踏上了Cracker这条“不归路”,慢慢走来,正如我父亲所说:“我看不到任何结果。”。

   看雪论坛精华1-9我看了!
   密界精华我读了!
   加密与解密破解教程“我吃了”!

    但依然不随便在看雪上发贴,因为我实在太菜,因为我没有一个属于自己的成绩,对我来说SoftSentry2.11依然是未知壳。
   
    我找一个“大师”求脱KitchenDraw4.5.exe,想得到他的一些教程,哪怕是文字的教程都可以,我
情愿付1000 RMB,但是得到的是这么一句话“你很垃圾。。。。。”, 没错他曾发文说“在论坛上,谁都没有义务去帮助你,你同样没有权利去要求别人帮助你”。

    于是这个耗费如下时间和精力的学习开始了!
   
    1.学习OD
    2.了解常用的壳以及脱壳的方法
    3.猛下教程,过成大概是这样的:
      从老家骑摩托到5里以外的网吧→→→一个小时下教程→→→回家看→→→继续下(我的卡只有1G)→→→继续看
    4.了解破解的方法
    5.用学到的一点知识练习
   
    这个过程耗费我800 RMB加若干电费和长达4个月的时间!结果是我依然“垃圾”,但是当我把SoftSentry2.11这个壳脱了,把KitchenDraw4.5.exe这个软件破解了,于是大家就看到了这么点“破”
文,同时也安慰下自己:大师2006年的东西竟然2004年看雪就发表了!呼呼呼呼~~~!学习需要过程呀!

               手脱SoftSentry
  
  破解下载:  b1aK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3E0A6N6r3y4Z5k6h3&6V1M7X3q4%4i4K6u0W2j5$3!0E0i4K6u0r3
  软件大小:  48.5 MB  
  软件简介:  国外流行的厨房设计软件,搞厨房设计的10个有9个在使用!   
            
【作者声明】:由于我是做厨房设计的经常使用这个软件做效果图,只是开了分店,不想要再掏2800买他们的注册码了!失误之处敬请诸位大侠赐教,语音视频教程需要请联系!!
            
【调试环境】:WinXP、OllyDBD、PEiD、LordPE、ImportREC、WinHex

【脱壳过程】:
  

  
  这个是软件的截图,里面有KitchenDraw4.5.exe和KitchenDraw45.exe,一个用
SoftSentry2.11另外一个用SoftSentry3.0,其实他们的原理都是差不多的!需要说明的是从网
上下载的软件没有这两个东西,只有kd.EXE这个文件,在帮助下没有注册的窗口,我拿到的这个
是韩国大信公司中国分公司汉化加壳后的软件,开启后有如下注册框:
                             
                                

                                
相关代码如下:

0040BE90 > $  55            PUSH EBP          //KitchenD.<模块入口点>,OD载入后停在这里
0040BE91   .  8BEC          MOV EBP,ESP
0040BE93   .  83EC 64       SUB ESP,64
0040BE96   .  53            PUSH EBX
0040BE97   .  56            PUSH ESI
0040BE98   .  57            PUSH EDI
0040BE99   .  E9 50000000   JMP KitchenD.0040BEEE

单步走到这里:
0040C052        > \E8 19060000   CALL KitchenD.0040C670
0040C057        >  833D 70114100>CMP DWORD PTR DS:[411170],0
0040C05E        .  0F84 16000000 JE KitchenD.0040C07A
0040C064        .  8B4D B0       MOV ECX,DWORD PTR SS:[EBP-50]
0040C067        .  E8 442C0000   CALL KitchenD.0040ECB0 //出现注册框,选择CANCEL,不然飞了!
0040C06C        .  8945 B0       MOV DWORD PTR SS:[EBP-50],EAX
0040C06F        .  8B4D B0       MOV ECX,DWORD PTR SS:[EBP-50]
0040C072        .  E8 F92C0000   CALL KitchenD.0040ED70
0040C077        .  8945 B0       MOV DWORD PTR SS:[EBP-50],EAX
0040C07A        >  837D B0 01    CMP DWORD PTR SS:[EBP-50],1

单步走到这里:
0040C2D4        . /0F85 3E000000 JNZ KitchenD.0040C318 //这个跳NOP掉,不然飞了!
0040C2DA        . |33C0          XOR EAX,EAX
0040C2DC        . |66:A1 B811410>MOV AX,WORD PTR DS:[4111B8]
0040C2E2        . |85C0          TEST EAX,EAX
0040C2E4        . |0F84 2E000000 JE KitchenD.0040C318  //这个跳NOP掉,不然飞了!
0040C2EA        . |8B45 08       MOV EAX,DWORD PTR SS:[EBP+8]
0040C2ED        . |50            PUSH EAX                                 ; /hInst
0040C2EE        . |68 A8114100   PUSH KitchenD.004111A8                   ; |Class =
0040C2F3        . |FF15 18544100 CALL DWORD PTR DS:[<&USER32.UnregisterCl>; \UnregisterClassA
0040C2F9        . |33C0          XOR EAX,EAX
0040C2FB        . |66:A1 BC11410>MOV AX,WORD PTR DS:[4111BC]
0040C301        . |85C0          TEST EAX,EAX
0040C303        . |0F84 0F000000 JE KitchenD.0040C318
0040C309        . |8B45 B4       MOV EAX,DWORD PTR SS:[EBP-4C]
0040C30C        . |50            PUSH EAX
0040C30D        . |8D55 AC       LEA EDX,DWORD PTR SS:[EBP-54]
0040C310        . |8B4D B8       MOV ECX,DWORD PTR SS:[EBP-48]
0040C313        . |E8 38000000   CALL KitchenD.0040C350  //这个CALL进去,不然不能到OEP!
0040C318        > \837D AC 00    CMP DWORD PTR SS:[EBP-54],0

上面的NOP掉的代码走过之后要撤消修改,不然修复后有很多错误提示(已经有很多了!哈哈!)
我们单步走到这里:
0040C350       /$  56            PUSH ESI  //进0040C313后的代码!
0040C351       |.  57            PUSH EDI
0040C352       |.  8BF2          MOV ESI,EDX
0040C354       |.  8B7C24 0C     MOV EDI,DWORD PTR SS:[ESP+C]
0040C358       |.  8B51 02       MOV EDX,DWORD PTR DS:[ECX+2]
0040C35B       |.  3351 06       XOR EDX,DWORD PTR DS:[ECX+6]
0040C35E       |.  3351 0A       XOR EDX,DWORD PTR DS:[ECX+A]
0040C361       |.  03FA          ADD EDI,EDX
0040C363       |.  33D2          XOR EDX,EDX
0040C365       |>  8B41 06       /MOV EAX,DWORD PTR DS:[ECX+6]
0040C368       |.  42            |INC EDX
0040C369       |.  314497 FC     |XOR DWORD PTR DS:[EDI+EDX*4-4],EAX
0040C36D       |.  42            |INC EDX
0040C36E       |.  8B41 0A       |MOV EAX,DWORD PTR DS:[ECX+A]
0040C371       |.  314497 FC     |XOR DWORD PTR DS:[EDI+EDX*4-4],EAX
0040C375       |.  83FA 14       |CMP EDX,14
0040C378       |.^ 7C EB         \JL SHORT KitchenD.0040C365
0040C37A       |.  8B0E          MOV ECX,DWORD PTR DS:[ESI]//F4运行到所选!
0040C37C       |.  E8 5F320000   CALL KitchenD.0040F5E0
我们单步走到这里:
0040C387       |.  66:833D B8114>CMP WORD PTR DS:[4111B8],0
0040C38F       |.  74 0C         JE SHORT KitchenD.0040C39D  //这个跳NOP掉,不然飞了!
0040C391       |.  66:833D C0114>CMP WORD PTR DS:[4111C0],0
0040C399       |.  74 02         JE SHORT KitchenD.0040C39D
0040C39B       |.  FFD7          CALL EDI                    //这个CALL进去,不然不能到OEP!
0040C39D       |>  6A 00         PUSH 0                                   ; /Style =
0040C39F       |.  68 38124100   PUSH KitchenD.00411238                   ; |Title = "softSENTRY"
0040C3A4       |.  68 28124100   PUSH KitchenD.00411228                   ; |Text = "Failed to
0040C3A9       |.  6A 00         PUSH 0                                   ; |hOwner = NULL
0040C3AB       |.  FF15 48544100 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; \MessageBoxA
进去后的代码:

004018A0           55            DB 55                                    ;  CHAR 'U'
004018A1           8B            DB 8B
004018A2           EC            DB EC
004018A3           6A            DB 6A                                    ;  CHAR 'j'
004018A4           FF            DB FF
004018A5           68            DB 68                                    ;  CHAR 'h'
004018A6           D0            DB D0
004018A7           50            DB 50                                    ;  CHAR 'P'
004018A8           40            DB 40                                    ;  CHAR '@'
004018A9           00            DB 00
004018AA           68            DB 68                                    ;  CHAR 'h'
004018AB           D4            DB D4
004018AC           23            DB 23                                    ;  CHAR '#'
004018AD           40            DB 40                                    ;  CHAR '@'
004018AE           00            DB 00
004018AF           64            DB 64                                    ;  CHAR 'd'

分析后的代码:
004018A0       /.  55            PUSH EBP        //这里就是OEP。
004018A1       |.  8BEC          MOV EBP,ESP
004018A3       |.  6A FF         PUSH -1
004018A5       |.  68 D0504000   PUSH KitchenD.004050D0
004018AA       |.  68 D4234000   PUSH KitchenD.004023D4                   ;  SE 处理程序安装
004018AF       |.  64:A1 0000000>MOV EAX,DWORD PTR FS:[0]
004018B5       |.  50            PUSH EAX
004018B6       |.  64:8925 00000>MOV DWORD PTR FS:[0],ESP
004018BD       |.  83EC 58       SUB ESP,58
004018C0       |.  53            PUSH EBX
004018C1       |.  56            PUSH ESI
004018C2       |.  57            PUSH EDI
004018C3       |.  8965 E8       MOV DWORD PTR SS:[EBP-18],ESP
004018C6       |.  FF15 48504000 CALL DWORD PTR DS:[<&KERNEL32.GetVersion>;  kernel32.GetVersion
004018CC       |.  33D2          XOR EDX,EDX
004018CE       |.  8AD4          MOV DL,AH
004018D0       |.  8915 D0674000 MOV DWORD PTR DS:[4067D0],EDX
004018D6       |.  8BC8          MOV ECX,EAX
004018D8       |.  81E1 FF000000 AND ECX,0FF

但是非常奇怪的是:


原程序用PIED查壳是BC++的(图3),脱壳后的程序是VC++的(图4)难道这个程序有欺骗PIED的功能还是我脱壳后的文件有问题?

我们运行软件看到一个错误的提示:Error while creating Process!我们查找字串参考,可以看到有12个错误之多,如果没有NOP掉的代码走过之后撤消修改,错误将更多。

00401009   PUSH dumped_.0040603C                     :(
004011C4   PUSH dumped_.0040615C                     Couldn't find my data section !
00401216   MOV EDI,dumped_.00406130                   wasn't found in the current directory !
0040128E   MOV EDI,dumped_.00406620                  D
004012B5   PUSH dumped_.00406620                     D
004012DC   PUSH dumped_.00406110                     Error while creating Process !
00401714   PUSH dumped_.004060E4                     Error while mapping the target file (S&R) !
0040172F   PUSH dumped_.004060E4                     Error while mapping the target file (S&R) !
00401753   PUSH dumped_.004060E4                     Error while mapping the target file (S&R) !
0040177F   PUSH dumped_.004060C4                     Error - invalid PE file (S&R) !
004017A7   PUSH dumped_.004060C4                     Error - invalid PE file (S&R) !
004017CE   PUSH dumped_.00406094                     Error while writing into the Process Memory !
004017F6   PUSH dumped_.0040607C                     Wrong version (S&R) !
00401811   PUSH dumped_.00406050                     Error while reading the Process Memory !
0040182C   PUSH dumped_.00406040                     Wrong version !
00401847   PUSH dumped_.00406094                     Error while writing into the Process Memory !
00401D8D   MOV ESI,dumped_.00406808                  C:\kd\dumped_.exe
00402562   PUSH dumped_.004053B4                     <program name unknown>
004025A4   PUSH dumped_.004053B0                     ...
004025B8   PUSH dumped_.00405394                     Runtime Error!\n\nProgram:
004025D6   PUSH dumped_.00405390                     \n\n
004025FE   PUSH dumped_.00405368                     Microsoft Visual C++ Runtime Library
0040279D   MOV EDI,dumped_.00406970                  粒冢
004027EB   MOV EDI,dumped_.00406970                  粒冢
004028A0   MOV EDI,dumped_.00406970                  粒冢
0040380B   PUSH dumped_.004053FC                     user32.dll
00403822   PUSH dumped_.004053F0                     MessageBoxA
00403833   PUSH dumped_.004053E0                     GetActiveWindow
0040383B   PUSH dumped_.004053CC                     GetLastActivePopup

到底那里出了问题呢?这个也让我头痛了很久。我想到了:
我们在看原程序的时候用PIED查壳是BC++的但是有附加数据 [Overlay],我们处理下看看:

1.打开原程序拉到最后,然后上翻,到代码全是000的地方,一定要慢慢翻,因为代码太多,
右键点代码是000后的第一个数字选快开始,然后到代码的最后选快结束。然后选编辑,复制,标准
如图5:


2.打开脱壳后的程序。拉到代码最后一个字节,右键点:


     
保存后我们运行,OK!!!!!!!!!!!

该软件有时间限制,试用是30,每新建一个工程就要减掉0.05,但是打开破解后的软件这个时间就不会动了!

我们脱壳后竟然爆破了!我有这么好的运气吗?不信???????

   于是就继续试用看看时间会不会改变,但是它一直没有变化!~~哈哈!!!难道上天也在帮助我让我继续走下去????
   看看软件界面:
   

   
   看到了吧!还是显示29.50,天呀!!!!!!!

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
自己顶下吧!~高手闪过!
2008-4-11 16:20
0
游客
登录 | 注册 方可回帖
返回