手脱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日开班!