首页
社区
课程
招聘
QQ聊天记录文件解密方式
发表于: 2006-7-16 14:37 30111

QQ聊天记录文件解密方式

nbw 活跃值
24
2006-7-16 14:37
30111
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


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (26)
雪    币: 339
活跃值: (1510)
能力值: ( LV13,RANK:970 )
在线值:
发帖
回帖
粉丝
2
http://www.ngnsss.com/

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

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


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


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


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