找回密码
 注册
搜索
热搜: 回贴

QQ聊天记录察看器 5.2算法分析 N个注册码,QQ,逆向工程技术

2010-1-30 18:35| 发布者: admin| 查看: 200| 评论: 0|原作者: 墨元


QQ聊天记录察看器 5.2算法分析 N个注册码,QQ,逆向工程技术
2008年06月24日 星期二 下午 02:08
【文章标题】: QQ聊天记录察看器 5.2算法分析

【文章作者】: 网游难民

【作者主页】: www.chinapyg.com

【软件名称】: QQ聊天记录察看器 5.2

【软件大小】: 648K

【下载地址】: 华军

【加壳方式】: 无

【保护方式】: 注册码,重启验证

【编写语言】: Borland Delphi 6.0 - 7.0

【使用工具】: PEID,OD

【操作平台】: XP SP2

【软件介绍】: 这个东西就不用偶介绍了吧??

--------------------------------------------------------------------------------

【详细过程】

用OD载入,查找字符串,下断,偶就不多说了~



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 SS:[EBP-C],ECX

0046EF0F |. 8955 F8 MOV DWORD PTR SS:[EBP-8],EDX

0046EF12 |. 8945 FC MOV DWORD PTR SS:[EBP-4],EAX

0046EF15 |. 33C0 XOR EAX,EAX

0046EF17 |. 55 PUSH EBP

0046EF18 |. 68 C3EF4600 PUSH QQ聊天记.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 SS:[EBP-C]

0046EF26 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046EF29 |. 8B80 F0020000 MOV EAX,DWORD PTR DS:[EAX 2F0]

0046EF2F |. E8 2096FCFF CALL QQ聊天记.00438554

0046EF34 |. 8B55 F4 MOV EDX,DWORD PTR SS:[EBP-C] ; 注册码放入EDX~

0046EF37 |. B8 E89C4800 MOV EAX,QQ聊天记.00489CE8

0046EF3C |. E8 8F53F9FF CALL QQ聊天记.004042D0

0046EF41 |. A1 E89C4800 MOV EAX,DWORD PTR DS:[489CE8]

0046EF46 |. E8 19FDFFFF CALL QQ聊天记.0046EC64 ; 算法CALL,跟进~~

0046EF4B A3 EC9C4800 MOV DWORD PTR DS:[489CEC],EAX

0046EF50 833D EC9C4800>CMP DWORD PTR DS:[489CEC],0

0046EF57 |. 74 34 JE SHORT QQ聊天记.0046EF8D ; 关键跳转~

0046EF59 |. 6A 00 PUSH 0

0046EF5B |. A1 E89C4800 MOV EAX,DWORD PTR DS:[489CE8]

0046EF60 |. E8 C757F9FF CALL QQ聊天记.0040472C

0046EF65 |. 50 PUSH EAX

0046EF66 |. 68 D0EF4600 PUSH QQ聊天记.0046EFD0 ; 注册成功

0046EF6B |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046EF6E |. E8 61FCFCFF CALL QQ聊天记.0043EBD4

0046EF73 |. 50 PUSH EAX ; |hOwner

0046EF74 |. E8 2F80F9FF CALL ; \MessageBoxA

0046EF79 |. A1 E89C4800 MOV EAX,DWORD PTR DS:[489CE8]

0046EF7E |. E8 A1FEFFFF CALL QQ聊天记.0046EE24

0046EF83 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046EF86 |. E8 615DFEFF CALL QQ聊天记.00454CEC

0046EF8B |. EB 20 JMP SHORT QQ聊天记.0046EFAD

0046EF8D |> 6A 00 PUSH 0

0046EF8F |. A1 E89C4800 MOV EAX,DWORD PTR DS:[489CE8]

0046EF94 |. E8 9357F9FF CALL QQ聊天记.0040472C

0046EF99 |. 50 PUSH EAX

0046EF9A |. 68 DCEF4600 PUSH QQ聊天记.0046EFDC ; 注册号无效

