千千万是福朋友 发表于 2015-12-21 16:40:14

CFi StylePad v1.3.2 爆破分析

【破文标题】CFi StylePad v1.3.2 爆破分析
【破文作者】千千万是福朋友
【破解工具】OD
【破解平台】XP
【软件名称】CFi StylePad v1.3.2
【破解声明】仅限于技术交流,请勿用于商业用途
【破解过程】
03年的软件,只为提高调试水平
发现很久没有调试软件水平都下降了╯﹏╰╯﹏╰╯﹏╰算法没分析出来

下载软件PEID查壳。Borland Delphi v2.0 - v7.0无壳还是很喜欢的
先运行两遍程序找突破口
软件运行弹出试用倒计时窗口,点击注册按键弹出注册框
任意输入注册信息弹出错误提示框
---------------------------
Updated Product Key Required
---------------------------
Please contact CFi at [email protected] to request      
a new product key for CFi StylePad.Include your User Name      
(123456) in the message.      

There is no charge for this update.      
---------------------------
确定   
---------------------------

从最简单的找字符串开始切入
中文搜索引擎, 条目 967
地址=005D67CB
反汇编=push crlib.005D6944
文本字符串=Updated Product Key Required

找到字符串提示地址005D67CB
双击跟到汇编代码处F2下断
任意输入注册信息点击确认。软件断下弹出同上面一样的错误注册信息提示

点击K看下堆栈中有什么东西
什么也没有,按F8跟到ret返回上一层

005D6E91    E8 EAF7FFFF   call crlib.005D6680                      ; 注册验证CALL
005D6E96    84C0            test al,al
005D6E98    75 0A         jnz short crlib.005D6EA4               ; 关键跳?
005D6E9A    E8 5DC6FAFF   call crlib.005834FC
005D6E9F    E9 E6000000   jmp crlib.005D6F8A
005D6EA4    FF35 B0B85D00   push dword ptr ds:
005D6EAA    68 18705D00   push crlib.005D7018                      ; |
005D6EAF    FF33            push dword ptr ds:
005D6EB1    8D85 DCFDFFFF   lea eax,dword ptr ss:
005D6EB7    BA 03000000   mov edx,0x3
005D6EBC    E8 7FCEFAFF   call crlib.00583D40
005D6EC1    8B95 DCFDFFFF   mov edx,dword ptr ss:
005D6EC7    8BC6            mov eax,esi
005D6EC9    B9 FF000000   mov ecx,0xFF
005D6ECE    E8 89CDFAFF   call crlib.00583C5C
005D6ED3    8D55 FC         lea edx,dword ptr ss:
005D6ED6    B8 24705D00   mov eax,crlib.005D7024                   ; 5LyOU418nEcjizbR
005D6EDB    E8 9CF6FFFF   call crlib.005D657C
005D6EE0    8D55 F8         lea edx,dword ptr ss:
005D6EE3    B8 40705D00   mov eax,crlib.005D7040                   ; 4vYhtT03cJx2mAPCyRfxaEnZi0Xe2PKcGf==
005D6EE8    E8 8FF6FFFF   call crlib.005D657C
005D6EED    6A 40         push 0x40
005D6EEF    8D85 D8FDFFFF   lea eax,dword ptr ss:
005D6EF5    B9 70705D00   mov ecx,crlib.005D7070                   ;Successful
005D6EFA    8B55 FC         mov edx,dword ptr ss:
005D6EFD    E8 CACDFAFF   call crlib.00583CCC
005D6F02    8B85 D8FDFFFF   mov eax,dword ptr ss:
005D6F08    E8 37CFFAFF   call crlib.00583E44
005D6F0D    50            push eax
005D6F0E    FF75 FC         push dword ptr ss:
005D6F11    68 84705D00   push crlib.005D7084                      ;details for
005D6F16    FF35 B0B85D00   push dword ptr ds:
005D6F1C    68 9C705D00   push crlib.005D709C                      ;are confirmed.
005D6F21    68 BC705D00   push crlib.005D70BC                      ; \r\n
005D6F26    FF75 F8         push dword ptr ss:
005D6F29    68 00705D00   push crlib.005D7000
005D6F2E    8D85 D0FDFFFF   lea eax,dword ptr ss:
005D6F34    8D95 F4FEFFFF   lea edx,dword ptr ss:
005D6F3A    E8 E5CCFAFF   call crlib.00583C24
005D6F3F    FFB5 D0FDFFFF   push dword ptr ss:
005D6F45    68 C8705D00   push crlib.005D70C8                      ; .
005D6F4A    8D85 D4FDFFFF   lea eax,dword ptr ss:
005D6F50    BA 09000000   mov edx,0x9
005D6F55    E8 E6CDFAFF   call crlib.00583D40
005D6F5A    8B85 D4FDFFFF   mov eax,dword ptr ss:
005D6F60    E8 DFCEFAFF   call crlib.00583E44
005D6F65    50            push eax
005D6F66    6A 00         push 0x0
005D6F68    E8 03FBFAFF   call crlib.00586A70                      ; jmp 到 user32.MessageBoxA

