TA的每日心情 | 无聊 2018-2-10 09:25 |
---|
签到天数: 119 天 [LV.6]常住居民II
|
【破文标题】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:[EBP-C],ECX
0046EF6B |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX
0046EF6E |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX
0046EF71 |. 33C0 XOR EAX,EAX
0046EF73 |. 55 PUSH EBP
0046EF74 |. 68 1FF04600 PUSH QQ聊天记.0046F01F
0046EF79 |. 64:FF30 PUSH DWORD PTR FS:[EAX]
0046EF7C |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0046EF7F |. 8D55 F4 LEA EDX,DWORD PTR SS:[EBP-C]
0046EF82 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0046EF85 |. 8B80 F0020000 MOV EAX,DWORD PTR DS:[EAX+2F0]
0046EF8B |. E8 C495FCFF CALL QQ聊天记.00438554
0046EF90 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C]
0046EF93 |. B8 E89C4800 MOV EAX,QQ聊天记.00489CE8
0046EF98 |. E8 3353F9FF CALL QQ聊天记.004042D0
0046EF9D |. A1 E89C4800 MOV EAX,DWORD PTR DS:[489CE8]
0046EFA2 |. E8 BDFCFFFF CALL QQ聊天记.0046EC64 ; 关键的CALL
0046EFA7 |. A3 EC9C4800 MOV DWORD PTR DS:[489CEC],EAX
0046EFAC |. 833D EC9C4800>CMP DWORD PTR DS:[489CEC],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:[EBP-4],EAX
0046EC6D |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
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:[EAX]
0046EC80 |. 64:8920 MOV DWORD PTR FS:[EAX],ESP
0046EC83 |. 33C0 XOR EAX,EAX
0046EC85 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],EAX
0046EC88 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
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:[EBP-4]
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:[EBP-4]
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:[EBP-4]
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:[EBP-4]
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:[EBP-4]
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:[EBP-4]
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:[EBP-4]
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:[EBP-24],EAX
0046ED21 |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]
0046ED24 |. 8B55 DC |MOV EDX,DWORD PTR SS:[EBP-24]
0046ED27 |. 8A0410 |MOV AL,BYTE PTR DS:[EAX+EDX]
0046ED2A |. E8 EDFEFFFF |CALL QQ聊天记.0046EC1C
0046ED2F |. 8B55 DC |MOV EDX,DWORD PTR SS:[EBP-24]
0046ED32 |. 884415 CB |MOV BYTE PTR SS:[EBP+EDX-35],AL
0046ED36 |. FF45 DC |INC DWORD PTR SS:[EBP-24]
0046ED39 |. 837D DC 10 |CMP DWORD PTR SS:[EBP-24],10
0046ED3D |.^ 75 E2 \JNZ SHORT QQ聊天记.0046ED21
0046ED3F |. 33C0 XOR EAX,EAX
0046ED41 |. 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX
0046ED44 |> 8B45 E0 /MOV EAX,DWORD PTR SS:[EBP-20]
0046ED47 |. 03C0 |ADD EAX,EAX
0046ED49 |. 8A4405 CC |MOV AL,BYTE PTR SS:[EBP+EAX-34]
0046ED4D |. C1E0 04 |SHL EAX,4
0046ED50 |. 8B55 E0 |MOV EDX,DWORD PTR SS:[EBP-20]
0046ED53 |. 03D2 |ADD EDX,EDX
0046ED55 |. 024415 CB |ADD AL,BYTE PTR SS:[EBP+EDX-35]
0046ED59 |. 8B55 E0 |MOV EDX,DWORD PTR SS:[EBP-20]
0046ED5C |. 884415 EF |MOV BYTE PTR SS:[EBP+EDX-11],AL
0046ED60 |. FF45 E0 |INC DWORD PTR SS:[EBP-20]
0046ED63 |. 837D E0 09 |CMP DWORD PTR SS:[EBP-20],9
0046ED67 |.^ 75 DB \JNZ SHORT QQ聊天记.0046ED44
上面的循环把假码逆序放入到堆栈中,以下是关键的计算
逆序后的字符串 0FEDCBA987654321
0046ED69 |. 8A45 F2 MOV AL,BYTE PTR SS:[EBP-E]
0046ED6C |. 3245 EF XOR AL,BYTE PTR SS:[EBP-11]
87-》21进行异或
0046ED6F |. 8845 E6 MOV BYTE PTR SS:[EBP-1A],AL
0046ED72 |. 8A45 F0 MOV AL,BYTE PTR SS:[EBP-10]
0046ED75 |. 3245 F6 XOR AL,BYTE PTR SS:[EBP-A]
43-》0F进行异或
0046ED78 |. 8845 E7 MOV BYTE PTR SS:[EBP-19],AL
0046ED7B |. 8A45 F1 MOV AL,BYTE PTR SS:[EBP-F]
0046ED7E |. 3245 F4 XOR AL,BYTE PTR SS:[EBP-C]
65-》CB进行异或
0046ED81 |. 8845 E8 MOV BYTE PTR SS:[EBP-18],AL
0046ED84 |. 8A45 F5 MOV AL,BYTE PTR SS:[EBP-B]
0046ED87 |. 3245 F3 XOR AL,BYTE PTR SS:[EBP-D]
ED-》A9进行异或
0046ED8A |. 8845 E9 MOV BYTE PTR SS:[EBP-17],AL
0046ED8D |. 807D E6 38 CMP BYTE PTR SS:[EBP-1A],38 第一次异或后的结果是否等于38,不等于38就跳向错误
0046ED91 |. 75 1B JNZ SHORT QQ聊天记.0046EDAE
0046ED93 |. 807D E7 6E CMP BYTE PTR SS:[EBP-19],6E 第二次异或后的结果是否等于38,不等于6E就跳向错误
0046ED97 |. 75 15 JNZ SHORT QQ聊天记.0046EDAE
0046ED99 |. 807D E8 4E CMP BYTE PTR SS:[EBP-18],4E 第三次异或后的结果是否等于38,不等于4E就跳向错误
0046ED9D |. 75 0F JNZ SHORT QQ聊天记.0046EDAE
0046ED9F |. 807D E9 1A CMP BYTE PTR SS:[EBP-17],1A 第四次异或后的结果是否等于38,不等于1A就跳向错误
0046EDA3 |. 75 09 JNZ SHORT QQ聊天记.0046EDAE
0046EDA5 |. C745 F8 FFFFF>MOV DWORD PTR SS:[EBP-8],-1
0046EDAC |. EB 05 JMP SHORT QQ聊天记.0046EDB3
0046EDAE |> 33C0 XOR EAX,EAX
0046EDB0 |. 8945 F8 MOV DWORD PTR SS:[EBP-8],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:[EAX],EDX
0046EDBB |. 68 D0ED4600 PUSH QQ聊天记.0046EDD0
0046EDC0 |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]
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:[EBP-8]
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
------------------------------------------------------------------------
【破解总结】本人水平有限,希望高手写个注册机出来。
------------------------------------------------------------------------
【版权声明】转载请注明作者并保持文章的完整, 谢谢! |
|