解析某游戏更新网站的配置文件(VB6.0)

一朋友发了个文件过来,是从http://www.mzdbt.com/torrents/dat/Today.dat下载的,问我能不能解析出其中的内容.

分析过程费了点时间,毕竟经验不足,头一次....

不过还好,总算勉强整出来了....

其大致结构如下:

[整个文件内包含记录的数量,4字节]
[固定的0D 00,2字节]

(某一文件块开始)
[当前块的字节数,2字节]
[BSTR] x N...(这里有多个BSTR,还有一些没看出作用的节,就直接用相应长度字节数组或变量占位)

(下一文件块开始)
[当前块的字节数,2字节]
[BSTR] x N...

(如此循环)

于是写出VB结构如下:

Private Type MyType
cbSize As Integer '整个结构所占内存大小
GameName As String '游戏名称
BTURL As String 'BT下载地址
GameType As String '游戏类型
NoneInt As Integer 'BSTR长度描述,丢弃
FileSize As Long '文件大小
RemStr As String '备注
UpdateFile As String '要更新的文件名(貌似)
DateAndSN As String '时间与序号
NoneByte6(5) As Byte '6个空字节
NoneBSTR_1 As String '未知BSTR
NoneByte3(2) As Byte '3个空字节
ExeName As String '主执行文件名
NoneBSTR_2 As String '未知BSTR
End Type


只要每个块的字节数对上了,就可以很简单地读取了:

Dim MyData() As MyType

Private Function GetTxt(ByVal FileName As String) As Long
Dim MaxNum As Long

On Error Resume Next

Open FileName For Binary As #1
Get #1, , MaxNum '得到文件总数,4字节
ReDim MyData(MaxNum - 1)
Get #1, Seek(1) + 2, MyData '跳两字节,是一个固定的13,00
Close #1
GetTxt = MaxNum
End Function


这样的话,MyData()里就是每一节的内容了.

最终界面如图:



整个工程在这里下载:

下载文件 点击下载此文件

PS:

极度BS一下瑞星!这份代码编译后竟然被报vbDownloader病毒....

评论: 2 | 引用: 0 | 查看次数: 1398
千里流云
千里流云[2008-07-04 12:28 PM | ]
病毒?很夸张的说....
游客123
游客123[2008-06-26 08:17 PM | ]
老马加油啊!