吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 6499|回复: 10
收起左侧

[原创] [BRET Team 系列破解教程之中级篇] 超级XXXX专家 v1.10 算法分析

[复制链接]
cxj98 发表于 2014-2-12 13:42
本帖最后由 cxj98 于 2014-2-13 14:41 编辑

【破文标题】超级XXXX专家 v1.10 算法分析
【破文作者】cxj98
【作者邮箱】
【作者主页】
破解工具】OD 1.10 飘云修改版
【破解平台】Win 7 x64 Ultimate
【软件名称】超级xxxx专家 v1.10
【软件大小】自己看
【原版下载】自行搜索下载
【保护方式】无
【软件简介】自己查百度

【破解声明】本文仅供研究学习,本人对因这篇文章而导致的一切后果,不承担任何法律责任。本文中的不足之处
------------------------------------------------------------------------
【破解过程】载入OD后,没看到任何的壳提示,目测标准的Delphi程序入口,F9直接跑起来,输入用户名:cxj98,假码:1234567890,点击 "确定"按扭,弹出提示:注册码不正确,请检查注册码是否输错!

对于有消息提示的,可以下 bp MessageboxA 断点,再次点确定,程序果断断下来,堆栈中右键选择反汇编窗口中跟随,来到
00588364  |.  E8 8FF3E7FF   CALL    <JMP.&user32.MessageBoxA>        ; \MessageBoxA
00588369  |.  8B83 4C040000 MOV     EAX, DWORD PTR DS:[EBX+0x44C]
往上看,
0058833C  |.  E8 EFCDFEFF   CALL    ScreenCa.00575130
00588341  |.  8B83 EC040000 MOV     EAX, DWORD PTR DS:[EBX+0x4EC]
00588347  |.  E8 84CDFEFF   CALL    ScreenCa.005750D0                ;  // 关键 call,这里F7进入看看
0058834C  |.  84C0          TEST    AL, AL                           ;  // 决定 al 是否要跳转
0058834E  |.  75 29         JNZ     SHORT ScreenCa.00588379
00588350  |.  6A 40         PUSH    0x40                             ;  // 注册成功提示
00588352  |.  68 DC835800   PUSH    ScreenCa.005883DC
00588357  |.  68 1C845800   PUSH    ScreenCa.0058841C
0058835C  |.  8BC3          MOV     EAX, EBX
0058835E  |.  E8 E1F9EDFF   CALL    ScreenCa.00467D44
00588363  |.  50            PUSH    EAX                              ; |hOwner
00588364  |.  E8 8FF3E7FF   CALL    <JMP.&user32.MessageBoxA>        ; \MessageBoxA
00588369  |.  8B83 4C040000 MOV     EAX, DWORD PTR DS:[EBX+0x44C]
0058836F  |.  8B10          MOV     EDX, DWORD PTR DS:[EAX]
00588371  |.  FF92 C4000000 CALL    NEAR DWORD PTR DS:[EDX+0xC4]
00588377  |.  EB 19         JMP     SHORT ScreenCa.00588392
00588379  |>  6A 40         PUSH    0x40                             ;  // 注册失败提示
0058837B  |.  68 DC835800   PUSH    ScreenCa.005883DC
00588380  |.  68 40845800   PUSH    ScreenCa.00588440
00588385  |.  8BC3          MOV     EAX, EBX
00588387  |.  E8 B8F9EDFF   CALL    ScreenCa.00467D44
0058838C  |.  50            PUSH    EAX                              ; |hOwner
0058838D  |.  E8 66F3E7FF   CALL    <JMP.&user32.MessageBoxA>        ; \MessageBoxA
00588392  |>  33C0          XOR     EAX, EAX
F7 进入关键 Call 去看一看:
005750D0  /[        DISCUZ_CODE_24        ]nbsp; 55            PUSH    EBP
005750D1  |.  8BEC          MOV     EBP, ESP
005750D3  |.  6A 00         PUSH    0x0
005750D5  |.  53            PUSH    EBX
005750D6  |.  8BD8          MOV     EBX, EAX
005750D8  |.  33C0          XOR     EAX, EAX
005750DA  |.  55            PUSH    EBP
005750DB  |.  68 22515700   PUSH    ScreenCa.00575122
005750E0  |.  64:FF30       PUSH    DWORD PTR FS:[EAX]
005750E3  |.  64:8920       MOV     DWORD PTR FS:[EAX], ESP
005750E6  |.  8BC3          MOV     EAX, EBX
005750E8  |.  E8 73FEFFFF   CALL    ScreenCa.00574F60
005750ED  |.  DDD8          FSTP    ST(0)
005750EF  |.  8D55 FC       LEA     EDX, DWORD PTR SS:[EBP-0x4]
005750F2  |.  8BC3          MOV     EAX, EBX
005750F4  |.  E8 8FFCFFFF   CALL    ScreenCa.00574D88                ;  // 核心算法,F7 进去瞧瞧
005750F9  |.  8B55 FC       MOV     EDX, DWORD PTR SS:[EBP-0x4]      ;  // 真码,此处可内存注册机
005750FC  |.  8B43 14       MOV     EAX, DWORD PTR DS:[EBX+0x14]
005750FF  |.  E8 A0F6E8FF   CALL    ScreenCa.004047A4
00575104  |.  75 04         JNZ     SHORT ScreenCa.0057510A
00575106  |.  B3 01         MOV     BL, 0x1
00575108  |.  EB 02         JMP     SHORT ScreenCa.0057510C
0057510A  |>  33DB          XOR     EBX, EBX
0057510C  |>  33C0          XOR     EAX, EAX
0057510E  |.  5A            POP     EDX
0057510F  |.  59            POP     ECX
00575110  |.  59            POP     ECX
00575111  |.  64:8910       MOV     DWORD PTR FS:[EAX], EDX
00575114  |.  68 29515700   PUSH    ScreenCa.00575129
00575119  |>  8D45 FC       LEA     EAX, DWORD PTR SS:[EBP-0x4]
0057511C  |.  E8 77F2E8FF   CALL    ScreenCa.00404398
00575121  \.  C3            RETN
F7 进核心算法瞧瞧:
00574D88  /[        DISCUZ_CODE_25        ]nbsp; 55            PUSH    EBP
00574D89  |.  8BEC          MOV     EBP, ESP
00574D8B  |.  B9 05000000   MOV     ECX, 0x5
00574D90  |>  6A 00         /PUSH    0x0
00574D92  |.  6A 00         |PUSH    0x0
00574D94  |.  49            |DEC     ECX
00574D95  |.^ 75 F9         \JNZ     SHORT ScreenCa.00574D90
00574D97  |.  51            PUSH    ECX
00574D98  |.  53            PUSH    EBX
00574D99  |.  56            PUSH    ESI
00574D9A  |.  57            PUSH    EDI
00574D9B  |.  8955 FC       MOV     DWORD PTR SS:[EBP-0x4], EDX
00574D9E  |.  8BF8          MOV     EDI, EAX
00574DA0  |.  33C0          XOR     EAX, EAX
00574DA2  |.  55            PUSH    EBP
00574DA3  |.  68 464F5700   PUSH    ScreenCa.00574F46
00574DA8  |.  64:FF30       PUSH    DWORD PTR FS:[EAX]
00574DAB  |.  64:8920       MOV     DWORD PTR FS:[EAX], ESP
00574DAE  |.  8B45 FC       MOV     EAX, DWORD PTR SS:[EBP-0x4]
00574DB1  |.  E8 E2F5E8FF   CALL    ScreenCa.00404398
00574DB6  |.  8D55 F0       LEA     EDX, DWORD PTR SS:[EBP-0x10]
00574DB9  |.  8BC7          MOV     EAX, EDI
00574DBB  |.  E8 60FFFFFF   CALL    ScreenCa.00574D20
00574DC0  |.  8B45 F0       MOV     EAX, DWORD PTR SS:[EBP-0x10]     ;  // 用户名
00574DC3  |.  E8 90F8E8FF   CALL    ScreenCa.00404658
00574DC8  |.  8BF0          MOV     ESI, EAX                         ;  // 用户名长度给 ESI
00574DCA  |.  85F6          TEST    ESI, ESI                         ;  // 测试用户名是否为空
00574DCC  |.  7E 30         JLE     SHORT ScreenCa.00574DFE
00574DCE  |.  BB 01000000   MOV     EBX, 0x1
00574DD3  |>  8D55 E8       /LEA     EDX, DWORD PTR SS:[EBP-0x18]
00574DD6  |.  8BC7          |MOV     EAX, EDI
00574DD8  |.  E8 43FFFFFF   |CALL    ScreenCa.00574D20
00574DDD  |.  8B45 E8       |MOV     EAX, DWORD PTR SS:[EBP-0x18]
00574DE0  |.  0FB64418 FF   |MOVZX   EAX, BYTE PTR DS:[EAX+EBX-0x1]  ;  // 取用户名 ASCII 码
00574DE5  |.  8D4D EC       |LEA     ECX, DWORD PTR SS:[EBP-0x14]
00574DE8  |.  33D2          |XOR     EDX, EDX
00574DEA  |.  E8 3145E9FF   |CALL    ScreenCa.00409320
00574DEF  |.  8B55 EC       |MOV     EDX, DWORD PTR SS:[EBP-0x14]    ;  // 用户名 ASCII 给 EDX
00574DF2  |.  8D45 F8       |LEA     EAX, DWORD PTR SS:[EBP-0x8]
00574DF5  |.  E8 66F8E8FF   |CALL    ScreenCa.00404660
00574DFA  |.  43            |INC     EBX
00574DFB  |.  4E            |DEC     ESI
00574DFC  |.^ 75 D5         \JNZ     SHORT ScreenCa.00574DD3
00574DFE  |>  8B45 F8       MOV     EAX, DWORD PTR SS:[EBP-0x8]      ;  // 算出来的用户名ASCII码给EAX
00574E01  |.  E8 52F8E8FF   CALL    ScreenCa.00404658
00574E06  |.  8BF0          MOV     ESI, EAX                         ;  // ASCII 长度给 ESI
00574E08  |.  85F6          TEST    ESI, ESI                         ;  // ASCII 长度测试
00574E0A  |.  7E 2C         JLE     SHORT ScreenCa.00574E38
00574E0C  |.  BB 01000000   MOV     EBX, 0x1
00574E11  |>  8B45 F8       /MOV     EAX, DWORD PTR SS:[EBP-0x8]     ;  // 用户名ASCII码给EAX
00574E14  |.  E8 3FF8E8FF   |CALL    ScreenCa.00404658
00574E19  |.  2BC3          |SUB     EAX, EBX                        ;  EAX=EAX-EBX
00574E1B  |.  8B55 F8       |MOV     EDX, DWORD PTR SS:[EBP-0x8]     ;  // 用户名 ASCII 给 EDX
00574E1E  |.  8A1402        |MOV     DL, BYTE PTR DS:[EDX+EAX]       ;  // 从右到左依次获取 用户名ASCII最后一个字符的 ASCII
00574E21  |.  8D45 E4       |LEA     EAX, DWORD PTR SS:[EBP-0x1C]
00574E24  |.  E8 57F7E8FF   |CALL    ScreenCa.00404580
00574E29  |.  8B55 E4       |MOV     EDX, DWORD PTR SS:[EBP-0x1C]
00574E2C  |.  8D45 F4       |LEA     EAX, DWORD PTR SS:[EBP-0xC]
00574E2F  |.  E8 2CF8E8FF   |CALL    ScreenCa.00404660
00574E34  |.  43            |INC     EBX
00574E35  |.  4E            |DEC     ESI
00574E36  |.^ 75 D9         \JNZ     SHORT ScreenCa.00574E11
00574E38  |>  8D45 F8       LEA     EAX, DWORD PTR SS:[EBP-0x8]
00574E3B  |.  50            PUSH    EAX
00574E3C  |.  B9 04000000   MOV     ECX, 0x4
00574E41  |.  BA 01000000   MOV     EDX, 0x1
00574E46  |.  8B45 F4       MOV     EAX, DWORD PTR SS:[EBP-0xC]
00574E49  |.  E8 6AFAE8FF   CALL    ScreenCa.004048B8
00574E4E  |.  8D45 F4       LEA     EAX, DWORD PTR SS:[EBP-0xC]
00574E51  |.  50            PUSH    EAX
00574E52  |.  B9 04000000   MOV     ECX, 0x4
00574E57  |.  BA 05000000   MOV     EDX, 0x5
00574E5C  |.  8B45 F4       MOV     EAX, DWORD PTR SS:[EBP-0xC]
00574E5F  |.  E8 54FAE8FF   CALL    ScreenCa.004048B8
00574E64  |.  8B45 F8       MOV     EAX, DWORD PTR SS:[EBP-0x8]      ;  // 用户名 ascii 依次从右往左从第1位开始取4位,即:abcd 变成 dcba
00574E67  |.  E8 ECF7E8FF   CALL    ScreenCa.00404658
00574E6C  |.  83F8 04       CMP     EAX, 0x4
00574E6F  |.  7D 2F         JGE     SHORT ScreenCa.00574EA0
00574E71  |.  8B45 F8       MOV     EAX, DWORD PTR SS:[EBP-0x8]
00574E74  |.  E8 DFF7E8FF   CALL    ScreenCa.00404658
00574E79  |.  8BD8          MOV     EBX, EAX
00574E7B  |.  83FB 03       CMP     EBX, 0x3
00574E7E  |.  7F 20         JG      SHORT ScreenCa.00574EA0
00574E80  |>  8D4D E0       /LEA     ECX, DWORD PTR SS:[EBP-0x20]
00574E83  |.  8BC3          |MOV     EAX, EBX
00574E85  |.  C1E0 02       |SHL     EAX, 0x2
00574E88  |.  33D2          |XOR     EDX, EDX
00574E8A  |.  E8 9144E9FF   |CALL    ScreenCa.00409320
00574E8F  |.  8B55 E0       |MOV     EDX, DWORD PTR SS:[EBP-0x20]
00574E92  |.  8D45 F8       |LEA     EAX, DWORD PTR SS:[EBP-0x8]
00574E95  |.  E8 C6F7E8FF   |CALL    ScreenCa.00404660
00574E9A  |.  43            |INC     EBX
00574E9B  |.  83FB 04       |CMP     EBX, 0x4
00574E9E  |.^ 75 E0         \JNZ     SHORT ScreenCa.00574E80
00574EA0  |>  8B45 F4       MOV     EAX, DWORD PTR SS:[EBP-0xC]      ;  // 用户名 ascii 依次从右往左从第5位开始取4位,即:abcd 变成 dcba
00574EA3  |.  E8 B0F7E8FF   CALL    ScreenCa.00404658
00574EA8  |.  83F8 04       CMP     EAX, 0x4
00574EAB  |.  7D 2F         JGE     SHORT ScreenCa.00574EDC
00574EAD  |.  8B45 F4       MOV     EAX, DWORD PTR SS:[EBP-0xC]
00574EB0  |.  E8 A3F7E8FF   CALL    ScreenCa.00404658
00574EB5  |.  8BD8          MOV     EBX, EAX
00574EB7  |.  83FB 03       CMP     EBX, 0x3
00574EBA  |.  7F 20         JG      SHORT ScreenCa.00574EDC
00574EBC  |>  8D4D DC       /LEA     ECX, DWORD PTR SS:[EBP-0x24]
00574EBF  |.  8BC3          |MOV     EAX, EBX
00574EC1  |.  C1E0 02       |SHL     EAX, 0x2
00574EC4  |.  33D2          |XOR     EDX, EDX
00574EC6  |.  E8 5544E9FF   |CALL    ScreenCa.00409320
00574ECB  |.  8B55 DC       |MOV     EDX, DWORD PTR SS:[EBP-0x24]
00574ECE  |.  8D45 F4       |LEA     EAX, DWORD PTR SS:[EBP-0xC]
00574ED1  |.  E8 8AF7E8FF   |CALL    ScreenCa.00404660
00574ED6  |.  43            |INC     EBX
00574ED7  |.  83FB 04       |CMP     EBX, 0x4
00574EDA  |.^ 75 E0         \JNZ     SHORT ScreenCa.00574EBC
00574EDC  |>  8D45 D8       LEA     EAX, DWORD PTR SS:[EBP-0x28]
00574EDF  |.  50            PUSH    EAX
00574EE0  |.  8B47 04       MOV     EAX, DWORD PTR DS:[EDI+0x4]      ;  // 取固定字符串“PictureRecording86v2013”中的前4个字符,即:Pict给EAX
00574EE3  |.  B9 04000000   MOV     ECX, 0x4
00574EE8  |.  BA 01000000   MOV     EDX, 0x1
00574EED  |.  E8 C6F9E8FF   CALL    ScreenCa.004048B8
00574EF2  |.  FF75 D8       PUSH    DWORD PTR SS:[EBP-0x28]          ;  // 已经获取到的 Pict 与下面的- 连接,注册码的组合
00574EF5  |.  68 5C4F5700   PUSH    ScreenCa.00574F5C                ;  UNICODE "-"
00574EFA  |.  FF75 F8       PUSH    DWORD PTR SS:[EBP-0x8]           ;  // 用户名ascii从右往左从第一位开始获取的4位与上面的注册码连接
00574EFD  |.  8D45 D4       LEA     EAX, DWORD PTR SS:[EBP-0x2C]
00574F00  |.  50            PUSH    EAX
00574F01  |.  8B47 04       MOV     EAX, DWORD PTR DS:[EDI+0x4]
00574F04  |.  B9 05000000   MOV     ECX, 0x5
00574F09  |.  BA 05000000   MOV     EDX, 0x5
00574F0E  |.  E8 A5F9E8FF   CALL    ScreenCa.004048B8
00574F13  |.  FF75 D4       PUSH    DWORD PTR SS:[EBP-0x2C]          ;  // 取固定字符串“PictureRecording86v2013”中的字符串 ureRe
00574F16  |.  68 5C4F5700   PUSH    ScreenCa.00574F5C                ;  UNICODE "-"
00574F1B  |.  FF75 F4       PUSH    DWORD PTR SS:[EBP-0xC]           ;  // 用户名ascii从右往左第5位开始获取的4位与上面的注册码连接
00574F1E  |.  8B45 FC       MOV     EAX, DWORD PTR SS:[EBP-0x4]
00574F21  |.  BA 06000000   MOV     EDX, 0x6
00574F26  |.  E8 EDF7E8FF   CALL    ScreenCa.00404718
00574F2B  |.  33C0          XOR     EAX, EAX
00574F2D  |.  5A            POP     EDX
00574F2E  |.  59            POP     ECX
00574F2F  |.  59            POP     ECX
00574F30  |.  64:8910       MOV     DWORD PTR FS:[EAX], EDX
00574F33  |.  68 4D4F5700   PUSH    ScreenCa.00574F4D
00574F38  |>  8D45 D4       LEA     EAX, DWORD PTR SS:[EBP-0x2C]
00574F3B  |.  BA 0A000000   MOV     EDX, 0xA
00574F40  |.  E8 77F4E8FF   CALL    ScreenCa.004043BC
00574F45  \.  C3            RETN
一路 F8 后,走出核心算法。