0046EF9F |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046EFA2 |. E8 2DFCFCFF CALL QQ聊天记.0043EBD4

0046EFA7 |. 50 PUSH EAX ; |hOwner



跟进上面的算法CALL:

0046EC64 /$Content$nbsp; 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 A3ED4600 PUSH QQ聊天记.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 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 ; 注册码位数和10h比较,小于就跳向失败~

0046EC93 |. 0F8C F4000000 JL QQ聊天记.0046ED8D

0046EC99 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 注册码放入EAX~~

0046EC9C |. E8 9358F9FF CALL QQ聊天记.00404534

0046ECA1 |. 83F8 10 CMP EAX,10 ; 注册码位数和10h比较,大于就跳向失败~

0046ECA4 |. 0F8F E3000000 JG QQ聊天记.0046ED8D

0046ECAA |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4] ; 注册码放入EAX~~

0046ECAD |. BA BCED4600 MOV EDX,QQ聊天记.0046EDBC ; 1163659294813585

0046ECB2 |. E8 C159F9FF CALL QQ聊天记.00404678

0046ECB7 |. 0F84 D0000000 JE QQ聊天记.0046ED8D

0046ECBD |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046ECC0 |. BA D8ED4600 MOV EDX,QQ聊天记.0046EDD8 ; 0386848021608060

0046ECC5 |. E8 AE59F9FF CALL QQ聊天记.00404678

0046ECCA |. 0F84 BD000000 JE QQ聊天记.0046ED8D

0046ECD0 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046ECD3 |. BA F4ED4600 MOV EDX,QQ聊天记.0046EDF4 ; 8319e4005f00pyg0

0046ECD8 |. E8 9B59F9FF CALL QQ聊天记.00404678

0046ECDD |. 0F84 AA000000 JE QQ聊天记.0046ED8D

0046ECE3 |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]

0046ECE6 |. BA 10EE4600 MOV EDX,QQ聊天记.0046EE10 ; 0566838690673180

0046ECEB |. E8 8859F9FF CALL QQ聊天记.00404678

0046ECF0 |. 0F84 97000000 JE QQ聊天记.0046ED8D ; 上面四个黑名单啊,跟着跳过去就完蛋拉~~

0046ECF6 |. 33C0 XOR EAX,EAX

0046ECF8 |. 8945 DC MOV DWORD PTR SS:[EBP-24],EAX

0046ECFB |> 8B45 FC /MOV EAX,DWORD PTR SS:[EBP-4]

0046ECFE |. 8B55 DC |MOV EDX,DWORD PTR SS:[EBP-24]

0046ED01 |. 8A0410 |MOV AL,BYTE PTR DS:[EAX EDX]

0046ED04 |. E8 13FFFFFF |CALL QQ聊天记.0046EC1C ; 算法CALL(1)

0046ED09 |. 8B55 DC |MOV EDX,DWORD PTR SS:[EBP-24]

0046ED0C |. 884415 CB |MOV BYTE PTR SS:[EBP EDX-35],AL

0046ED10 |. FF45 DC |INC DWORD PTR SS:[EBP-24]

0046ED13 |. 837D DC 10 |CMP DWORD PTR SS:[EBP-24],10

0046ED17 |.^ 75 E2 \JNZ SHORT QQ聊天记.0046ECFB ; 循环(1),得到注册码加密后的字符串

0046ED19 |. 33C0 XOR EAX,EAX

0046ED1B |. 8945 E0 MOV DWORD PTR SS:[EBP-20],EAX

0046ED1E |> 8B45 E0 /MOV EAX,DWORD PTR SS:[EBP-20]

0046ED21 |. 03C0 |ADD EAX,EAX

0046ED23 |. 8A4405 CC |MOV AL,BYTE PTR SS:[EBP EAX-34]

0046ED27 |. C1E0 04 |SHL EAX,4

0046ED2A |. 8B55 E0 |MOV EDX,DWORD PTR SS:[EBP-20]

0046ED2D |. 03D2 |ADD EDX,EDX

