首页
社区
课程
招聘
[原创]某QQ聊天记录察看器 注册流程分析(入门级的破解,高手飘过)
发表于: 2008-1-18 13:42 6558

[原创]某QQ聊天记录察看器 注册流程分析(入门级的破解,高手飘过)

2008-1-18 13:42
6558
【文章标题】: 某QQ聊天记录察看器 注册流程分析
【文章作者】: jzfcf
【作者邮箱】: jzfcf@126.com
【作者主页】: http://nice-crack.af99.com
【作者QQ号】:
【软件名称】: QQ聊天记录察看器 5.3
【软件大小】: 648K
【下载地址】: http://www.pcsoft.com.cn/soft/Soft_3407.htm
【加壳方式】: 无壳
【保护方式】: 未保护
【编写语言】: Delphi
【使用工具】: OD
【操作平台】: XP/2000/2003
【软件介绍】: 这是一款查看QQ聊天记录的软件,只能试用2次,不爽!
【作者声明】: 只是感兴趣,没有其他目的。
--------------------------------------------------------------------------------
【详细过程】
这个软件的破解过程稍微简单了点,给新手当入门教程,呵呵!
进入正题,OD打开软件,选择好QQ的安装目录和QQ号,点查看按钮,弹出一个注册框,提示只能试用2次,汗...,下MessageBox 断点(command窗口输入 bp MessageBoxA),随便填入注册码,注册,断下来后,Alt+F9返回.停在 0046EFAD 这,以上就是显示注册码错误的提示框,往上还有一个MessageBox,猜想这肯定是注册成功的提示框,
我们可以验证一下,在0046EF57这个地址下断,重新点注册,
  断下后,修改Z标志位,出现注册成功了,呵呵.那上面那个call就是关键call了!
  0046EF04  /.  55            push    ebp
  0046EF05  |.  8BEC          mov     ebp, esp
  0046EF07  |.  83C4 F4       add     esp, -0C
  0046EF0A  |.  33C9          xor     ecx, ecx
  0046EF0C  |.  894D F4       mov     dword ptr [ebp-C], ecx
  0046EF0F  |.  8955 F8       mov     dword ptr [ebp-8], edx
  0046EF12  |.  8945 FC       mov     dword ptr [ebp-4], eax
  0046EF15  |.  33C0          xor     eax, eax
  0046EF17  |.  55            push    ebp
  0046EF18  |.  68 C3EF4600   push    0046EFC3
  0046EF1D  |.  64:FF30       push    dword ptr fs:[eax]
  0046EF20  |.  64:8920       mov     dword ptr fs:[eax], esp
  0046EF23  |.  8D55 F4       lea     edx, dword ptr [ebp-C]
  0046EF26  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EF29  |.  8B80 F0020000 mov     eax, dword ptr [eax+2F0]
  0046EF2F  |.  E8 2096FCFF   call    00438554
  0046EF34  |.  8B55 F4       mov     edx, dword ptr [ebp-C]
  0046EF37  |.  B8 E89C4800   mov     eax, 00489CE8                    ;  ASCII "糽?
  0046EF3C  |.  E8 8F53F9FF   call    004042D0
  0046EF41  |.  A1 E89C4800   mov     eax, dword ptr [489CE8]
  0046EF46  |.  E8 19FDFFFF   call    0046EC64                         ;关键call
  0046EF4B  |.  A3 EC9C4800   mov     dword ptr [489CEC], eax
  0046EF50  |.  833D EC9C4800>cmp     dword ptr [489CEC], 0
  0046EF57  |.  74 34         je      short 0046EF8D                    ;关键跳
  0046EF59  |.  6A 00         push    0
  0046EF5B  |.  A1 E89C4800   mov     eax, dword ptr [489CE8]
  0046EF60  |.  E8 C757F9FF   call    0040472C
  0046EF65  |.  50            push    eax
  0046EF66  |.  68 D0EF4600   push    0046EFD0
  0046EF6B  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EF6E  |.  E8 61FCFCFF   call    0043EBD4
  0046EF73  |.  50            push    eax                              ; |hOwner
  0046EF74  |.  E8 2F80F9FF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
  0046EF79  |.  A1 E89C4800   mov     eax, dword ptr [489CE8]
  0046EF7E  |.  E8 A1FEFFFF   call    0046EE24
  0046EF83  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EF86  |.  E8 615DFEFF   call    00454CEC
  0046EF8B  |.  EB 20         jmp     short 0046EFAD
  0046EF8D  |>  6A 00         push    0
  0046EF8F  |.  A1 E89C4800   mov     eax, dword ptr [489CE8]
  0046EF94  |.  E8 9357F9FF   call    0040472C
  0046EF99  |.  50            push    eax
  0046EF9A  |.  68 DCEF4600   push    0046EFDC
  0046EF9F  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EFA2  |.  E8 2DFCFCFF   call    0043EBD4
  0046EFA7  |.  50            push    eax                              ; |hOwner
  0046EFA8  |.  E8 FB7FF9FF   call    <jmp.&user32.MessageBoxA>        ; \MessageBoxA
  0046EFAD  |>  33C0          xor     eax, eax                         ;// Alt+F9 返回后停在这!上面这个MessageBox就是显示注册错误!
  0046EFAF  |.  5A            pop     edx
  0046EFB0  |.  59            pop     ecx
  0046EFB1  |.  59            pop     ecx
  0046EFB2  |.  64:8910       mov     dword ptr fs:[eax], edx
  0046EFB5  |.  68 CAEF4600   push    0046EFCA
  0046EFBA  |>  8D45 F4       lea     eax, dword ptr [ebp-C]
  0046EFBD  |.  E8 BA52F9FF   call    0040427C
  0046EFC2  \.  C3            retn
  
  好,大概流程明白后,我们可以分析一下它的注册流程!在0046EF46这下F2断点,重新点注册,在这个地址断下,F7跟进去.
  0046EC64  /$  55            push    ebp
  0046EC65  |.  8BEC          mov     ebp, esp
  0046EC67  |.  83C4 C8       add     esp, -38
  0046EC6A  |.  8945 FC       mov     dword ptr [ebp-4], eax
  0046EC6D  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EC70  |.  E8 A75AF9FF   call    0040471C
  0046EC75  |.  33C0          xor     eax, eax
  0046EC77  |.  55            push    ebp
  0046EC78  |.  68 A3ED4600   push    0046EDA3
  0046EC7D  |.  64:FF30       push    dword ptr fs:[eax]
  0046EC80  |.  64:8920       mov     dword ptr fs:[eax], esp
  0046EC83  |.  33C0          xor     eax, eax
  0046EC85  |.  8945 F8       mov     dword ptr [ebp-8], eax
  0046EC88  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EC8B  |.  E8 A458F9FF   call    00404534
  0046EC90  |.  83F8 10       cmp     eax, 10
  0046EC93  |.  0F8C F4000000 jl      0046ED8D
  0046EC99  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046EC9C  |.  E8 9358F9FF   call    00404534
  0046ECA1  |.  83F8 10       cmp     eax, 10
  0046ECA4  |.  0F8F E3000000 jg      0046ED8D
  0046ECAA  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046ECAD  |.  BA BCED4600   mov     edx, 0046EDBC                    ;  ASCII "1163659294813585"
  0046ECB2  |.  E8 C159F9FF   call    00404678
  0046ECB7  |.  0F84 D0000000 je      0046ED8D
  0046ECBD  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046ECC0  |.  BA D8ED4600   mov     edx, 0046EDD8                    ;  ASCII "0386848021608060"
  0046ECC5  |.  E8 AE59F9FF   call    00404678
  0046ECCA  |.  0F84 BD000000 je      0046ED8D
  0046ECD0  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046ECD3  |.  BA F4ED4600   mov     edx, 0046EDF4                    ;  ASCII "8319E4005F00PYG0"
  0046ECD8  |.  E8 9B59F9FF   call    00404678
  0046ECDD  |.  0F84 AA000000 je      0046ED8D
  0046ECE3  |.  8B45 FC       mov     eax, dword ptr [ebp-4]
  0046ECE6  |.  BA 10EE4600   mov     edx, 0046EE10                    ;  ASCII "0566838690673180"
  0046ECEB  |.  E8 8859F9FF   call    00404678
  0046ECF0  |.  0F84 97000000 je      0046ED8D
  0046ECF6  |.  33C0          xor     eax, eax
  0046ECF8  |.  8945 DC       mov     dword ptr [ebp-24], eax
  0046ECFB  |>  8B45 FC       /mov     eax, dword ptr [ebp-4]
  0046ECFE  |.  8B55 DC       |mov     edx, dword ptr [ebp-24]
  0046ED01  |.  8A0410        |mov     al, byte ptr [eax+edx]
  0046ED04  |.  E8 13FFFFFF   |call    <atoi>                           ;伪注册码的每一位字符转换成数字
  0046ED09  |.  8B55 DC       |mov     edx, dword ptr [ebp-24]
  0046ED0C  |.  884415 CB     |mov     byte ptr [ebp+edx-35], al
  0046ED10  |.  FF45 DC       |inc     dword ptr [ebp-24]
  0046ED13  |.  837D DC 10    |cmp     dword ptr [ebp-24], 10
  0046ED17  |.^ 75 E2         \jnz     short 0046ECFB
  0046ED19  |.  33C0          xor     eax, eax
  0046ED1B  |.  8945 E0       mov     dword ptr [ebp-20], eax
  0046ED1E  |>  8B45 E0       /mov     eax, dword ptr [ebp-20]
  0046ED21  |.  03C0          |add     eax, eax
  0046ED23  |.  8A4405 CC     |mov     al, byte ptr [ebp+eax-34]     ;X(偶位)<<4 + X(奇位) = Y
  0046ED27  |.  C1E0 04       |shl     eax, 4
  0046ED2A  |.  8B55 E0       |mov     edx, dword ptr [ebp-20]
  0046ED2D  |.  03D2          |add     edx, edx
  0046ED2F  |.  024415 CB     |add     al, byte ptr [ebp+edx-35]
  0046ED33  |.  8B55 E0       |mov     edx, dword ptr [ebp-20]
  0046ED36  |.  884415 EF     |mov     byte ptr [ebp+edx-11], al
  0046ED3A  |.  FF45 E0       |inc     dword ptr [ebp-20]
  0046ED3D  |.  837D E0 09    |cmp     dword ptr [ebp-20], 9
  0046ED41  |.^ 75 DB         \jnz     short 0046ED1E
  0046ED43  |.  8A45 F2       mov     al, byte ptr [ebp-E]
  0046ED46  |.  3245 EF       xor     al, byte ptr [ebp-11]        ;Y(1)^Y(4)
  0046ED49  |.  8845 E6       mov     byte ptr [ebp-1A], al
  0046ED4C  |.  8A45 F0       mov     al, byte ptr [ebp-10]
  0046ED4F  |.  3245 F6       xor     al, byte ptr [ebp-A]
  0046ED52  |.  8845 E7       mov     byte ptr [ebp-19], al
  0046ED55  |.  8A45 F1       mov     al, byte ptr [ebp-F]
  0046ED58  |.  3245 F4       xor     al, byte ptr [ebp-C]
  0046ED5B  |.  8845 E8       mov     byte ptr [ebp-18], al
  0046ED5E  |.  8A45 F5       mov     al, byte ptr [ebp-B]
  0046ED61  |.  3245 F3       xor     al, byte ptr [ebp-D]
  0046ED64  |.  8845 E9       mov     byte ptr [ebp-17], al
  0046ED67      807D E6 A6    cmp     byte ptr [ebp-1A], 38      ;如果Y1^Y4的值是38,就比较下一个!
  0046ED6B  |.  75 1B         jnz     short 0046ED88
  0046ED6D      807D E7 26    cmp     byte ptr [ebp-19], 6E      ;比较Y2^Y8是否是6E
  0046ED71  |.  75 15         jnz     short 0046ED88
  0046ED73      807D E8 44    cmp     byte ptr [ebp-18], 4E      ;............
  0046ED77  |.  75 0F         jnz     short 0046ED88
  0046ED79      807D E9 4A    cmp     byte ptr [ebp-17], 1A      ;............
  0046ED7D  |.  75 09         jnz     short 0046ED88
  0046ED7F  |.  C745 F8 FFFFF>mov     dword ptr [ebp-8], -1
  0046ED86  |.  EB 05         jmp     short 0046ED8D
  0046ED88  |>  33C0          xor     eax, eax
  0046ED8A  |.  8945 F8       mov     dword ptr [ebp-8], eax
  0046ED8D  |>  33C0          xor     eax, eax
  0046ED8F  |.  5A            pop     edx
  0046ED90  |.  59            pop     ecx
  0046ED91  |.  59            pop     ecx
  0046ED92  |.  64:8910       mov     dword ptr fs:[eax], edx
  0046ED95  |.  68 AAED4600   push    0046EDAA
  0046ED9A  |>  8D45 FC       lea     eax, dword ptr [ebp-4]
  0046ED9D  |.  E8 DA54F9FF   call    0040427C
  0046EDA2  \.  C3            retn
  软件首先判断注册码是否为"0566838690673180""0386848021608060""1163659294813585"这几个中的一个,是的话就注册错误了,呵呵.(估计这三个是以前版本的注册码)
  而后,就是把我们输入的注册码字符转换成数字,注册码的偶数位左移4位加奇数位;
  注册码:X1,X2,X3,X4,X5,X6,X7,X8,X9,Xa,Xb,Xc,Xd,Xe,Xf,X10
  X2 << 4 + X1 = Y1
  X4 << 4 + X3 = Y2
  X6 << 4 + X5 = Y3
  X8 << 4 + X7 = Y4
  Xa << 4 + X9 = Y5
  Xc << 4 + Xb = Y6
  Xe << 4 + Xd = Y7
  X10<< 4 + Xf = Y8
  
  而后,再把
  Y1^Y4 == 38
  Y2^Y8 == 6E
  Y3^Y6 == 4E
  Y7^Y5 == 1A
  
  38, 6E, 4E, 1A 是固定的,只要上面的 Y^Y 得到的值是这几个数,就注册成功!
  
  注册码就不算了,看了都烦,呵呵!我们随便输个注册码,把38, 6E, 4E, 1A这几个数改成我们自己注册码算出的数,就OK了!
  
