freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

cocos2d-LUA逆向之修改客户端app,实时获取app解密后通信数据
2018-05-29 11:32:51

        本文中,将以宝博.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通信,这样更直接一些。根据自己的目的选择适合自己的技术方案。(结束)

 



# 逆向 # Android
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者