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