--------------------------------------------------------------------------------
【版权声明】: 本文原创于看雪技术论坛, 转载请注明作者并保持文章的完整, 谢谢!

                                                       2008年01月18日 11:53:20

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 1
支持
分享
最新回复 (12)
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
晕,这么简单啊。受教
2008-1-18 13:48
0
雪    币: 210
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
都说入门级的了,非常非常简单的!
2008-1-18 14:02
0
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
4
顶一个,我没找出注册流程,也没找到爆破点,就是把它DIY了一下,变成免费的拉-_-
2008-1-18 15:17
0
雪    币: 557
活跃值: (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
5
  不错。。学习,,
2008-1-18 16:45
0
雪    币: 485
活跃值: (12)
能力值: ( LV9,RANK:490 )
在线值:
发帖
回帖
粉丝
6
学习了,顶一下
2008-1-18 16:45
0
雪    币: 44229
活跃值: (19955)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
7
分析的不错。不过论坛对国产软件的版权算法部分的分析文章不再设精华了,建议下次可以用国外软件。
公告: 看雪论坛对于所涉及到目标软件的管理2007.10.15
2008-1-18 17:07
0
雪    币: 210
活跃值: (43)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8
谢谢看雪老大和大家点评,我一定再接再厉,下次找个老外的软件来分析.希望和大家共同进步!
2008-1-18 17:24
0
雪    币: 346
活跃值: (129)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
9
很好的教程!  
   我也只是达到爆破
2008-1-18 19:21
0
雪    币: 202
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
不错不错,学习
2008-1-18 19:39
0
雪    币: 243
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
哈哈。可怜的楼猪。。精华没骗到。。哈哈哈哈。。
2008-1-18 19:53
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
看不太懂啊.....  刚开始学习破解 要怎么入门??应该现破什么样的软件啊??还有要用什么工具
2008-1-18 23:10
0
雪    币: 189
活跃值: (111)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
老大已经没有该软件了,能发个备份吗?或者在出个教程,想学的时候资源没了。悲哀
2018-10-27 21:16
0
游客
登录 | 注册 方可回帖
返回
//