飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 3361|回复: 2

[原创] CFi StylePad v1.3.2 爆破分析

[复制链接]
  • TA的每日心情

    2022-5-20 13:32
  • 签到天数: 235 天

    [LV.7]常住居民III

    发表于 2015-12-21 16:40:14 | 显示全部楼层 |阅读模式
    【破文标题】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 updates@cfisoft.com 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

    评分

    参与人数 1威望 +20 飘云币 +20 收起 理由
    GeekCat + 20 + 20 PYG有你更精彩!

    查看全部评分

    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-7-31 08:47
  • 签到天数: 18 天

    [LV.4]偶尔看看III

    发表于 2015-12-21 16:48:09 | 显示全部楼层
    学习下思路,感谢楼主。
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2020-4-21 12:25
  • 签到天数: 105 天

    [LV.6]常住居民II

    发表于 2015-12-21 21:54:45 | 显示全部楼层
    关键CALL进去004FB93B

    nop 0049B1A5
    nop 0049B1AF
    nop 0049B224

    评分

    参与人数 1威望 +8 飘云币 +8 收起 理由
    千千万是福朋友 + 8 + 8 很给力!

    查看全部评分

    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表