苍蓝境界相关

2017-11-21 5,293 ℃

1.0.0

最近经常在taptap首页上看到这游戏的广告,所以就下了下来,玩了一段时间后发现这游戏的素质并不怎么样,不过稍微还有点研究价值就顺手写下好了

图片

首当其冲就是图片啦,毕竟这游戏还是有些立绘是比较喜欢的。Cocos2d-x的游戏,资源全部在res文件夹下,图片虽然是png后缀不过不出意外的是加密过的,查看头发现是“CCZp”字样,看起来好像又是pvr.ccz那一套,所以直接查找函数setPvrEncryptionKey,可以看到所以key就是900150983CD24FB0D6963F7D28E17F72,丢进TexturePacker里结果发现居然打不开。一开始以为它是外面又套了层加密,所以直接上调试了,断点断在initWithImageData上,查看传入参数,发现这个时候图片还是原始状态,继续往下跟踪,最后发现在inflateCCZBuffer函数里被解密成png,看完整个函数,发现其实就是png+zlib压缩+ccz加密罢了,从github上找到Cocos2d-x的源码解密ccz,再解压zlib就完成了。用c#抄了一份程序,有爱自取,打开exe输入需要解密的目录回车就行

程序+源码

百度云

lua

用的还是Cocos2d-x自带的xxtea,直接打开文件查看sign是47bce5c7,在IDA里搜索然后查找引用,就能看到key是08f8e026,图就懒得贴了。其实很想吐槽这自带的xxtea的sign问题,因为解密并不会用到这个东西,除了让人方便找key外就没有任何用处了。另外解开lua后能看到许多神奇的注释。。。

修改

因为游戏有lua,所以先入为主的以为逻辑都在lua里,结果把lua改了个遍几乎都没效果,后来重新翻开libcocos2dlua.so才发现还是在so里,比如BaseCard::getATK啥的,不过这修改对敌我双方都有效,最后选了json读取的地方来修改,位置从字符串入手就行,在data段搜索“atk”找到0x103D484上的“atk”,查找引用,定位到0x568B3C上修改0x568B42为mov r0,#xxxx就行,其他数值同理,注意这段是在Thumb

吐槽

难得遇到的一个槽点这么多的游戏,不吐不快

  1. 图片用到的秘钥900150983CD24FB0D6963F7D28E17F72是字符串“abc”的md5
  2. 上面也说了,lua里可以看到许多神奇的注释,注释的人应该不是写程序的人,估计代码都是外包的,就贴一张有代表性的(这个函数应该是不会被调用到的)
  3. 不懂这游戏的美工是有多喜欢spine,到处都用spine,就连完全静态的图片都用了spine,然后里面塞了个只有一帧的动画。。。
  4. 还是关于spine,玩的时候我就一直觉得战斗时人物怪怪的,然后把图片拆开了终于知道是为什么了,它人物虽然是用spine做的但是并不是什么骨骼动画,而是一帧一帧画好的人物,说白了就是用spine播放个gif罢了。。。
  5. 还是spine,虽然战斗人物是用spine播放gif,不过他还是有用到骨骼动画的地方我还以为这只是个gif,没想到居然是骨骼动画∑(っ °Д °;)っ
  6. 突然忘记还有啥要吐槽的了,等想到了再编辑吧~

29 条评论

  1. 大佬您好,我最近也想从cocos2lua游戏提取动画资源,资源文件都在data下,文件名都是32位类似MD5的数字,通过文件头知道是XXTEA加密的,解密之后能查看图片,文本内容,但文件名还是原样,无法匹配图片和对应的atlas以及骨骼数据文件,请问大佬接下来应该怎么找文件名恢复相关的函数?

  2. 大佬nb!17年写的程序居然现在还能用来提取最新安装包里的图片,这中间可是停过一次服欸! :wink:

  3. I am reading this page in Korea and I strive to understand and translate this page at the same time :!:
    Anyway, Thanks a lot of such information you write kindly :smile:
    非常感谢! (I have to include some Chinese letter due to spam check :sad: )

  4. 我最近想从一个同样是cocos2dlua做的一个手游里解密资源图片,lua是xxtea加密的已经解出来了,唯独摸不清楚png是用什么方式加密的。每张png都是单个的图片,查看了文件头可以排除xxtea和ccz,请问下一步该如何着手,只能尝试动态调试了吗

  5. 楼主问下,通过查看lua和png开头,知道全部用了xxtea加密,lua已经反编译出来,
    那么,xxtea加密的png图片该如何解密呢

  6. 以前LUA那里可以改技能伤害的,不知道现在,这是我玩过外挂最多的游戏

  7. 大佬,游戏的新包变了,解开看到的是bat扩展名,应该是用了新的压缩方式,这该从哪找突破点。不过查看头还是有“CCZp”字样,那么ccz加密大概没变,能否看看?

    1. 额,我应该是不会把这个游戏下回来玩,你自己看看吧,算法也就那套,我链接贴在上面了

    1. p大,请问你有空看下这款国服为谁炼金的dll文件吗,因为加密所以改不了http://fwg.mobage.cn/home

    1. 修改地址568B42
      原版09 F0 CF FB
      修改成50 03 0C E3
      放进客户端里面,重新安装。。点进入战斗就卡死不动了,难道不是这样修改吗,还是我理解错了

  8. dalao知不知道有没有什么spine资源导出成png帧的方法?实在不行我就只能自己手动解析骨骼数据然后渲染了……

    1. 我在考虑用Unity写一个工具,create SpineAnimation from Spine json/bin然后导出成png/gif,感觉应该可行。另外我发现Spine官方出了个Skeleton Viewer,不过这工具只能看不能导出……

欢迎留言

4 + 2 =