cocos2d-LUA逆向之修改客户端app,实时获取app解密后通信数据

本文中,将以宝博.apk为例。基于前面 解密lua脚本解密lua资源,我们为实现修改客户端app,实时获取app解密后通信数据,应分析修改app端的lua脚本,然后按原app加密方式打包修改后的lua脚本,覆盖原始安装文件,从而达到修改app的目的。

       参照前面分析,获取宝博.apk的xxtea解密key,同时可以分析出其对lua脚本的加密方式,是将lua脚本以字节码的形式,再经xxtea加密。所以我们解密lua脚本时,经过xxtea解密之后,得到的是lua字节码而不是源码,lua字节码类似java、 .net的中间文件,是可以被翻译成源码的,可以从网上下载一个lua字节码还原工具,将lua字节码还原成lua源码,最后得到lua源码目录如下:

图片.png        我们分析源码几处关键的地方:

图片.png图片.png       我们现在从修改app lua脚本的角度,想解密app与服务器的通信数据并不难,因为并不需要再分析底层so库中的加解密函数了。我们是处于上层,有源码,所以如果想记录所有app 通信的明文数据,可以在消息接口处,将解密后的消息全部写入文件即可。但是我们想实时显示解密后的通信消息,并在适当的地方能够伪造消息发往服务器。

        为了达到这个目的,我们可以在电脑端建立tcp服务开放端口,用adb将端口映射进手机,app用lua socket 连接端口,然后这样就在电脑端与手机(模拟器)端app建立了通信链路,app端接收的服务器消息解密后可以通过socket发送至电脑,电脑也可以将想要发送的消息,发送至app,然后由app加密后发送至服务器。架构如下:

图片.png        具体实现不在多述。

       这里对如何将修改了的lua源码回编至app提供两个方案。

        一是,利用quick-cocos2d提供的打包脚本文件。

图片.png        帮助命令如下:

图片.png        可以将修改好的lua源码目录打包成一个加密的zip文件:

        compile_scripts -i fishgame2d -o fishgame2d.zip -m zip -exxtea_chunk -ek “app xxtea 密码” -es “app xxtea 头部sign”

        命令成功执行应该出现fishgame2d.zip文件,将打包好的文件,覆盖掉原安装包内的文件即可。

        二是,按照app的lua脚本的目录结构,直接将改好的明文lua脚本覆盖掉原先的lua密文文件,cocos2d引擎会自动判断文件是否加密,对于未加密的cocos2d引擎也会正确处理。

         最后看下手机端app实时传回解密后的消息到电脑端的结果:

图片.png

        另外,还有一种方案就是直接破解app与服务器通信的加密算法,在电脑端模拟app的socket通信,这样更直接一些。根据自己的目的选择适合自己的技术方案。(结束)


原文链接:http://www.freebuf.com/column/173237.html

  • 5
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值