"送给最好的TA.apk"分析

就在今天

我同学给我发来一个神奇的软件

究竟有多神奇呢

听说是打开就会把音量调到最大,然后发出一系列的”娇喘声音”然后停都停不下来的那种

这就勾起了我的兴趣 愤怒

当时我拿到的时候是在上课,没怎么看消息,然后别人发给我一个聊天记录

但是,事实却是如此吗?我有点怀疑

于是我上课偷偷下载了,准备拆包看一下究竟

就是你是吧

进去打开dex文件看一下

What??

这不是Androlua的库的吗

你抓着这个库看那么久,就为了说一句这个库有下载的功能???

就算库有下载功能,你也得要用了这个下载功能才能下载

退一万步讲,你就是用了,也不一定是下载病毒来植入手机啊

接着我去看了一下程序的AndroidManifest.xml

他们说的是这个权限吗

AndroLua库都加了下载组件了,肯定要有网络权限和写入权限啊

我丢进沙盒环境,运行(肯定是不会给播放权限的)并抓包

发现这个程序并没有任何的网络封包传输

所以这不能看出什么


既然知道这个程序是用AndroLua写的了

那就去看有没有AndroLua的源码或者资源文件

继续翻文件结构,找到了这个

哟,这个0.MP3应该就是万恶之源了,我们把它替换为”我和我的祖国.mp3”吧

这不就有个main.lua和init.lua吗

于是我尝试打开这两个源码文件

好吧,加密了

那就等我先上完课吧,回寝室拿电脑搞


回到寝室,传到电脑上

准备好接受制裁吧


我们先从java部分开始找,既然是androlua写的,于是找到了com.androlua.Main方法

看到是调用的com.luajava.LuaState.LloadFile加载lua文件

而这个方法是通过jni调用libluajava.so了的

分析这个库文件

发现其入口接口是Java_com_luajava_LuaState_1LloadFile函数

内部调用了luaL_loadfilex函数,又调用了luaL_loadbufferx

看了一下这个loaL_loadbufferx函数,发现其内容就是解密的内容

于是把函数源码照抄下来,存好备用


先把两个lua文件提取出来

接着用一些工具对他解密

我这里用了2个工具

第一个是拿到解密源码后自己写的

我们先把这个undec.exe和解密.bat放到两个源码的目录下

运行解密.bat

就可以得到初次解密出来的lua文件了

这个就是初次解密后的内容

显然是无法阅读的

于是我们用到第二个工具

工具来自 GitHub - zzwlpx/DecApkTools

下载工具包后,打开LuacGUI.exe,然后分别选择两个已经经过初次解密的lua文件

得到最终的源码文件

于是我们就可以阅读源码来分析这个程序到底执行了什么行为

右边那些\233什么的是ANSI字符,网上有转换工具我就不多说了

看该项是appname也能知道译过来是”送给最好的TA”

我们看左边的代码

可以看到注册了媒体播放器,设置属性为0.mp3,然后设置了一个循环

然后设置了一个音量调整和隐藏导航栏

下面的函数拦截了返回键

就这些,没有其他的了

那么那些说窃取隐私的,植入病毒的说法不攻自破了

网上传的源码

网上还疯狂传这种图的

我就想说

哪个编译为字节码之后还保留注释的,反编译回来还能得到注释是真的牛皮

一眼就能看出是假的源码,还搞的上面写的那个制作者无辜背锅


大家还是多多注意吧,不信任的APP尽量不要随意安装或打开,否则上课出现这种事情,那不仅是丢面子的事了,老师可能都要把你拉去谈话


程序和工具和源码:送给最好的TA.zip

内容仅供学习和参考,不要用于其他事情!!