经过分析,cxj98 的 ascii 码为:63 78 6A 39 38
最终计算出来的注册码为:Pict-8393ureRe-A687

输入最终计算出来的注册码,消息提示:注册成功,程序重新打开后生效。

本人不懂编程,所以这里的算法注册机直接忽略。

本文原创于飘云阁论坛,转载请保留完整的信息,谢谢。同时为了尊重国产软件,固将软件的名称以xxxx代替了。

免费评分

参与人数 1热心值 +1 收起 理由
bansjs + 1 感谢分享破解文章,吾爱有你更精彩!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

℡Black星辰 发表于 2014-2-12 13:47
沙发,支持一下

点评

膜拜熔岩师傅神速  发表于 2014-2-12 13:53
wuaixuexioen 发表于 2014-2-12 13:54
吾爱-路人甲 发表于 2014-2-12 13:58
难道就是昨天只分析了10%的那个?

点评

不同,那个只是 Keygen Me 软件。  发表于 2014-2-12 14:01
vipcrack 发表于 2014-2-12 14:01
应该是超级屏幕录像机,看开头的PICT好像是。
zzzzyy 发表于 2014-2-12 14:13 来自手机
谢谢分享,不错的资料
飘舞的雪花 发表于 2014-2-12 14:53
谢谢楼主。
bansjs 发表于 2014-2-12 22:21
2.jpg

谢谢!用你的方法破解了。
夜依 发表于 2014-3-12 08:57
我只是想问下,这个格式是某个记事本的功能吧,似乎看见过。@cxj98
www52pojiecn 发表于 2014-3-12 14:28
样本名没说全,无法复现啊
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-18 05:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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