第一次写博客,什么格式,排版都很low,大家不要喷我啊。。。
工具准备:
-
IDA Pro 7,具体大家想用正版还是x版,自行决定。
-
Android SDK 和 NDK
-
AndroidEagleEye,链接地址为:AndroidEagleEye
-
AndroidEagleEye需要XposedInstaller,直接百度下载一个最新的版本。我知道大家懒,所以链接为:XposedInstaller
-
一台ROOT之后的Andrid手机 或 雷电模拟器
好了,接下来接入正题。本文以一位网友发给我的一个叫做jjw.apk的【久久玩】的QP游戏。
解压缩APK文件,找到libs/armeabi/libcocos2d.so文件和位于assets目录下的src和res文件夹,这是我们需要解密的东西。我发现这个APK使用了xxtea加密。右击打开一个luac文件显示为:
我们在此处看到了lua加密的签名为红色圆圈中的内容,先找个文件记录一下,以后要用。
然后打开任意一张png图片,显示为:
我们同样找到了png资源的签名,找到刚才的文件,记录下来。
启动IDA Pro 7 把libcocos2dlua.so托到工具中。估计这玩意会有点卡,等待IDA分析完毕这个so文件,然后找到functions视图,如果你发现你的IDA上没有这个视图,请点击View->Open SubViews->Functions打开它。如下图:
我们先来处理lua脚本。用过cocos2dxlua的都知道,引擎第一次加载lua脚本会调用cocos2d::LuaStack::executeScriptFile这个方法,所以我们选中Function Name窗口中任意一个方法,然后按下CTRL + F键,进行搜索。你会看到Function Name下方出现了一个输入框,在输入框中输入LuaStack,然后你会得到以下结果,如图所示: