这么多年过去了,还是觉得冲锋岛最好玩,以前玩的时候觉得里面的剧情还是挺不错的,想回味一下,但是现在也没有相关的资料了。基于一个游戏不会把这种文本配置什么只丢在服务端的原则,尝试对客户端进行调试、拆包寻找里面剧情相关资料的蛛丝马迹。
大概10年前就有过想复活冲锋岛的冲动,但是当时的技术、认知不到位,最终不了了之。之前用过ExRpg的提取工具提取过客户端里面的data**.tv的文件,能对文件进行解包,但是现在好像这个工具的服务器已经没有了,也登录不上来使用了。之前解出来的数据中,核心部分的物品、技能、任务等各种文案都是加密的,没法用。只能自己硬着头皮去调试客户端看他的资源文件加载逻辑了。不过还好的是基于之前的经验,能得知冲锋岛存储的数据使用xml的格式来存,那么入手点就好找多了。
先用IDA载入客户端的exe进行静态分析,直接全局搜索xml关键字
![](http://tiebapic.baidu.com/forum/w%3D580/sign=cfe6ecafb6deb48ffb69a1d6c01e3aef/7b3c03f431adcbef441508c8e9af2edda2cc9f7d.jpg?tbpicau=2024-07-14-05_6fdd4e5c046dc87bc1b978c78e00d8a4)
发现TiXmlDocument关键字,去Gayhub搜索了一番,发现是一个叫TinyXml的xml文件解释库。基于这是一个十几年前的游戏,应该没有太骚的加密技巧,也不会去乱动这些第三方库,那么我只要在这个库去加载xml文件的时候跟踪下即可获取非加密的文件内容。然后基于一顿乱操作分析后,发现一个可疑的函数
![](http://tiebapic.baidu.com/forum/w%3D580/sign=2932d4d5910735fa91f04eb1ae500f9f/9059903df8dcd100388b8eef378b4710b8122f03.jpg?tbpicau=2024-07-14-05_0c167ae47708a82a952d8288a9ded3bd)
记下这个函数的偏移地址,打开Ollydgb,载入客户端,在5A805D的地方下断点,运行,这过程会有很多报错……(毕竟这游戏啥都没有了,能跑起来才怪),然后我强行手动改掉部分的汇编代码,让逻辑往正确的地方跑。在经过一个下午的尝试后,程序终于停止在了我的断点中。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=a2f68a1450ce36d3a20483380af23a24/e88862224f4a20a4bf604a09d5529822730ed025.jpg?tbpicau=2024-07-14-05_92d1bfd22de98c488af60bddf457702d)
看了下堆栈数据,发现最近是在尝试读取./data/xml/string/field.xml的文件,这个文件刚好是被加密的,然后看到第一个参数Arg1貌似是一个完整的xml文件,不过这里看不到,我顺着这个数据的地址023DD4B0,找到这块内存,这时候感觉稳了,这不就是一个xml的格式嘛,虽然有乱码,不过也只是编码问题,先把这块内存完整dump出来看看。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b89f3f27c81001e94e3c1407880f7b06/9d4dda39b6003af321d4aaae702ac65c1138b634.jpg?tbpicau=2024-07-14-05_61cfc4b6151358a57bcad408455efe46)
看着像小地图的名字,所以field的含义就是小地图名字了,昔日的千年树城啊,怀念啊。
后续的断点也跟着dump了好几个文件出来,有些看着没啥用暂时没dump。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=561fb80cf7119313c743ffb855390c10/a1d8fd1fbe096b63f378289e49338744eaf8ac3d.jpg?tbpicau=2024-07-14-05_3dc782fedd72852b5475c3b4ce16b683)
然后程序就结束了,没有继续去加载其他文件了。
我暂时把dump出来的文件整理在了一起
链接: https://pan.baidu.com/s/119NemEU6hT7Dl5d75uX2TQ?pwd=tenv 提取码: tenv
工作暂时就到这吧,后续的想法就是2个
1是按部就班研究文件的加载方式,搞清楚资源文件的组织形式,然后自己写解释程序来解包。对于加密的xml文件,也要研究清楚其加密的逻辑,反过来将其解密。
2是魔改程序流程,在资源加载完成后,强行去调用解释xml的函数,逐个去传入需要解释的xml,那么就可以一个一个拿到未解密的xml了。
应该不会鸽,毕竟还没有达到我的目的,任务描述还没有弄出来,现在只有任务名字![](http://tb2.bdstatic.com/tb/editor/images/face/i_f01.png?t=20140803)
大概10年前就有过想复活冲锋岛的冲动,但是当时的技术、认知不到位,最终不了了之。之前用过ExRpg的提取工具提取过客户端里面的data**.tv的文件,能对文件进行解包,但是现在好像这个工具的服务器已经没有了,也登录不上来使用了。之前解出来的数据中,核心部分的物品、技能、任务等各种文案都是加密的,没法用。只能自己硬着头皮去调试客户端看他的资源文件加载逻辑了。不过还好的是基于之前的经验,能得知冲锋岛存储的数据使用xml的格式来存,那么入手点就好找多了。
先用IDA载入客户端的exe进行静态分析,直接全局搜索xml关键字
![](http://tiebapic.baidu.com/forum/w%3D580/sign=cfe6ecafb6deb48ffb69a1d6c01e3aef/7b3c03f431adcbef441508c8e9af2edda2cc9f7d.jpg?tbpicau=2024-07-14-05_6fdd4e5c046dc87bc1b978c78e00d8a4)
发现TiXmlDocument关键字,去Gayhub搜索了一番,发现是一个叫TinyXml的xml文件解释库。基于这是一个十几年前的游戏,应该没有太骚的加密技巧,也不会去乱动这些第三方库,那么我只要在这个库去加载xml文件的时候跟踪下即可获取非加密的文件内容。然后基于一顿乱操作分析后,发现一个可疑的函数
![](http://tiebapic.baidu.com/forum/w%3D580/sign=2932d4d5910735fa91f04eb1ae500f9f/9059903df8dcd100388b8eef378b4710b8122f03.jpg?tbpicau=2024-07-14-05_0c167ae47708a82a952d8288a9ded3bd)
记下这个函数的偏移地址,打开Ollydgb,载入客户端,在5A805D的地方下断点,运行,这过程会有很多报错……(毕竟这游戏啥都没有了,能跑起来才怪),然后我强行手动改掉部分的汇编代码,让逻辑往正确的地方跑。在经过一个下午的尝试后,程序终于停止在了我的断点中。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=a2f68a1450ce36d3a20483380af23a24/e88862224f4a20a4bf604a09d5529822730ed025.jpg?tbpicau=2024-07-14-05_92d1bfd22de98c488af60bddf457702d)
看了下堆栈数据,发现最近是在尝试读取./data/xml/string/field.xml的文件,这个文件刚好是被加密的,然后看到第一个参数Arg1貌似是一个完整的xml文件,不过这里看不到,我顺着这个数据的地址023DD4B0,找到这块内存,这时候感觉稳了,这不就是一个xml的格式嘛,虽然有乱码,不过也只是编码问题,先把这块内存完整dump出来看看。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=b89f3f27c81001e94e3c1407880f7b06/9d4dda39b6003af321d4aaae702ac65c1138b634.jpg?tbpicau=2024-07-14-05_61cfc4b6151358a57bcad408455efe46)
看着像小地图的名字,所以field的含义就是小地图名字了,昔日的千年树城啊,怀念啊。
后续的断点也跟着dump了好几个文件出来,有些看着没啥用暂时没dump。
![](http://tiebapic.baidu.com/forum/w%3D580/sign=561fb80cf7119313c743ffb855390c10/a1d8fd1fbe096b63f378289e49338744eaf8ac3d.jpg?tbpicau=2024-07-14-05_3dc782fedd72852b5475c3b4ce16b683)
然后程序就结束了,没有继续去加载其他文件了。
我暂时把dump出来的文件整理在了一起
链接: https://pan.baidu.com/s/119NemEU6hT7Dl5d75uX2TQ?pwd=tenv 提取码: tenv
工作暂时就到这吧,后续的想法就是2个
1是按部就班研究文件的加载方式,搞清楚资源文件的组织形式,然后自己写解释程序来解包。对于加密的xml文件,也要研究清楚其加密的逻辑,反过来将其解密。
2是魔改程序流程,在资源加载完成后,强行去调用解释xml的函数,逐个去传入需要解释的xml,那么就可以一个一个拿到未解密的xml了。
应该不会鸽,毕竟还没有达到我的目的,任务描述还没有弄出来,现在只有任务名字
![](http://tb2.bdstatic.com/tb/editor/images/face/i_f01.png?t=20140803)