- UID
- 76151
注册时间2014-6-12
阅读权限30
最后登录1970-1-1
龙战于野
TA的每日心情 | 怒 2022-5-20 13:32 |
---|
签到天数: 235 天 [LV.7]常住居民III
|
【破文标题】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:[0x5DB8B0]
005D6EAA 68 18705D00 push crlib.005D7018 ; |
005D6EAF FF33 push dword ptr ds:[ebx]
005D6EB1 8D85 DCFDFFFF lea eax,dword ptr ss:[ebp-0x224]
005D6EB7 BA 03000000 mov edx,0x3
005D6EBC E8 7FCEFAFF call crlib.00583D40
005D6EC1 8B95 DCFDFFFF mov edx,dword ptr ss:[ebp-0x224]
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:[ebp-0x4]
005D6ED6 B8 24705D00 mov eax,crlib.005D7024 ; 5LyOU418nEcjizbR
005D6EDB E8 9CF6FFFF call crlib.005D657C
005D6EE0 8D55 F8 lea edx,dword ptr ss:[ebp-0x8]
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:[ebp-0x228]
005D6EF5 B9 70705D00 mov ecx,crlib.005D7070 ; Successful
005D6EFA 8B55 FC mov edx,dword ptr ss:[ebp-0x4]
005D6EFD E8 CACDFAFF call crlib.00583CCC
005D6F02 8B85 D8FDFFFF mov eax,dword ptr ss:[ebp-0x228]
005D6F08 E8 37CFFAFF call crlib.00583E44
005D6F0D 50 push eax
005D6F0E FF75 FC push dword ptr ss:[ebp-0x4]
005D6F11 68 84705D00 push crlib.005D7084 ; details for
005D6F16 FF35 B0B85D00 push dword ptr ds:[0x5DB8B0]
005D6F1C 68 9C705D00 push crlib.005D709C ; are confirmed.
005D6F21 68 BC705D00 push crlib.005D70BC ; \r\n
005D6F26 FF75 F8 push dword ptr ss:[ebp-0x8]
005D6F29 68 00705D00 push crlib.005D7000
005D6F2E 8D85 D0FDFFFF lea eax,dword ptr ss:[ebp-0x230]
005D6F34 8D95 F4FEFFFF lea edx,dword ptr ss:[ebp-0x10C]
005D6F3A E8 E5CCFAFF call crlib.00583C24
005D6F3F FFB5 D0FDFFFF push dword ptr ss:[ebp-0x230]
005D6F45 68 C8705D00 push crlib.005D70C8 ; .
005D6F4A 8D85 D4FDFFFF lea eax,dword ptr ss:[ebp-0x22C]
005D6F50 BA 09000000 mov edx,0x9
005D6F55 E8 E6CDFAFF call crlib.00583D40
005D6F5A 8B85 D4FDFFFF mov eax,dword ptr ss:[ebp-0x22C]
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:[ebp-0x14]
004FB8C8 . E8 1F23F8FF call stylepad.0047DBEC
004FB8CD . BA 54BF4F00 mov edx,stylepad.004FBF54 ; RegName
004FB8D2 . 8B45 EC mov eax,dword ptr ss:[ebp-0x14]
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:[ebp-0xC]
004FB8E1 . BA 54BF4F00 mov edx,stylepad.004FBF54 ; RegName
004FB8E6 . 8B45 EC mov eax,dword ptr ss:[ebp-0x14]
004FB8E9 . E8 C626F8FF call stylepad.0047DFB4
004FB8EE > BA 64BF4F00 mov edx,stylepad.004FBF64 ; RegKey
004FB8F3 . 8B45 EC mov eax,dword ptr ss:[ebp-0x14]
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:[ebp-0x10]
004FB902 . BA 64BF4F00 mov edx,stylepad.004FBF64 ; RegKey
004FB907 . 8B45 EC mov eax,dword ptr ss:[ebp-0x14]
004FB90A . E8 A526F8FF call stylepad.0047DFB4
这里应该是跟注册验证有关的位置
F2下断重启软件,果然断下F8往下跟
004FB9B8 > \8B45 FC mov eax,dword ptr ss:[ebp-0x4]
004FB9BB . 8B80 F0030000 mov eax,dword ptr ds:[eax+0x3F0]
004FB9C1 . 8078 30 00 cmp byte ptr ds:[eax+0x30],0x0
004FB9C5 . 75 0F jnz short stylepad.004FB9D6
004FB9C7 . B8 FC9E5000 mov eax,stylepad.00509EFC
004FB9CC . BA 88BF4F00 mov edx,stylepad.004FBF88 ; [Unregistered]
004FB9D1 . E8 0E83F0FF call stylepad.00403CE4
发现到这里会显示软件未注册,判断的关键标志是[eax+3x30]
向上找[eax+3x30]赋值的地方,发现上面对[eax+3x30]判断的位置比较多
找到一个关键CALL
004FB92F . 8B80 F0030000 mov eax,dword ptr ds:[eax+0x3F0]
004FB935 . 8B4D F0 mov ecx,dword ptr ss:[ebp-0x10]
004FB938 . 8B55 F4 mov edx,dword ptr ss:[ebp-0xC]
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:[ebx+0x3C]
0049B229 |. 8B55 FC mov edx,[local.1]
0049B22C |. E8 B38AF6FF call stylepad.00403CE4
0049B231 |. 8D43 40 lea eax,dword ptr ds:[ebx+0x40]
0049B234 |. 8B55 F8 mov edx,[local.2]
0049B237 |. E8 A88AF6FF call stylepad.00403CE4
0049B23C |. C643 30 01 mov byte ptr ds:[ebx+0x30],0x1
0049B240 |. EB 0A jmp short stylepad.0049B24C
发现给[ebx+0x30]赋值位置,上面有一个关键跳转
强制NOP掉这个跳转,运行软件,没有弹出注册框,说明已经破解成功
============================================================
总结:
0049B224 |. 74 1C je short stylepad.0049B242 ; 关键跳NOP掉
005D6E98 75 0A jnz short crlib.005D6EA4 ; 关键跳JNZ改JMP
|
评分
-
查看全部评分
|