苍蓝境界相关

2017-11-21 2,959 ℃

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. 突然忘记还有啥要吐槽的了,等想到了再编辑吧~

【2018-10-27】碧蓝航线Live2D提取

2018-10-27 v1.2 完善4种Segment 2018-10-23 v1.1 修复易拉罐等SteppedSegment问题 正文 自从看到敦刻尔克的live2d后就决定要提取一发来射爆,经过简单的分析...

阅读全文

Unity下的注入与修改

已经有很长一段时间没写过游戏修改的文章了,一个原因是现在越来越多的手游厂商都开始给游戏上各种各样的保护,以前简单的直接修改dll或者直接修改so早已经不...

阅读全文

少女前线Live2D解密

上周在CP22看到这个游戏两周年了,打算回坑玩一阵,不过上一个号是买的初始号账号密码都忘记了,所以只好开了个新号。然后新皮肤倒是抽到了,不过枪都没有怎...

阅读全文

22 条评论

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

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

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

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

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

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

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

欢迎留言

7 + 8 =