首页
论坛
课程
招聘
QQ聊天记录文件解密方式
2006-7-16 14:37 26752

QQ聊天记录文件解密方式

nbw 活跃值
24
2006-7-16 14:37
26752
QQ聊天记录文件解密方式

by nbw
4 NE365

    本文纯属虚构,如有雷同纯属巧合。
       
    昨天半夜被人拉起来弄了个QQ聊天记录查看器,可以查看本地QQ聊天纪录,这个东西不是修改QQ的本地登陆,而是直接解析本地聊天纪录文件,以前也见过,感觉大哥比较有含量。
       
    今天看了一下,主要看一下QQ本地聊天纪录文件的格式。当然本文主要说数据解密方法,真正的文件解析还比较麻烦。
       
    这里分析的QQ聊天记录读取器5.1,为了不让更多的人悲伤所以大家也别那这个软件破来破去了。我也不会破,我很单纯的。谁要是愿意继续分析建议直接分析QQ自带的聊天纪录察看器,有牛人给修改bug,分析起来应该也爽一些。汉

假设我们的MsgEx.db内有下面数据:

data[16] = 0x61 12 75 20 7A 8B 74 C6 05 9D 77 65 98 E3 73 B1 ; a.u z???e?s

共4个DWORD,其中后面2个DWORD作为密钥,前面2个DWORD是密文,用密钥计算出来一个key,该key与前面的2个DWORD异或便得到明文。

下面看看怎么处理上面的data[16]数组。

1.初次处理

        输入:
        05 9D 77 65 98 E3 73 B1
       
        处理:
        00D43E50           8A09          mov cl,byte ptr ds:[ecx]
        00D43E52           6A 08         push 8
        00D43E54           3008          xor byte ptr ds:[eax],cl
        00D43E56           42            inc edx
        00D43E57           5B            pop ebx
        00D43E58           3BD3          cmp edx,ebx
        00D43E5A         ^ 7C DF         jl short 00D43E3B
       
        得到结果:
        45 9C A6 1C 5C 43 8B 3A

2.计算密钥

00D43816           6A 10         push 10
00D43818           B8 909B77E3   mov eax,E3779B90                        ;这里初始化一个密钥常量
00D4381D           59            pop ecx                                                        ; ecx = 0x10 ,16轮运算

下面是循环,初始时候:
        ebx = 0x459CA61C
        edi = 0x5C438B3A
就是上面的那个结果,也就是输入数据

密钥key,共32位,4个DWORD,也就是循环中的[ebp-x]:
0012F248  C7 B3 FE C2 A5 6D C6 A1 CE E6 22 24 DF 2F BE 2D  浅?ロ啤捂"$??

00D4381E           8BD3          mov edx,ebx                                       
00D43820           8BF3          mov esi,ebx
00D43822           C1EA 05       shr edx,5
00D43825           0355 FC       add edx,dword ptr ss:[ebp-4]
00D43828           C1E6 04       shl esi,4
00D4382B           0375 F8       add esi,dword ptr ss:[ebp-8]
00D4382E           33D6          xor edx,esi
00D43830           8D3418        lea esi,dword ptr ds:[eax+ebx]
00D43833           33D6          xor edx,esi
00D43835           2BFA          sub edi,edx
00D43837           8BD7          mov edx,edi
00D43839           8BF7          mov esi,edi
00D4383B           C1EA 05       shr edx,5
00D4383E           0355 F4       add edx,dword ptr ss:[ebp-C]
00D43841           C1E6 04       shl esi,4
00D43844           0375 F0       add esi,dword ptr ss:[ebp-10]
00D43847           33D6          xor edx,esi
00D43849           8D3438        lea esi,dword ptr ds:[eax+edi]
00D4384C           33D6          xor edx,esi
00D4384E           05 4786C861   add eax,61C88647
00D43853           2BDA          sub ebx,edx
00D43855           49            dec ecx
00D43856         ^ 75 C6         jnz short 00D4381E

得到输出:
addr0[] = 0x0F 7B 55 00 77 81 54 E6

这个16轮运算很简单,可以google -> 本论坛 -> blowfish 斑竹的某回贴就弄到代码了。

3.解密

输入(就是最开始的16位):
addr1[] = 0x61 12 75 20 7A 8B 74 C6

00D43E11           8A0C08        mov cl,byte ptr ds:[eax+ecx]                                ;获得addr1[]
00D43E14           324C05 E4     xor cl,byte ptr ss:[ebp+eax-1C]                ;这里[ebp+eax-1C]指向上面得到的密钥addr0
00D43E18           FF45 14       inc dword ptr ss:[ebp+14]
00D43E1B           40            inc eax
00D43E1C           FF4D 18       dec dword ptr ss:[ebp+18]
00D43E1F           880A          mov byte ptr ds:[edx],cl                                                ;填写输出

得到输出:
00D41C49  6E 69 20 20 0D 0A 20 20                          ni  ..

然后进入下一个循环。下一轮解密还是处理4个DWORD,不过并不是继续从下面取,而是从上面的data[8]开始算。

就是说文件里不存在专门用来作为密钥的冗余数据,不过也没看到压缩,汉。

文中算法连接:
http://bbs.pediy.com//showthread.php?threadid=862&goto=nextoldest


看雪招聘平台创建简历并且简历完整度达到90%及以上可获得500看雪币~

收藏
点赞0
打赏
分享
最新回复 (26)
雪    币: 106
活跃值: 活跃值 (355)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
nbw 活跃值 24 2006-7-16 14:38
2
0
http://www.ngnsss.com/

