热点推荐

小喇叭+ 发布

01-16 02:17
01-16 02:04
01-13 17:30
查看: 752|回复: 0

[脚本示例] 再度深入解剖“传奇”私服客户端之迷

[复制链接]
avatar

签到天数: 350 天

[LV.8]以坛为家I

7651

主题

255

回帖

31万

积分

司徒主管

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

UID
1
司徒币
260195
传世币
3000
元宝
0
在线时间
266 小时

最佳新人灌水之王

QQ
online_admin 发表于 2022-5-4 21:30:19 | 显示全部楼层 |阅读模式
对图象数据的研究
最近一直在玩,除了好玩之外,还有研究的意思(呵呵,借口)。
今天我稍微研究了一下的图象数据存储,呵呵,终于明白了。
你也想知道的数据是怎么存放的么?或者,你也想学破解图片,那么就跟我来吧,不过,在这之前,你必须准备一些工具。  内容来自dedecms
1---十六进制编辑器 这个可是破解的主要工具啊。推荐使用HEDIT,华军主页上有。  本文来自织梦

2---图象处理程序 这个是用来处理图片的。主要是生成我们要的图片框架。这个,用WINDOWS自带的画笔就成。  copyright dedecms
3---计算器 这个是用来转换16进制和10进制的,这个在很多时候都用的到的。WINDOWS自带的就行了。  dedecms.com

4---记事本 用来记录破解过程的重要数据。  本文来自织梦

5---一种可以处理二进制文件的编程工具 这个是用来写破解程序的。因为手工从文件拷贝图象文件实在是太累了。特别是数据比较大的时候。  dedecms.com
6---然后呢,一点预备知识在PC里面存储的数据是高位在前低位在后。也就是说 十六进制 0xf8890 在十六进制编辑器中是这样的: 90 88 0f 00。这个相当重要啊。  本文来自织梦
好了,下面我们开始了。  本文来自织梦
首先呢,我打开了一个WIL文件看了一下,感觉没有头绪。然后我打开了一个WIX文件,在两个文件的文件头,我发现了这样的文字。#ILIB v1.0-WEMADE Entertainment inc(这个是WIL文件头)#INDX v1.0-WEMADE Entertainment inc(这个是WIX文件头)。从这个上面我们可以看出,WIL就是LIB的意思,也就是库的意思。WIX就是INDEX的文件,也就是索引的意思。这样,我们就初步知道了,数据是存放在WIL中的,数据索引是存放在WIX中的。  内容来自dedecms

如果你还不知道索引呢(什么??你不知道索引。。晕4),我就给你讲一下哈。索引就是类似地址簿的东西,你从索引中查找数据所在的地址(这个地址不是内存地址,而是文件里面的地址)。那么通过这个地址,你就可以在库中找到数据了。  织梦好,好织梦

好了,现在我们知道了数据索引存放的地方,那么,我们就开始找到这些索引吧。
我们用HEDIT打开两个WIX文件进行比较,我们发现在OFS=36之前的数据都是固定的,那么,我门就看后面的数据。我找了一个比较小的WIX文件。然后从OFS=36的地方选择。这里用的是DNITEMS的WIX。我发现,选择的字节数是1656,而我们清楚,一个文件位置一般是用4个字节存放,也就是说,这里总共可能有的图象数是1656/4 = 414个,用计算器算出他的16进制是0x19E,这时,我们就在开头找16进制的 9E 01,我们发现,在OFS= 44 的地方有一个 9B 01 的很接近 9E 01 那么我们就知道了,后面的信息不都是文件地址。因为还要记录图象的个数啊。所以,我门从数据的尾部开始选择,看着右下角的数字到了 0x19b时,我们停下,发现正好停在 0X44前面。哈,我们知道了,这些数据都是文件位置,这个9B 01就是图象个数。那么,第一个文件位置是干什么用的呢,我打开了两个WIX文件,发现在相同的位置,就是OFS = 44后面的文件位置信息开始的地方,数据总是38 04 00 00,哦,明白了,这个就是图象数据的开始位置。也就是第一副图象的开始位置。  dedecms.com

那么我们把这个开始位置转换一下, 0X438 = 1080,呵呵,也就是说,在WIL中的前面1080字节不是图象数据。那么他们是什么呢?  内容来自dedecms

根据经验,我们知道,BMP文件里面的调色板一个就是一个4字节的DWORD值,那么256个位置就是1024字节,哈,很接近了啊。然后我比较了两个WIL文件,发现,前44字节是很相似的。所以我们减去44字节就是1036字节。那么剩下的12字节是什么呢?呵呵,我也不清楚,不用管他了。我们只要图象。  本文来自织梦
在WIL的0X438的位置上,我们发现了14 00 0D 00的数字。我猜,图象肯定超不过65535大小的,所以我猜想这是两个USHORT的图象大小的数据。  内容来自dedecms
于是我把他们相乘,然后我又找了0X438后面的一个文件位置,然后相减,得到了数据的长度。减去图象大小的数据,啊?竟然多出来4个字节。呵呵,我现在也搞不清楚他们的用处。恩,我就跳过去了,因为我想他们一般和图象没有什么关系。  copyright dedecms

