aytcgjb 发表于 2007-11-24 17:46:05

【破文标题】QQ聊天记录查看器 5.3 算法分析

【破文标题】QQ聊天记录查看器 5.3 算法分析
【破文作者】aytcgjb
【作者邮箱】[email protected]
【作者主页】A/N
【破解工具】peid0.94+OD
【破解平台】盗版XPsp2
【软件名称】QQ聊天记录查看器 5.3
【软件大小】
【原版下载】http://www.newhua.com/soft/47456.htm
【保护方式】注册码
【软件简介】
【破解声明】本文仅供研究学习,本人对因这篇文章而导致的一切后果,不承担任何法律责任。本文中的不足之处请各位多多
------------------------------------------------------------------------
【破解过程】
OD载入,F9运行程序

点查看,出现注册窗口,在注册窗口处,输入假码:123456789ABCDEF0,有错误提示,下bp MessageBoxA断点,找到关键点


0046EF62|?EC            IN AL,DX                                 ;I/O 命令
0046EF63|.83C4 F4       ADD ESP,-0C
0046EF66|.33C9          XOR ECX,ECX
0046EF68|.894D F4       MOV DWORD PTR SS:,ECX
0046EF6B|.8955 F8       MOV DWORD PTR SS:,EDX
0046EF6E|.8945 FC       MOV DWORD PTR SS:,EAX
0046EF71|.33C0          XOR EAX,EAX
0046EF73|.55            PUSH EBP
0046EF74|.68 1FF04600   PUSH QQ聊天记.0046F01F
0046EF79|.64:FF30       PUSH DWORD PTR FS:
0046EF7C|.64:8920       MOV DWORD PTR FS:,ESP
0046EF7F|.8D55 F4       LEA EDX,DWORD PTR SS:
0046EF82|.8B45 FC       MOV EAX,DWORD PTR SS:
0046EF85|.8B80 F0020000 MOV EAX,DWORD PTR DS:
0046EF8B|.E8 C495FCFF   CALL QQ聊天记.00438554
0046EF90|.8B55 F4       MOV EDX,DWORD PTR SS:
0046EF93|.B8 E89C4800   MOV EAX,QQ聊天记.00489CE8
0046EF98|.E8 3353F9FF   CALL QQ聊天记.004042D0
0046EF9D|.A1 E89C4800   MOV EAX,DWORD PTR DS:
0046EFA2|.E8 BDFCFFFF   CALL QQ聊天记.0046EC64                      ;关键的CALL
0046EFA7|.A3 EC9C4800   MOV DWORD PTR DS:,EAX
0046EFAC|.833D EC9C4800>CMP DWORD PTR DS:,0
0046EFB3|.74 34         JE SHORT QQ聊天记.0046EFE9                   ;关键跳转
0046EFB5|.6A 00         PUSH 0                                 



