吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3282|回复: 2
收起左侧

[Android 求助] 逆向APK中的lua代码,求助后续解决思路

[复制链接]
rsandtl 发表于 2021-10-7 15:06
30吾爱币
最近在逆向一款APK的LUA代码时遇到一些问题,我先把自己的处理过程说一下,请教高手后续的解决思路。
        一、尝试直接逆向
        拿到apk后直接解压,查看了一下里面的文件,包含了大量的lua脚本文件,lib下的so库文件如下:
         1.png
        可以确定这玩意是用cocos2d-lua引擎开发的,接下来随便找了个main.lua文件看看是什么样子,如下:
        2.png
        可以看出,他没有用cocos2dlua自带的XXTea加密方式,用的是lua5.1版本进行编译的,想着用5.1版的luadec就能很快搞定,结果。。。
        3.png
        直接报bad code in precompiled chunk,还是太年轻啊,哈哈
        好吧,看到这个错误不要慌,根据经验应该是opcode顺序被改过,看来得分析一下so中的代码了。
        二、尝试分析OS代码
        把libcocos2dlua.so扔IDA里,打开字符串窗口,再确认一下lua版本:
        4.png
        查一下opcode的字符串顺序,如下:
        5.png
        拿上图的顺序和lua虚拟机源码的对照了一下,这个顺序没有问题,为什么会看字符串顺序呢,主要是因为之前逆向时遇到过一次这种情况,对着字符串的顺序修改opcode就搞定了。不过,显然这次没有这么简单。
        于是,打算先定位luaV_execute函数分析一下,搜索“initial value must be a number”字符串,交叉引用跳转到代码处,
        6.png
        7.png
        按F5查看伪代码,直接报错:
        8.png
        什么鬼,换个姿势试试,这次我们通过调用关系来找luaV_execute函数,通过搜索lua源码,找到了一处调用点在resume函数内,而resume又在lua_resume被用到,如下:
        9.png
        10.png
        在IDA里搜索一下lua_resume函数,查看伪代码如下:
        11.png
        12.png
        再定位到sub_606EFC处,sub_606EFC应该就是luaV_execute,但里面的代码却不是应有的内容,而且IDA还出现了红色的错误提示“local variable allocation has failed, the output may be wrong!”,如下:
        13.png
        14.png
        后续应该怎么弄呢,请教各位大佬?有兴趣的可以发我私信。

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| rsandtl 发表于 2021-10-11 14:05
已经试过动态HOOK load_buffer导出了,导出的lua还是一样,因为他这个是改了LUA虚拟机层,并不是直接对LUA文件加密,所以HOOK出来的没有用。
这个so应该被改过,读不到luaV_execute的代码,主要的难点就在这里,就是想了解一下还原luaV_execute代码的思路
knpc818 发表于 2021-10-15 21:51
我最近也在尝试 cocos2d 的1个手游  我卡的难点是在  他使用了热更新,每次登录前 服务器端强制md5匹配,文件属性不一致(包括不存在)就强制更新下载1个新的js给你。。。那我白瞎了。。。  我在找 热更新的资料,看有没什么机会...
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-23 01:22

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表