然后我就把图象数据复制了,我又打开了画笔,把图象属性设定成0X14*0X0D,然后存成256色的位图。接着用HEDIT打开位图,在0X1078的位置把数据粘贴到这个位置。然后存盘,退出。然后用画笔打开这个图象文件。哈,看到图象了。看样子象一个符。不过颜色不对。恩,我进入了。用PAUSE截了一张图,然后用HEDIT打开,在54的位置选择了1024字节的东西。然后复制,再打开那个图象文件,在54的地方粘贴,然后存盘,退出,用画笔打开。哈。是一本书。  dedecms.com

啊,终于知道了。我从上面的动作中得到了下面的结论。  copyright dedecms
1 图象位置索引在*.wix中
2 图象信息在*.wil中。
3 图象索引从OFFSET 0X2C开始,有一个DWORD的图象总数
4 然后是DWORD的OFFSET值,第一副图象的OFFSET值固定为0X438,= (1080)10
5 那么,就是说在WIL中,开头有1080 字节的空余。
6 在WIL中,文件开头的44字节都是相同的。所以,就是说有另外的1036字节是另有用途。
7 (这个没有解决)1036中有1024是一个256色的调色板,那么,剩下的12字节是干什么用的呢?
8 在下,有一个截图功能保存的图象里面的调色板就是是图象数据的调色板。  内容来自dedecms

那么,剩下的工作就是写代码来抠图象了。
这方面的问题我就不再阐述了,因为知道了图象存储的数据格式,程序就很好写了。
恩,现在我也要写程序了。看看觉得自己写了好多啊。不过放心,这个东西没有版权,随便用拉。  内容来自dedecms

还有一点补充:
我没有说清楚,这些图象是完全用8BIT位图方式存放在文件里面的。没有经过任何压缩或者是编码。  织梦内容管理系统
“”研究之三 人物和地图显示篇  dedecms.com
dedecms.com
一、人物显示  本文来自织梦
里面,人物是个关键的东西。
我们看到,人物在里面可以穿不同的衣服,而且可以拿不同的武器。
如果每个武器和衣服都组合的话,恐怕要天文数字的衣服了。
不过传奇不是这样做的。我用程序解开了传奇的图片,根据图片得出的人物绘制的方法。
它的人物是用组合法绘制的。在不同的文件里面存放有不同的人物组件。每个组件都有各种动作时候的样子,里面主要有 站立,奔跑,行走,攻击,倒下,死亡等动作,他们每个动作都有相应的没有衣服,和各种衣服的模型图。
HUM.WIL里面是没有头发和武器的不同衣服的人的模型,看起来特别滑稽。
HAIR.WIL里面是头发,各个方向的,各种颜色的都有。
weapon.wil里面是武器攻击的时候的各个角度的图片。
在显示的时候,把人物的身体,头发,武器组合在一起绘制。  内容来自dedecms

二、地图显示
传奇地图是用一种90度的TILE来组合的。在TILES.WIL中,TILE全部是方形的。而且从地图数据以及坐标分布来看,传奇是用的90度的地图引擎。45度效果完全是用图片做出来的。的物件,比如房子等东西,存放在OBJECT*.wil里面,他们被分成一个一个的长条。好象是方便绘制的。
不过,有些图片上,物件并没有跟背景分开,也就是说物件图片是直接物件和地面画在一起的。也就是猜测吧,它可能是有一个专门记录是否物件是不能遮住人的数据层。如果在物件后面,那么就把人物用ALPHA方式绘制,这样看起来好象是遮挡效果就出来了。不过这种想法还是有破绽, 因为只有自己在房子后面才是ALPHA的,其他人就不是了。
不过可以肯定的是,的地图的绘制是用矩形长条绘制的。大家可以试一下,拿把比较长的武器到一个屋子里面靠左上的墙边面向左站着,就会发现,武器的一部分进了墙了。根据这个,不难看出地图绘制方发。  织梦好,好织梦

附录:
下面是一张表,列出了DATA目录的图象文件的具体内容。  织梦好,好织梦

chrsel.wil 开始的人物选择图片。
dnitems.wil 怪物或者人挂了之后掉下的物品的图片。
effect.wil 挖矿,沙巴克大门等动画效果。
hair.wil 人物的头发。
hum.wil 人物的各种衣服的模型。
items.wil 物品的图标。
Magic?.wil 魔法效果图。
magicon.wil 在魔法选择窗里显示的魔法图标。
mmap.wil 在地下洞里显示的小地图。
Mon*.wil 各种怪兽的图片。
npc.wil NPC的图片
object*.wil 建筑,地面以上物体的图片
prguse*.wil 界面,按钮的图片。
SmTiles.wil 地图图片的小图块
tiles.wil 地图图片的大图块
weapon.wil 武器攻击的图片。
 
NPAL.IDX 这个我也没有搞清楚,大概是用来做索引方式的ALPHA效果的数据吧。
 
lig0?.dat 这些,看名字好象是灯的意思。大概是灯光ALPHA的索引数据吧。 本文来自织梦

帖子地址: 





上一篇:游戏里面超级制造的详细说明
下一篇:在线泡游戏点功能使用详解
回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【乱回复灌水将给予禁言处理】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则