0046ED2F |. 024415 CB |ADD AL,BYTE PTR SS:[EBP EDX-35]

0046ED33 |. 8B55 E0 |MOV EDX,DWORD PTR SS:[EBP-20]

0046ED36 |. 884415 EF |MOV BYTE PTR SS:[EBP EDX-11],AL

0046ED3A |. FF45 E0 |INC DWORD PTR SS:[EBP-20]

0046ED3D |. 837D E0 09 |CMP DWORD PTR SS:[EBP-20],9

0046ED41 |.^ 75 DB \JNZ SHORT QQ聊天记.0046ED1E ; 循环(2),把循环(1)中的字符串分为8组

0046ED43 |. 8A45 F2 MOV AL,BYTE PTR SS:[EBP-E]

0046ED46 |. 3245 EF XOR AL,BYTE PTR SS:[EBP-11]

0046ED49 |. 8845 E6 MOV BYTE PTR SS:[EBP-1A],AL ; 第一组和第二组逻辑异或运算,结果放在SS:[EBP-1A]中~~

0046ED4C |. 8A45 F0 MOV AL,BYTE PTR SS:[EBP-10]

0046ED4F |. 3245 F6 XOR AL,BYTE PTR SS:[EBP-A]

0046ED52 |. 8845 E7 MOV BYTE PTR SS:[EBP-19],AL ; 第二组和第八组逻辑异或运算,结果放在SS:[EBP-19]中~~

0046ED55 |. 8A45 F1 MOV AL,BYTE PTR SS:[EBP-F]

0046ED58 |. 3245 F4 XOR AL,BYTE PTR SS:[EBP-C]

0046ED5B |. 8845 E8 MOV BYTE PTR SS:[EBP-18],AL ; 第三组和第六组逻辑异或运算,结果放在SS:[EBP-18]中~~

0046ED5E |. 8A45 F5 MOV AL,BYTE PTR SS:[EBP-B]

0046ED61 |. 3245 F3 XOR AL,BYTE PTR SS:[EBP-D]

0046ED64 |. 8845 E9 MOV BYTE PTR SS:[EBP-17],AL ; 第五组和第七组逻辑异或运算,结果放在SS:[EBP-17]中~~

0046ED67 |. 807D E6 38 CMP BYTE PTR SS:[EBP-1A],38

0046ED6B |. 75 1B JNZ SHORT QQ聊天记.0046ED88 ; 检测SS:[EBP-1A]中的数据是不是38,不是则注册失败

0046ED6D |. 807D E7 6E CMP BYTE PTR SS:[EBP-19],6E

0046ED71 |. 75 15 JNZ SHORT QQ聊天记.0046ED88 ; 检测SS:[EBP-19]中的数据是不是6E,不是则注册失败

0046ED73 |. 807D E8 4E CMP BYTE PTR SS:[EBP-18],4E

0046ED77 |. 75 0F JNZ SHORT QQ聊天记.0046ED88 ; 检测SS:[EBP-18]中的数据是不是4E,不是则注册失败

0046ED79 |. 807D E9 1A CMP BYTE PTR SS:[EBP-17],1A

0046ED7D |. 75 09 JNZ SHORT QQ聊天记.0046ED88 ; 检测SS:[EBP-17]中的数据是不是1A,不是则注册失败

0046ED7F |. C745 F8 FFFFF>MOV DWORD PTR SS:[EBP-8],-1

0046ED86 |. EB 05 JMP SHORT QQ聊天记.0046ED8D

0046ED88 |> 33C0 XOR EAX,EAX

