下面的内容来自正在写的书.....
6.5.1 收集信息
在实际分析游戏资源文件的加解密方式之前,收集一些有用的信息对破解成功与否非常关键,通常可以收集如下有用的信息。
1. 游戏安装目录下的说明文件,常见的文件名为readme.txt、copyright.txt、安装方法.txt、config.ini、debug.txt等。这些说明文件中可能会提及游戏使用的加密解密算法、解压缩算法、游戏引擎版本、游戏引擎名称等信息。如果知道游戏使用了哪个游戏引擎编写,那么即使游戏使用了不同的加密或压缩方法处理资源文件,但游戏运行时最终会经过解密或解压缩处理转换成游戏引擎原本支持的资源格式,这样游戏引擎才能正确读取资源文件。如果碰巧编写游戏的编程人员“偷懒”直接使用游戏引擎自带的加密解密或加解压缩算法处理资源文件而在网上找到该游戏使用的游戏引擎试用版或免费版,则可以直接查看该游戏引擎的相关文档说明,如果该游戏引擎是开源,则可以直接查找加载和处理资源文件的代码。
2. 用一些PE工具检测游戏主程序是否加壳保护了。很多游戏开发商为了保护游戏不被短时间内破解制造出盗版光盘,所以给游戏主程序添加了保护壳,壳是一种程序,这种程序一般比主程序更早获得控制权,加了壳的程序一般都具有反调试主程序、给主程序加密、压缩等,阻止破解者轻易通过调试器调试游戏主程序。如果游戏的主程序加了壳,使用壳检测工具大部分都能检测出使主程序用了哪些壳,知道了主程序使用了哪些壳后可以在互联网上找相对应的脱壳工具来把游戏主程序的壳自动脱掉或自己手动脱壳。反汇编加壳的程序是没意义的,一定要脱壳后才能进行正确的反汇编分析。
3. 如果是同一间游戏开发商开发的游戏,可能会对多个同一系列或不同系列的游戏使用同样的格式和加密压缩方式,在互联网上搜索查找以前有没有人分析过这些游戏资源文件的格式、如果找到则可以参考和尝试使用前人分析的结果解密、解压、解包。
4. 网上有些工具能扫描主程序使用了哪些加密解密和解压缩算法,这些工具根据加密解密和解压缩算法的处理数据后在程序内部留下的的特有或固定的字节码扫描主程序,这种原理和简单的杀毒软件扫描病毒一样。
5. 用一些反汇编软件或调试软件查看游戏主程序和游戏目录下的动态链接库Dll文件调用和输出了哪些函数名、或引用了哪些字符串,很多时候根据函数名和字符串名可以很快定位到处理资源文件的位置上和知道使用了哪些方式处理资源文件,例如加密解密和解压缩等。
6. 故意修改游戏的主程序、动态链接库、资源文件、配置信息的数据,修改前记得备份文件,以便恢复原来的数据。修改没有固定方法,通常的做法是使用16进制编辑器打开要修改的文件,然后随意修改几个字节数据或填充一段数据。修改数据的目的是让游戏主程序出错,通常游戏编程人员为了保证有良好游戏健壮性和稳定性,同时也为了方便测试游戏引擎,如果游戏某部分出错会有提示信息,很多时候可以从这些出错信息获得一些对破解资源文件加密解密和解压缩的信息,如游戏加载资源文件时,读取数据错误会弹出诸如” Load Archives File Error”、”Open Package fault”、“某加密/解压算法 Error”等,实际弹出的错误信息不一定和前面写的一样。
7. 使用16进制编辑器打开游戏的资源文件,进行初步的观察和分析、例如观察游戏的资源文件数据有没有类似结构体的规律、数据有没有使用加密和压缩,如果使用了加密和压缩的数据通常没有规律,而且数据看上去都是一些比较大的数值。通常可以使用16进制编辑器同时打开多个资源文件进行比较分析,一般的16进制编辑器都有自动比较两个或多个文件数据的异同功能,能以不同的颜色区分不同文件之间同一文件偏移地址中相同的数据区域和不同的数据区域。
收集信息基本上就是上面列出的7点了,实际分析时不一定要按照上面列出的顺序来做,也不一定要收集齐上面7点信息,只要收集到够用的信息即可。
上面列出的内容不一定全面,看高位游戏格式破解高手有没有别的要补充了。由于个人水平有限,上面写的内容可能难免有错,如有发现错误或有修改建议,欢迎回帖提出。
- 标 题:破解资源文件格式前的准备
- 作 者:lydlcy
- 时 间:2008-10-04 20:41:13
- 链 接:http://bbs.pediy.com/showthread.php?t=73960