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
学习下思路,感谢楼主。 关键CALL进去004FB93B
nop 0049B1A5
nop 0049B1AF
nop 0049B224
页:
[1]