软件下栽
雪    币: 113
活跃值: 活跃值 (11)
能力值: ( LV12,RANK:290 )
在线值:
发帖
回帖
粉丝
WAKU 活跃值 7 2006-7-16 22:10
3
0
顶,也研究过一阵msgex.db,没什么头绪
雪    币: 2266
活跃值: 活跃值 (486)
能力值: (RANK:990 )
在线值:
发帖
回帖
粉丝
CCDebuger 活跃值 24 2006-7-16 22:24
4
0
顶一下牛头,希望能继续。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ellison 活跃值 2006-7-16 23:50
5
0
这个软件又拆散了一对....
雪    币: 43812
活跃值: 活跃值 (164062)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
linhanshi 活跃值 2006-7-17 00:41
6
0
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ellison 活跃值 2006-7-17 02:20
7
0
楼主怕有更多的人悲伤,但俺觉得其实有时知道真相才是最好的,总比被骗的好

今晚拿到软件的时候,用两三分钟找到了注册表中记录使用次数的键值(最初级的破解,呵呵)
挺怪的,一下子没想明白它的算法,只知道0、1、2(如果是0,用一次以后,直接跳到2。再用一次则变4。到4就不可以用了。1则变3)可以而已,好象奇数和偶数的含义还不一样
呵呵,关注下面,看是否有某位大侠能接着楼主的思路弄下去(俺是跑题了的)
雪    币: 331
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
bfqyygy 活跃值 1 2006-7-17 16:29
8
0
厉害!!学习了
雪    币: 1613
活跃值: 活跃值 (33)
能力值: (RANK:1010 )
在线值:
发帖
回帖
粉丝
北极星2003 活跃值 25 2006-7-18 15:02
9
0
学习了
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
weiwei 活跃值 2006-7-19 17:06
10
0
类似的软件很多,本来不想说。但是这个软件开发者的人格有些问题,最近新出了了一个直接看QQ聊天记录的软件什么5.1 版本,号称是他自己写的。但是大家可以搜擞QQVIEWER.EXE这个软件,去年3月份有人就写出来了,ngnsss把人家的软件拿来修改了一下资源,将原来的闲云野鹤的邮件地址改成自己的就说是自己的。
唉人不能无耻到这种地步。
雪    币: 232
活跃值: 活跃值 (12)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
fffddd 活跃值 2006-7-19 18:14
11
0
又一个小辉诞生。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
fbj 活跃值 2006-8-10 13:44
12
0
我是菜鸟,看不懂!!!
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
yywd 活跃值 2006-8-10 16:18
13
0
看不懂!!!
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
koala 活跃值 3 2006-8-10 22:43
14
0
还有个什么查看大师V6.0跟5.1是太像了,好像是同一个人,不过两个都有注册机了
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
Dion_love 活跃值 2006-8-11 00:51
15
0
神奇的 nbw 你时间真多
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
Yleaf 活跃值 2006-8-11 11:16
16
0
什么啊????
雪    币: 214
活跃值: 活跃值 (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
auser 活跃值 2006-8-11 12:26
17
0
不知道对本地加密的记录效果如何?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
EMS 活跃值 2006-8-13 16:39
18
0
看看也好了,多一份见解了
雪    币: 200
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
vlit 活跃值 2006-8-18 17:58
19
0
最初由 weiwei 发布
类似的软件很多,本来不想说。但是这个软件开发者的人格有些问题,最近新出了了一个直接看QQ聊天记录的软件什么5.1 版本,号称是他自己写的。但是大家可以搜擞QQVIEWER.EXE这个软件,去年3月份有人就写出来了,ngnsss把人家的软件拿来修改了一下资源,将原来的闲云野鹤的邮件地址改成自己的就说是自己的。
唉人不能无耻到这种地步。


你的偶像是凯歌?
雪    币: 201
活跃值: 活跃值 (30)
能力值: ( LV12,RANK:250 )
在线值:
发帖
回帖
粉丝
kangaroo 活跃值 6 2006-8-19 08:20
20
0
好好查下看看到底是谁盗版谁的。
雪    币: 107
活跃值: 活跃值 (15)
能力值: ( LV12,RANK:770 )
在线值:
发帖
回帖
粉丝
qiweixue 活跃值 19 2006-8-21 16:48
21
0
弓虽...
看不下去....
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
weiwei 活跃值 2006-8-24 13:38
22
0
最初由 kangaroo 发布
好好查下看看到底是谁盗版谁的。


这是我给原来作者写信后地回复,看看人到底如何无耻。
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
weiwei 活跃值 2006-8-24 13:51
23
0
最初由 kangaroo 发布
好好查下看看到底是谁盗版谁的。


第一次上传图象不太会用,应该和上个帖子合起来。
可以看到原来程序使用Delphi写的,675kb,2005年5月12日。
他的程序运行时下面有“请不要偷看”等提示,运行后有三个菜单,其中关于中有一个光屁股小孩,将鼠标移到闲云野鹤上面出现邮箱地址,我就是用此邮箱和他联系的。因为我的QQ中也是闲云野鹤,和他同名,觉得有缘,所以问过一些问题,他人很好都做了解答。
可以比较一下现在程序界面大小风格布局以及菜单设置,说白了就是加了个密码控制而已来赚钱,人品呀。
雪    币: 4956
活跃值: 活跃值 (549)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
tydzjing 活跃值 2006-8-25 00:13
24
0
技术研究到没什么
如果用来窥探别人隐私就不好了
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mhsong 活跃值 2006-12-19 17:44
25
0
经过几天的奋斗,偶已经把文件解密跟踪出来了~~
游客
登录 | 注册 方可回帖
返回