首页
社区
课程
招聘
[原创]送给最好的TA app分析
发表于: 2019-9-27 19:33 21260

[原创]送给最好的TA app分析

2019-9-27 19:33
21260

今天群里有人传了个apk文件,名字叫送给最好的TA。这是一个整人app,安装并打开会播放一段音频,并循环调节媒体音量,维持最大值。从后台划掉/卸载/关机都可以停止该程序。
网传所谓的截图、获取设备信息并上传等行为均不存在。反编译后看到的截图相关代码实际上并没有被调用,只是打包apk时封装进去的类,关键逻辑位于main.lua中。

拿到样本之后,别急着安装运行,先看看它的目录结构。

打开assets文件夹,看到有一个mp3文件以及两个加密后的lua脚本:

运行app后会自动播放这个音频文件,先对它进行替换。
这里使用AU对该mp3进行静音处理后,重打包并签名。
(其实也可以替换成自己想要播放的音频)

众所周知,lua脚本需要加载,而在加载之前肯定是要先解密的,所以只要找到解密函数,然后就可以把解密后的lua脚本dump出来。
使用IDA打开libluajava.so,经过分析找到函数luaL_loadbufferx
luaL_loadbufferx的第二个参数是加密的字节数组,第三个参数是大小,第四个参数是lua文件位置。
程序在这个函数中加载加密lua脚本,其中对脚本进行了解密操作。
根据第四个参数我们可以区分目前加载的lua脚本名称,从而选择性地dump
(即在函数开头下断点,查看第四个参数内容)
luaL_loadbufferx函数伪代码如下:

首先对输入的字节数组进行判断,如果以1B开头,且第二位不是0C,则进行解密操作,否则直接调用j_lua_load加载lua脚本
在第41行下断点即可获取到解密后的字节数组,从而dump

具体步骤可以参考我之前写的文章
IDA在第41行断下之后,运行python脚本dump即可

此处的0xf4daff00, 0x3000需要替换成解密后字节的起始地址和长度
长度写大一点也没事,可以再用010Editor删除(所以我这写的0x3000

由于dump出来的lua是字节码,并不是源码形式。所以还需要反编译后才能查看源码。(使用unluac_2015_06_13.jar进行反编译)
init.lua中进行包名、版本号、主题、权限等配置

主要功能在main.lua中完成:


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2019-10-2 13:56 被xhyeax编辑 ,原因: 样本补链
收藏
免费 5
支持
分享
最新回复 (5)
雪    币: 26245
活跃值: (63297)
能力值: (RANK:135 )
在线值:
发帖
回帖
粉丝
2
感谢分享!
2019-9-28 09:58
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
3
2019-9-28 18:47
0
雪    币: 329
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
4
本人有事请教可以留一下QQ吗
2019-9-29 19:32
0
雪    币: 6124
活跃值: (4656)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
5
这就是所谓的“不是病毒的”病毒,看起来没有破坏手机内的文件也没有盗窃什么隐私,但是给机主造成了恶劣的影响和损失。就跟以前那个遮住qq窗口盗号和模拟用户行为关闭杀软的操作类似。
2019-9-30 21:22
0
雪    币: 20
能力值: ( LV1,RANK:0 )
在线值:
发帖
回帖
粉丝
6
有事请教可以留下qq.吗
2020-11-23 14:25
0
游客
登录 | 注册 方可回帖
返回
//