F7跟进关键CALL
0046EC64/$55            PUSH EBP
0046EC65|.8BEC          MOV EBP,ESP
0046EC67|.83C4 C8       ADD ESP,-38
0046EC6A|.8945 FC       MOV DWORD PTR SS:,EAX
0046EC6D|.8B45 FC       MOV EAX,DWORD PTR SS:
0046EC70|.E8 A75AF9FF   CALL QQ聊天记.0040471C
0046EC75|.33C0          XOR EAX,EAX
0046EC77|.55            PUSH EBP
0046EC78|.68 C9ED4600   PUSH QQ聊天记.0046EDC9
0046EC7D|.64:FF30       PUSH DWORD PTR FS:
0046EC80|.64:8920       MOV DWORD PTR FS:,ESP
0046EC83|.33C0          XOR EAX,EAX
0046EC85|.8945 F8       MOV DWORD PTR SS:,EAX
0046EC88|.8B45 FC       MOV EAX,DWORD PTR SS:
0046EC8B|.E8 A458F9FF   CALL QQ聊天记.00404534
0046EC90|.83F8 10       CMP EAX,10
0046EC93|.0F8C 1A010000 JL QQ聊天记.0046EDB3                        ;关键是否小于16位,小于跳向错误
0046EC99|.8B45 FC       MOV EAX,DWORD PTR SS:
0046EC9C|.E8 9358F9FF   CALL QQ聊天记.00404534
0046ECA1|.83F8 10       CMP EAX,10                               ;大于16位,也跳向错误
0046ECA4|.0F8F 09010000 JG QQ聊天记.0046EDB3
0046ECAA|.8B45 FC       MOV EAX,DWORD PTR SS:
0046ECAD|.BA E0ED4600   MOV EDX,QQ聊天记.0046EDE0                   ;ASCII "1163659294813585"
0046ECB2|.E8 C159F9FF   CALL QQ聊天记.00404678
0046ECB7|.0F84 F6000000 JE QQ聊天记.0046EDB3
0046ECBD|.8B45 FC       MOV EAX,DWORD PTR SS:
0046ECC0|.BA FCED4600   MOV EDX,QQ聊天记.0046EDFC                   ;ASCII "0386848021608060"
0046ECC5|.E8 AE59F9FF   CALL QQ聊天记.00404678
0046ECCA|.0F84 E3000000 JE QQ聊天记.0046EDB3
0046ECD0|.8B45 FC       MOV EAX,DWORD PTR SS:
0046ECD3|.BA 18EE4600   MOV EDX,QQ聊天记.0046EE18                   ;ASCII "8319E4005F00PYG0"
0046ECD8|.E8 9B59F9FF   CALL QQ聊天记.00404678
0046ECDD|.0F84 D0000000 JE QQ聊天记.0046EDB3
0046ECE3|.8B45 FC       MOV EAX,DWORD PTR SS:
0046ECE6|.BA 34EE4600   MOV EDX,QQ聊天记.0046EE34                   ;ASCII "0566838690673180"
0046ECEB|.E8 8859F9FF   CALL QQ聊天记.00404678
0046ECF0|.0F84 BD000000 JE QQ聊天记.0046EDB3
0046ECF6|.8B45 FC       MOV EAX,DWORD PTR SS:
0046ECF9|.BA 50EE4600   MOV EDX,QQ聊天记.0046EE50                   ;ASCII "0386748036909760"
0046ECFE|.E8 7559F9FF   CALL QQ聊天记.00404678
0046ED03|.0F84 AA000000 JE QQ聊天记.0046EDB3
0046ED09|.8B45 FC       MOV EAX,DWORD PTR SS:
0046ED0C|.BA 6CEE4600   MOV EDX,QQ聊天记.0046EE6C                   ;ASCII "sflsky7Dgh1A5i18"
0046ED11|.E8 6259F9FF   CALL QQ聊天记.00404678
0046ED16|.0F84 97000000 JE QQ聊天记.0046EDB3

出现的号码应该是在软件的黑名单

0046ED1C|.33C0          XOR EAX,EAX
0046ED1E|.8945 DC       MOV DWORD PTR SS:,EAX
0046ED21|>8B45 FC       /MOV EAX,DWORD PTR SS:
0046ED24|.8B55 DC       |MOV EDX,DWORD PTR SS:
0046ED27|.8A0410      |MOV AL,BYTE PTR DS:
0046ED2A|.E8 EDFEFFFF   |CALL QQ聊天记.0046EC1C
0046ED2F|.8B55 DC       |MOV EDX,DWORD PTR SS:
0046ED32|.884415 CB   |MOV BYTE PTR SS:,AL
0046ED36|.FF45 DC       |INC DWORD PTR SS:
0046ED39|.837D DC 10    |CMP DWORD PTR SS:,10
0046ED3D|.^ 75 E2         \JNZ SHORT QQ聊天记.0046ED21
0046ED3F|.33C0          XOR EAX,EAX
0046ED41|.8945 E0       MOV DWORD PTR SS:,EAX
0046ED44|>8B45 E0       /MOV EAX,DWORD PTR SS:
0046ED47|.03C0          |ADD EAX,EAX
0046ED49|.8A4405 CC   |MOV AL,BYTE PTR SS:
0046ED4D|.C1E0 04       |SHL EAX,4
0046ED50|.8B55 E0       |MOV EDX,DWORD PTR SS:
0046ED53|.03D2          |ADD EDX,EDX
0046ED55|.024415 CB   |ADD AL,BYTE PTR SS:
0046ED59|.8B55 E0       |MOV EDX,DWORD PTR SS:
0046ED5C|.884415 EF   |MOV BYTE PTR SS:,AL
0046ED60|.FF45 E0       |INC DWORD PTR SS:
0046ED63|.837D E0 09    |CMP DWORD PTR SS:,9
0046ED67|.^ 75 DB         \JNZ SHORT QQ聊天记.0046ED44

