PVF文件的解压算法
首先明确一些问题:
1.可以断定:这个pvf文件是存放游戏数据的文件——攻击范围、技能数据、装备数据等都存在这里
2.一些链接关系也是存在这里的,比如说游戏里,在什么位置应该显示哪张图片,这样的链接关系也是放在pvf文件里的。
3.可以把pvf文件理解成一个压缩过的文件夹,里面也有树状目录结构,也有文件等等……这些文件中,就有一个或者多个文件对应影响一个技能/物品,或者多个技能/物品,只需要修改这些文件,就能达到修改技能效果、物品效果的外挂作用。记得曾经出过一个挂,就是把这个pvf文件解压了,取出里面的几个关键文件进行修改,然后根据pvf的目录树,在DNF文件夹下新建了同样的目录结构,而DNF.EXE文件读取数据的时候,优先读取真实目录,再读PVF解压目录,由此导致被修改垸的文件先读取,从而达到修改效果。当然,这个BUG已经被修正,现在的DNF不会优先读真实目录。
4.把目录结构这样压缩并且达到加密效果的,DNF并不是首创。BLZ才是首创,最先用到D2上,后来的WAR3中的MPQ文件也是同样的压缩原理,当然,压缩算法应该是不一样的。MPQ解压工具网上全是,而PVF的……没有。
根据以上4点。想在PVF上做文章,最先要解决的问题就是如何推算解压算法。既然有人改出有全屏攻击的Script.pvf文件了,说明已经有人解决这个问题了,只不过这等商业机密是没人会白给你的=。= :tw p95{R1 那么只好靠自己了。 1.直接通过分析pvf文件的二进制形式来得出解压算法么……嗯,能这样算出来的强人顺手再做个挂给我们吧……
2.二进制比对。 我认为,二进制比对的方法看似更靠谱一点……具体方法是:先找到目前我们已有的这个修改过的Script.pvf文件的未修改版——这是一个问题,因为我们不知道作者是修改哪个版的PVF得到的,不过可以确定的是,肯定是出物品“冒险者的指引”那一版之前的某个版本。因为目前这个修改版的script.pvf不能正确显示这个物品,或者说目前这个修改版的pvf里面还没有代表这个物品的文件)。好吧,假设我们找出了Script.pvf文件的原版和修改版。接下来如何分析?
首先是两个文件的相同点……呃……很多,好吧,看不同点:
A.普通攻击,初始两个技能的攻击范围变大了。
B.初始技能的攻击值变大了。
C.攻击时处于无敌状态。
D.攻击时,如果HP过低,会自动使用精灵补血。
综上4点,两个版本的SCRIPT.PVF估计会有至少6处的不同。嗯,看来不不是很多,对于一个90MB的文件而言。然后使用工具Arax* Merge进行二进制的比对,看一下到底有多少处不同点,再根据这些不同点进行分析,也许可以找到各种技能、物品文件所对应的“代码”或者说是对应关系。根据这些对应关系也许就能改出适应目前版本的Script.pvf文件。