本文是继Xinyu的 PSP《大众高尔夫2P》XB资源包结构破解分析 的后续。
http://www.xinyuonline.net/blog/?action=show&id=43
主要是描述上文中提到的3种压缩算法。
我不认同通过观察编码前后数据变化的方式来编写codec的方法,这是一种非正规和不可靠(你无法确认可以攻破他,尤其在运气不站在你这边的时候;同时也无法在一些细节处理上和原算法保持一致,很可能游戏的恶性bug就是在这时引入的)的方法。于是我学习到了下面这种方法,并详细的记录了整个分析的过程。希望大家在看完这篇文章后,会得到这样的感受:没有破解不了的算法,问题只是要花多少时间而已。同样也会发现通过这种方法,分析的进度是可以被量化的,也就是说是受控的。
非常感谢tpu教会了我这种方法,同时感谢他对于那些甚至是很低级的问题都耐心的一一作答。谢谢!同时需要说明的是,他是这3种算法decoder部分的原作者。
本文Word版下载地址:
http://download.csdn.net/source/2588655
目录结构:
概述.... 3
分析环境.... 3
准备工作.... 3
算法分析方法.... 3
文件名列表的lzss算法分析.... 4
定位函数.... 4
MIPS上函数的调用规范.... 6
确认函数功能.... 6
对应的反汇编列表.... 9
反编译过程.... 11
编写模拟代码... 12
恢复高级语言特征... 14
增加可读性... 16
算法功能验证... 17
算法总结... 19
算法0x20(lzss).... 19
未知算法0x00(huffman+lzss).... 20
定位函数.... 20
确认函数功能.... 21
反编译过程.... 24
编写模拟代码... 24
整理以及验证... 26
编写主体部分模拟代码... 28
整理以及验证... 30
算法总结... 31
未知算法0x10(huffman).... 32
结束语.... 32