首页
社区
课程
招聘
[旧帖] [原创]QVOD HTTP传输数据包结构逆向分析 0.00雪花
发表于: 2011-9-18 21:09 4345

[旧帖] [原创]QVOD HTTP传输数据包结构逆向分析 0.00雪花

2011-9-18 21:09
4345

通过在网络选项卡中选上仅以HTTP协议传输数据来达到目的。这样子可以方便地观察整个过程。

客户端发送连接请求:
        POST /service HTTP/1.1
        Accept: */*
        Cache-Control: no-cache
        Connection: Keep-Alive
        Content-Length: 68
        Host: 114.246.26.34:8080
        User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)
        .QVOD protocol..............Md..a.>...4..`}...'U.5..0057BB5855719946  -------数据包data部分

服务端响应:
        Accept: */*
        Cache-Control: no-cache
        Connection: Keep-Alive
        Content-Length: 68
        Host: 211.101.48.70:2596
        User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;)
        .QVOD protocol..............Md..a.>...4..`}...'UQVOD0066E67A1F1C15F6 --------数据包data部分

HTTP数据包详细内容
                                                              13 51 56 4f .QVO
        44 20 70 72 6f 74 6f 63  6f 6c 00 00 00 00 00 00 D protoc ol......
        00 00 00 00 00 00 00 00  4d 64 ac 80 61 e2 3e 98 ........ Md..a.>.
        a7 90 34 01 82 60 7d a0  1e 80 27 55 f5 35 ee a7 ..4..`}. ..'U.5..
        30 30 35 37 42 42 35 38  35 35 37 31 39 39 34 36 0057BB58 55719946

    从客户端发送的HTTP数据包详细内容来看。有一些固定字段,但有些部分存在不确定性。可以先对这个协议数据结构进行猜测。通过大量的对比后可以从中发现一些比较有特点的地方,通过总结特点可以发现一些规律。经过对比后先假设这个发送数据包的协议结构如下所示:
struct  httpqvod
{
   short int fixed;//always 0x13
   char p2ptype[];
   char unknow[32];
   char unknow[20];
}
选择OD和IDA来逆向分析找出协议结构。
因为我们要尝试去探索发送数据包的结构,由于使用HTTP传输,所以是TCP连接,使用的是send函数。
使用OD attach QvodTerminal.exe进程,OD成功断在了send函数的地方

单步运行几步,跳出系统函数部分。找到调用send的地方。

通过使用IDA加载QvodTerminal.exe分析数据来源。分析函数调用过程

不断地回朔上去,使用OD动态分析找到数据包的内存中变化过程。

这个过程很容易发现004119B7处通过调用call dword ptr[edx+8]来达到跳转的目的

下面通过IDA加载这一部分进行分析,可以发现如下所示

通过mov [esp+54h+var_44],13h来赋值0x13,由此可以得知0x13为固定字节。然后通过的赋值可以判断来下面是协议标识部分的赋值,即是QVOD Protocol或者BitTorrent protocolex是协议标识。
接下来如下所示进行赋值一堆数据,暂时还是标志为unknow[32].然后通过赋值mov esi,offset dword_485038来对赋值一串序列号。

这是有20位的类似UID的一串字符,标识为char client-uid[20]。
所以整个数据结构可以得出为
struct  httpqvod
{
   short int fixed;//always 0x13
   char p2ptype[];//固定值,QVOD Protocol 或者 BitTorrent protocolex
   char unknow[32];
   char client-uid[20];//包含一些版本、哈希值等信息
}

参考书籍:《IDA.Pro代码破解揭秘》第七章
QVOD HTTP数据包结构分析.doc

谢谢各位


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 6
支持
分享
最新回复 (14)
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
没看到神马东西。。
2011-9-20 15:51
0
雪    币: 43
活跃值: (251)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
要激活码可以直接说,别这么水啊
2011-9-20 16:10
0
雪    币: 138
活跃值: (470)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
传输数据包结构 三下两下就这样分析啦? 不过瘾 哈哈
2011-9-21 08:30
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
小弟还是新手,没有入门,看不懂
2011-9-21 08:54
0
雪    币: 102
活跃值: (85)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
6
对不起,没有贴图导致的。已经更改,谢谢。
2011-9-21 09:22
0
雪    币: 102
活跃值: (85)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
7
不好意思,没有贴图,下面放了文档,以为会去下载文档看,我错了,已经把图都贴上了,谢谢!

大牛请飘过,这是超菜的一篇协议分析文章

特别说明,目的是要激活码,但是是为了更好地和大家一起学习交流。仅此而已,谢谢!(看雪上的文章都是可以看的)
2011-9-21 09:27
0
雪    币: 343
活跃值: (40)
能力值: ( LV5,RANK:60 )
在线值:
发帖
回帖
粉丝
8
不多说,楼主懂的,支持悚水原创!
2011-9-21 10:21
0
雪    币: 27
活跃值: (127)
能力值: ( LV8,RANK:120 )
在线值:
发帖
回帖
粉丝
9
学习一下看看..
2011-9-21 11:16
0
雪    币: 218
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
表示不是很懂。。。但是精神可嘉,顶の。。。。
2011-9-21 11:24
0
雪    币: 375
活跃值: (201)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
不错,值得鼓励,希望早日转正!
2011-9-21 13:12
0
雪    币: 413
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
新手入门,学习下先
2011-10-9 15:15
0
雪    币: 24
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
刚学中,看不懂,不过还是谢谢楼主分享
2013-3-15 15:28
0
雪    币: 8
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
支持原创,协议分析学习中
2013-10-28 16:24
0
雪    币: 3
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
学习了!!!
2013-10-29 09:29
0
游客
登录 | 注册 方可回帖
返回
//