2017-11-21 5,294 ℃
最近经常在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下
吐槽
难得遇到的一个槽点这么多的游戏,不吐不快
- 图片用到的秘钥900150983CD24FB0D6963F7D28E17F72是字符串“abc”的md5
- 上面也说了,lua里可以看到许多神奇的注释,注释的人应该不是写程序的人,估计代码都是外包的,就贴一张有代表性的(这个函数应该是不会被调用到的)
- 不懂这游戏的美工是有多喜欢spine,到处都用spine,就连完全静态的图片都用了spine,然后里面塞了个只有一帧的动画。。。
- 还是关于spine,玩的时候我就一直觉得战斗时人物怪怪的,然后把图片拆开了终于知道是为什么了,它人物虽然是用spine做的但是并不是什么骨骼动画,而是一帧一帧画好的人物,说白了就是用spine播放个gif罢了。。。
- 还是spine,虽然战斗人物是用spine播放gif,不过他还是有用到骨骼动画的地方我还以为这只是个gif,没想到居然是骨骼动画∑(っ °Д °;)っ
- 突然忘记还有啥要吐槽的了,等想到了再编辑吧~
时隔7年 依然可以用
大佬您好,我最近也想从cocos2lua游戏提取动画资源,资源文件都在data下,文件名都是32位类似MD5的数字,通过文件头知道是XXTEA加密的,解密之后能查看图片,文本内容,但文件名还是原样,无法匹配图片和对应的atlas以及骨骼数据文件,请问大佬接下来应该怎么找文件名恢复相关的函数?
大佬nb!17年写的程序居然现在还能用来提取最新安装包里的图片,这中间可是停过一次服欸!
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
非常感谢! (I have to include some Chinese letter due to spam check )
图片是base64的方法一样那?
我最近想从一个同样是cocos2dlua做的一个手游里解密资源图片,lua是xxtea加密的已经解出来了,唯独摸不清楚png是用什么方式加密的。每张png都是单个的图片,查看了文件头可以排除xxtea和ccz,请问下一步该如何着手,只能尝试动态调试了吗
cocos2d读取图片有固定的点,百度的到相关的东西,当然不一定适用就是了
楼主问下,通过查看lua和png开头,知道全部用了xxtea加密,lua已经反编译出来,
那么,xxtea加密的png图片该如何解密呢
既然算法一样的话,lua怎么解png就怎么解啊
以前LUA那里可以改技能伤害的,不知道现在,这是我玩过外挂最多的游戏
大佬,游戏的新包变了,解开看到的是bat扩展名,应该是用了新的压缩方式,这该从哪找突破点。不过查看头还是有“CCZp”字样,那么ccz加密大概没变,能否看看?
额,我应该是不会把这个游戏下回来玩,你自己看看吧,算法也就那套,我链接贴在上面了
I can’t convert jpg extension with CljjPngDecoder.exe …
can you help me sir?
我
only png support
希望能获得up的联系方式呢,有一些事情想要私下请教
qq 407656566
p大,请问你有空看下这款国服为谁炼金的dll文件吗,因为加密所以改不了http://fwg.mobage.cn/home
修改后,点进入战斗就卡住了,应该是有检测了
刚测试没有任何问题,怀疑你改错
修改地址568B42
原版09 F0 CF FB
修改成50 03 0C E3
放进客户端里面,重新安装。。点进入战斗就卡死不动了,难道不是这样修改吗,还是我理解错了
这段是Thumb,你这样改当然不行
好高深,麻烦大佬放个修改的上来,学习学习
http://armconverter.com/ arm指令转换,想怎么转就怎么转
抢一个板凳
dalao知不知道有没有什么spine资源导出成png帧的方法?实在不行我就只能自己手动解析骨骼数据然后渲染了……
应该没有现成的工具,只能自己渲一帧截个图吧。。。
我在考虑用Unity写一个工具,create SpineAnimation from Spine json/bin然后导出成png/gif,感觉应该可行。另外我发现Spine官方出了个Skeleton Viewer,不过这工具只能看不能导出……
嗯,加油吧。。。
居然用spine播放gif…
令人窒息的操作