0046ED8A |. 8945 F8 MOV DWORD PTR SS:[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 QQ聊天记.0046EDAA

0046ED9A |> 8D45 FC LEA EAX,DWORD PTR SS:[EBP-4]

0046ED9D |. E8 DA54F9FF CALL QQ聊天记.0040427C

0046EDA2 \. C3 RETN



上面循环(1)是取得注册码经过算法CALL(1)加密后的字符串;

循环CALL(2)是将经过循环(1)加密后的字符串两两分组,然后倒排,例如字符串12345678经过循环(2)后就变为:21 43 65 87

算法CALL(1):

0046EC1C /$Content$nbsp; 55 PUSH EBP

0046EC1D |. 8BEC MOV EBP,ESP

0046EC1F |. 51 PUSH ECX

0046EC20 |. 8845 FF MOV BYTE PTR SS:[EBP-1],AL

0046EC23 |. 807D FF 30 CMP BYTE PTR SS:[EBP-1],30

0046EC27 |. 72 10 JB SHORT QQ聊天记.0046EC39

0046EC29 |. 807D FF 39 CMP BYTE PTR SS:[EBP-1],39

0046EC2D |. 77 0A JA SHORT QQ聊天记.0046EC39 ; 上面两个跳转检查是否数字

0046EC2F |. 8A45 FF MOV AL,BYTE PTR SS:[EBP-1]

0046EC32 |. 2C 30 SUB AL,30 ; 如果是数字就减去30

0046EC34 |. 8845 FD MOV BYTE PTR SS:[EBP-3],AL

0046EC37 |. EB 1C JMP SHORT QQ聊天记.0046EC55

0046EC39 |> 807D FF 41 CMP BYTE PTR SS:[EBP-1],41

0046EC3D |. 72 12 JB SHORT QQ聊天记.0046EC51

0046EC3F |. 807D FF 46 CMP BYTE PTR SS:[EBP-1],46

0046EC43 |. 77 0C JA SHORT QQ聊天记.0046EC51 ; 上面检查注册码是否A-F

0046EC45 |. 8A45 FF MOV AL,BYTE PTR SS:[EBP-1]

0046EC48 |. 2C 41 SUB AL,41 ; 减去41

0046EC4A |. 04 0A ADD AL,0A ; 加上0A

0046EC4C |. 8845 FD MOV BYTE PTR SS:[EBP-3],AL

0046EC4F |. EB 04 JMP SHORT QQ聊天记.0046EC55

0046EC51 |> C645 FD FF MOV BYTE PTR SS:[EBP-3],0FF

0046EC55 |> 8A45 FD MOV AL,BYTE PTR SS:[EBP-3]

0046EC58 |. 8845 FE MOV BYTE PTR SS:[EBP-2],AL

0046EC5B |. 8A45 FE MOV AL,BYTE PTR SS:[EBP-2]

0046EC5E |. 59 POP ECX

0046EC5F |. 5D POP EBP

0046EC60 \. C3 RETN



这里对输入的注册码加密;

注册码如果是0-9,则注册码的ASCII码减30;如果是A-F,则注册码的ASCII码减41再加0A;如果是其他字符,则为FF。



--------------------------------------------------------------------------------

【经验总结】

先对注册码加密:

注册码如果是0-9,则注册码的ASCII码减30;如果是A-F,则注册码的ASCII码减41再加0A;如果是其他字符,则为FF。

加密后的字符串两两分组,然后倒排,例如字符串12345678经过循环(2)后就变为:21 43 65 87

第一组和第二组逻辑异或运算,结果必须是38;

第二组和第八组逻辑异或运算,结果必须是6E;

第三组和第六组逻辑异或运算,结果必须是4E;

第五组和第七组逻辑异或运算,结果必须是1A。

另外排除四个作者排除的黑名单:

1163659294813585

0386848021608060

8319e4005f00pyg0

0566838690673180



下面给大家个超级注册码:

******7D**1A5*18



其中的*号可以换成除0-9,A-F之外的任何字符,

而且其中的第一位和第七位,第二位和第八位,第三位和第十五位,第四位和第十六位,第五位和第十一位,第六位和第十

二位,第九位和第十三位可以互换。

这次这么多的注册码够大家用一段时间了吧~~呵呵~~



--------------------------------------------------------------------------------

【版权声明】: 菜鸟初学算法, 失误之处敬请诸位大侠赐教,转载请注明作者并保持文章的完整, 谢谢!


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:38 , Processed in 0.236842 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部