上面的循环把假码逆序放入到堆栈中,以下是关键的计算

逆序后的字符串 0FEDCBA987654321

0046ED69|.8A45 F2       MOV AL,BYTE PTR SS:
0046ED6C|.3245 EF       XOR AL,BYTE PTR SS:

87-》21进行异或

0046ED6F|.8845 E6       MOV BYTE PTR SS:,AL
0046ED72|.8A45 F0       MOV AL,BYTE PTR SS:
0046ED75|.3245 F6       XOR AL,BYTE PTR SS:

43-》0F进行异或

0046ED78|.8845 E7       MOV BYTE PTR SS:,AL
0046ED7B|.8A45 F1       MOV AL,BYTE PTR SS:
0046ED7E|.3245 F4       XOR AL,BYTE PTR SS:

65-》CB进行异或

0046ED81|.8845 E8       MOV BYTE PTR SS:,AL
0046ED84|.8A45 F5       MOV AL,BYTE PTR SS:
0046ED87|.3245 F3       XOR AL,BYTE PTR SS:

ED-》A9进行异或

0046ED8A|.8845 E9       MOV BYTE PTR SS:,AL

0046ED8D|.807D E6 38    CMP BYTE PTR SS:,38   第一次异或后的结果是否等于38,不等于38就跳向错误
0046ED91|.75 1B         JNZ SHORT QQ聊天记.0046EDAE
0046ED93|.807D E7 6E    CMP BYTE PTR SS:,6E   第二次异或后的结果是否等于38,不等于6E就跳向错误
0046ED97|.75 15         JNZ SHORT QQ聊天记.0046EDAE
0046ED99|.807D E8 4E    CMP BYTE PTR SS:,4E    第三次异或后的结果是否等于38,不等于4E就跳向错误

0046ED9D|.75 0F         JNZ SHORT QQ聊天记.0046EDAE
0046ED9F|.807D E9 1A    CMP BYTE PTR SS:,1A   第四次异或后的结果是否等于38,不等于1A就跳向错误

0046EDA3|.75 09         JNZ SHORT QQ聊天记.0046EDAE
0046EDA5|.C745 F8 FFFFF>MOV DWORD PTR SS:,-1
0046EDAC|.EB 05         JMP SHORT QQ聊天记.0046EDB3
0046EDAE|>33C0          XOR EAX,EAX
0046EDB0|.8945 F8       MOV DWORD PTR SS:,EAX
0046EDB3|>33C0          XOR EAX,EAX
0046EDB5|.5A            POP EDX
0046EDB6|.59            POP ECX
0046EDB7|.59            POP ECX
0046EDB8|.64:8910       MOV DWORD PTR FS:,EDX
0046EDBB|.68 D0ED4600   PUSH QQ聊天记.0046EDD0
0046EDC0|>8D45 FC       LEA EAX,DWORD PTR SS:
0046EDC3|.E8 B454F9FF   CALL QQ聊天记.0040427C
0046EDC8\.C3            RETN
0046EDC9   .^ E9 D64EF9FF   JMP QQ聊天记.00403CA4
0046EDCE   .^ EB F0         JMP SHORT QQ聊天记.0046EDC0
0046EDD0   .8B45 F8       MOV EAX,DWORD PTR SS:
0046EDD3   .8BE5          MOV ESP,EBP
0046EDD5   .5D            POP EBP
0046EDD6   .C3            RETN

算法分析结果:

1、注册码必须是16位

3、10、9位和16、15进行异或 结果必须等于38
   2、1 位和14、13进行异或 结果必须等于6E
   6、5 位和12、11进行异或 结果必须等于4E
   4、3 位和8、4 进行异或 结果必须等于1A

得到数 就是注册码

我得到的注册码为:FB1658787FBCDEF0


------------------------------------------------------------------------
【破解总结】本人水平有限,希望高手写个注册机出来。
------------------------------------------------------------------------
【版权声明】转载请注明作者并保持文章的完整, 谢谢!

wulijin 发表于 2007-12-31 10:46:19

终于找到破文了 昨天自己弄了看看 没成功
页: [1]
查看完整版本: 【破文标题】QQ聊天记录查看器 5.3 算法分析