好友
阅读权限35
听众
最后登录1970-1-1
|
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, 下载次数: 37)
unluac_2015_06_13.jar文件:
unluac_2015_06_13.jar.zip
(97.96 KB, 下载次数: 48)
下面的病毒样本解压密码为:52pojie
注意:这是修改过的App,作用是屏蔽后续代码方便调试,所以我就直接放了个txt替换了mp3
这个App打开后会报错,不会执行后续代码,请放心调试.不放心者可解包一看.
encrypt_52pojie_modifyVersion.zip
(637.15 KB, 下载次数: 97)
注意:这是原版病毒文件apk请谨慎运行
encrypt_52pojie_default.zip
(715.9 KB, 下载次数: 762)
文中关于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
|
免费评分
-
查看全部评分
|