可以看到CALL下面有一个Successful提示字符串,但是005D6E98    75 0A         jnz short crlib.005D6EA4               ; 关键跳?
给跳过去了,尝试修改跳转标记,果然弹出注册成功

再试下重启会不会提示注册
发现重启还有提示要注册,再找找看其他突破口
继续查找字符串
004FB8C0   .BA 34BF4F00   mov edx,stylepad.004FBF34                ;Software\CFi\StylePad
004FB8C5   .8B45 EC       mov eax,dword ptr ss:
004FB8C8   .E8 1F23F8FF   call stylepad.0047DBEC
004FB8CD   .BA 54BF4F00   mov edx,stylepad.004FBF54                ;RegName
004FB8D2   .8B45 EC       mov eax,dword ptr ss:
004FB8D5   .E8 0E29F8FF   call stylepad.0047E1E8
004FB8DA   .84C0          test al,al
004FB8DC   .74 10         je short stylepad.004FB8EE
004FB8DE   .8D4D F4       lea ecx,dword ptr ss:
004FB8E1   .BA 54BF4F00   mov edx,stylepad.004FBF54                ;RegName
004FB8E6   .8B45 EC       mov eax,dword ptr ss:
004FB8E9   .E8 C626F8FF   call stylepad.0047DFB4
004FB8EE   >BA 64BF4F00   mov edx,stylepad.004FBF64                ;RegKey
004FB8F3   .8B45 EC       mov eax,dword ptr ss:
004FB8F6   .E8 ED28F8FF   call stylepad.0047E1E8
004FB8FB   .84C0          test al,al
004FB8FD   .74 10         je short stylepad.004FB90F
004FB8FF   .8D4D F0       lea ecx,dword ptr ss:
004FB902   .BA 64BF4F00   mov edx,stylepad.004FBF64                ;RegKey
004FB907   .8B45 EC       mov eax,dword ptr ss:
004FB90A   .E8 A526F8FF   call stylepad.0047DFB4

这里应该是跟注册验证有关的位置
F2下断重启软件,果然断下F8往下跟
004FB9B8   > \8B45 FC       mov eax,dword ptr ss:
004FB9BB   .8B80 F0030000 mov eax,dword ptr ds:
004FB9C1   .8078 30 00    cmp byte ptr ds:,0x0
004FB9C5   .75 0F         jnz short stylepad.004FB9D6
004FB9C7   .B8 FC9E5000   mov eax,stylepad.00509EFC
004FB9CC   .BA 88BF4F00   mov edx,stylepad.004FBF88                ;
004FB9D1   .E8 0E83F0FF   call stylepad.00403CE4
发现到这里会显示软件未注册,判断的关键标志是
向上找赋值的地方,发现上面对判断的位置比较多
找到一个关键CALL
004FB92F   .8B80 F0030000 mov eax,dword ptr ds:
004FB935   .8B4D F0       mov ecx,dword ptr ss:
004FB938   .8B55 F4       mov edx,dword ptr ss:
004FB93B   .E8 28F8F9FF   call stylepad.0049B168
在CALL处下断重启软件F7跟进去
0049B21D|.E8 DAFDFFFF   call <jmp.&crlib.Lib_Val>                ;重启注册信息验证CALL
0049B222|.84C0          test al,al
0049B224|.74 1C         je short stylepad.0049B242               ;关键跳
0049B226|.8D43 3C       lea eax,dword ptr ds:
0049B229|.8B55 FC       mov edx,
0049B22C|.E8 B38AF6FF   call stylepad.00403CE4
0049B231|.8D43 40       lea eax,dword ptr ds:
0049B234|.8B55 F8       mov edx,
0049B237|.E8 A88AF6FF   call stylepad.00403CE4
0049B23C|.C643 30 01    mov byte ptr ds:,0x1
0049B240|.EB 0A         jmp short stylepad.0049B24C

发现给赋值位置,上面有一个关键跳转
强制NOP掉这个跳转,运行软件,没有弹出注册框,说明已经破解成功

============================================================

总结:
0049B224|.74 1C         je short stylepad.0049B242               ;关键跳NOP掉
005D6E98    75 0A         jnz short crlib.005D6EA4               ; 关键跳JNZ改JMP

左岸麦田 发表于 2015-12-21 16:48:09

学习下思路,感谢楼主。

q2692988 发表于 2015-12-21 21:54:45

关键CALL进去004FB93B

nop 0049B1A5
nop 0049B1AF
nop 0049B224
页: [1]
查看完整版本: CFi StylePad v1.3.2 爆破分析