【Android 原创】送给最好的TA App简要分析

2019年9月29日 199点热度 0人点赞 0条评论

作者论坛账号:QiuChenly


0x01 解包App
首先用jadxgui打开看了下,资产文件夹"0.mp3"这个文件引起了我的注意.使用Apktool解包后播放,果然是不可描述的声音.
图片
图片

不多说 直接看到lua文件就知道这一定是个lua应用程序,androlua这个开源项目为基本框架,这是一个7年前就停止更新的框架,github地址:https://github.com/mkottman/AndroLua

点开资产文件下的.lua文件,不出所料是直接乱码,加密过,所以我们需要IDA加载他的SO来dump出他的实际明文脚本.
图片

0x02 IDA断点与脚本dump出lua字节码
图片

首先我把文件里的0.mp3给替换成了一个txt文件,并打包签名重新安装到手机上.调试的时候也发出这声音就尴尬了....


App运行在VXposed沙盒中,毕竟物理真机调试不安全的软件还是要悠着点....


本来对lua不是太了解,但是看java伪代码源码:

图片


猜测拿到File对象应该是需要载入的,然后进一步搜索这个so的native方法:

图片


可知道他一定是调用这个方法来加载lua脚本并同时解密的

图片

回到IDA,我们只有一个上图所示的.so文件,所以直接打开IDA:

图片


我们可以看到该方法又加载了 j_luaL_loadfilex方法:

图片


一路点击进去,可以看到一个叫" j_luaL_loadbufferx "的方法:

图片


这个方法百度了一下,得知:

图片

参数2是字节数组,参数三是文件大小,参数4是文件完整的物理路径.


同时文章中说这个方法是最终加载lua字节码的,那么我们可以在这个地方下断点dump出字节码.


参考文章地址:https://www.freebuf.com/articles/system/103388.html


那么我们进入这个函数,在开始和结束的地方分别下断点:

图片


最后一行是直接加载解密后的lua字节码的,所以我们只要在40行赋值处下断点即可.


常规执行:


adb forward tcp:23946 tcp:23946


然后手机端启动android_Server.

图片

回到IDA附加到这个APP:
图片

成功后IDA会自动断下,我们直接让他运行就好.
图片

继续运行App,发现断下来了:
图片

看下R3寄存器的位置,看到他是好像加载了"init.lua"这个文件,在R2附近.不管他 我们继续
图片

经过上面一大串的while计算,我们到达了这一行.
图片

此时在看R0的数据会发现hex View已经出现了明文,我们开始dump.

从0xE9C4C280地址开始,长度是R6寄存器分配的大小:0x1A6
图片

我们写数据到磁盘/Volumes/macDev/init.lua这里.
图片

可以看到有422字节大小,我们利用010 Editer打开:
图片

只有一些简单的APP配置,没有参考价值,我们继续dump.
图片

这次我就直接dump了,可以看到这次加载的是main.lua
发文前我已经做过了测试,所以直接说结果:软件所有的操作代码都在这,我直接dump出来.
从0xE9C5A200开始, 长度0x66A
图片

这里我们直接打开main.lua是大量乱码,所以我使用unluac_2015_06_13.jar把字节码转源码:
图片

用sublime打开源码:
图片

可以看到他屏蔽了返回键,但是没有做其他的屏蔽.
(隔壁贴大佬提醒并没有调用此处,我也只是猜测)----------->但是在java层我又发现了他调用系统函数一直截屏,猜测是利用这种方法屏蔽了三大金刚键.
同时有很多行代码都在修改音量,生怕不生效似的,其心可诛.怀疑是几年前的第一版本作者写的"目力"App本来就有的,所以红茶确实不能喝,太草了.
但是实际测试时发现可以用"最近任务"按键唤出并杀掉,但是此时已经对用户造成了影响,恶意修改者的目的达成.

0x03 总结
这个修改者非常的有灵性,是个人才.但是这种行为给别人造成了很大的困扰,属实不可取.上网冲技术浪你也找对方式冲嘛.
总结以上分析,我们知道lua脚本会加个密,不让人看到真实代码,其中加密解密函数就在so文件中.
luaL_loadfilex方法和j_luaL_loadbufferx分别是加载lua文件和加解密方法,在这些方法入口和return处dump出他们的数据即可.
我们拿到lua字节码后会发现很多乱码没法阅读,此时可以用:unluac_2015_06_13.jar这个反编译工具,直接反编译出原文,一观源码便知.

本人大学毕业刚两个月,所以实际经验难免不足,文章是今天仓促编写,如果有写的不对的地方还请各位海涵.

0x04 一些谣言解释
各大qq群开始转发各种聊天记录,说什么会上传用户隐私,一直在截图会上传用户隐私...还有无法刷机 无法关机的言论.
在这里向各位解释一下:没有这样的事,起码我暂时没看到哪里的代码有写,也许我看漏了.但是就现在来看这修改者真就为了整人而整人,关机的话强行关机就行了,不能刷机更是无稽之谈...遇到这种事不要慌,干就完事了.

解密后的main.lua文件:
main1.txt (1.16 KB, 下载次数: 27)

unluac_2015_06_13.jar文件:
unluac_2015_06_13.jar.zip (97.96 KB, 下载次数: 14)

下面的病毒样本解压密码为:52pojie
注意:这是修改过的App,作用是屏蔽后续代码方便调试,所以我就直接放了个txt替换了mp3
这个App打开后会报错,不会执行后续代码,请放心调试.不放心者可解包一看.
encrypt_52pojie_modifyVersion.zip (637.15 KB, 下载次数: 24)

注意:这是原版病毒文件apk请谨慎运行
encrypt_52pojie_default.zip (715.9 KB, 下载次数: 376)

文中关于Lua加载字节码相关知识来自于百度
贴上部分参考地址:
lua加载函数参考文章地址:https://www.freebuf.com/articles/system/103388.html
lua字节码反编译为源码参考文章地址:https://www.52pojie.cn/thread-697540-1-1.html
lua的IDA调试相关分析贴:https://bbs.pediy.com/thread-200926.htm
其他的来自于个人经验积累以及百度搜索,即使是没有学习过lua,但是参考以上几篇文章相信你也可以快速定位关键位置.

另一大佬分析帖:
https://www.52pojie.cn/thread-1030427-1-1.html

样本下载见左下角原文。

--官方论坛

www.52pojie.cn


--推荐给朋友

公众微信号:吾爱破解论坛

或搜微信号:pojie_5

32460【Android 原创】送给最好的TA App简要分析

这个人很懒,什么都没留下

文章评论