QiuChenly 发表于 2019-9-27 22:00

送给最好的TA App简要分析

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文件:


unluac_2015_06_13.jar文件:


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


注意:这是原版病毒文件apk请谨慎运行


文中关于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

XhyEax 发表于 2019-9-27 23:03

截图函数并没有被调用。且经测试只屏蔽了返回键。

J丶XerCog 发表于 2019-9-28 00:10

今天我们学校有个兄弟直接在高数课上放出来了   感觉基本上已经凉了还有在饭堂放的 全部目光都集中在他们那边了估计那几位兄弟心理阴影很大吧

yzlovew 发表于 2019-9-27 22:07

膜拜一波,我只会看到一直截屏截屏,lua完全不会

aocboe 发表于 2019-9-27 22:18

这个软件好像对手势无效,用手势的话可以直接切出来关掉:eee

神枪泡泡丶 发表于 2019-9-27 22:19

{:301_978:}稳噢 九月27号因为这个软件沦陷了还很多谣言

水墨青衫 发表于 2019-9-27 22:25

我来顶一个

风雪萧萧I 发表于 2019-9-27 22:28

顶顶楼主吧

清风君2019 发表于 2019-9-27 22:41

可以可以,虽然看不懂,支持一下子

羊村长的羊5240 发表于 2019-9-27 23:02

顶顶楼主

?殇仙 发表于 2019-9-27 23:16

几年前遇到过一个叫送给亲爱的他,是一个吓人软件,除了上述功能外还会更换壁纸,声音也是很恐怖的尖叫声,满屏被恐怖图片霸占还有动画,还好当时机智,没有安装,直接拆包发现里面的恐怖图片和音频文件
页: [1] 2 3 4
查看完整版本: 送给最好的TA App简要分析