送给最好的TA app分析

news/2024/11/16 15:47:12/

博客链接:https://blog.xhyeax.com/2019/09/27/andlua-app-reverse/

概述

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

apk分析

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

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

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

找到加载lua的关键函数

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

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

动态调试进行dump

具体步骤可以参考我之前写的文章 IDA调试安卓so 在libart.so OpenMemory下断点
IDA在第41行断下之后,运行python脚本dump即可

import idaapi
data = idaapi.dbg_read_memory(0xf4daff00, 0x3000)
fp = open('d:\\dump.lua', 'wb')
fp.write(data)
fp.close()

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

分析lua

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

local L0_0
appname = "送给最好的TA"
appver = "1.0"
appcode = "10"
appsdk = "15"
path_pattern = ""
packagename = "com.sgzh.dt"
theme = "Theme_DeviceDefault_Dialog_NoActionBar_MinWidth"
app_key = ""
app_channel = ""
developer = ""
description = ""
debugmode = false
L0_0 = {"INTERNET","WRITE_EXTERNAL_STORAGE"
}
user_permission = L0_0

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

require("import")
import("android.app.*")
import("android.os.*")
import("android.widget.*")
import("android.view.*")
import("android.view.View")
import("android.content.Context")
import("android.media.MediaPlayer")
import("android.media.AudioManager")
import("com.androlua.Ticker")
activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)
activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE)
m = MediaPlayer()
m.reset()
m.setDataSource(activity.getLuaDir() .. "/0.mp3")
m.prepare()
m.start()
m.setLooping(true)
ti = Ticker()
ti.Period = 10
function ti.onTick()activity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)activity.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_IMMERSIVE)
end
ti.start()
function onKeyDown(A0_0, A1_1)if string.find(tostring(A1_1), "KEYCODE_BACK") ~= nil thenactivity.getSystemService(Context.AUDIO_SERVICE).setStreamVolume(AudioManager.STREAM_MUSIC, 15, AudioManager.FLAG_SHOW_UI)endreturn true
end

首先设置音频源文件路径为0.mp3,使用单曲循环模式播放音频。然后使用Ticker循环调节媒体音量至最大值,同时拦截了返回键。
主要功能其实跟以前那个叫目力的app差不多。(不过今天这个apk的音频就太那啥了…)

静音样本下载

https://pan.baidu.com/s/1jTUcjknxr-fwETgtEVpQSg

dump出来的lua

https://pan.baidu.com/s/1X0un1jgVB6QAgPRqNu_3Wg


http://www.ppmy.cn/news/933755.html

相关文章

基金TA系统简介

本文将汇总自己在平时工作中了解的基金TA系统以及相关账户知识,相关资料来源于工作总结以及网络。本篇文章主要按照以下几点来介绍 基金TA系统基金账户知识 人们购买基金可在场内购买,既在证券营业部开设证券账户,通过证券交易所的交易系统…

【CA-TA实战系列二】如何创建一个TA

前言 年末假期的最后一天信誓旦旦的说,希望年前把这个系列做完,最后还是只做了第一篇,因为最近告诉自己不能熬夜了。一晃就是年后的假期倒数第二天了。时间真的好快。 今天就到了学校,老实讲虽然家里也吵吵闹闹,热热闹闹,但是亲人的羁绊永远都在那里。 蛮有感触的是今…

TA(技术美术)宝藏网站

TA(技术美术)宝藏网站 我们不生产TA我们只是TA的搬运工(感谢马甲大佬总结!?)T部分(技术相关)1.Shadertoy2.GLSL SandboX3.candycat的博客4.关于raymarching5.minionsart大神6.冯委大…

NR Timing Advance(TA)

欢迎关注同名微信公众号"modem协议笔记"。 这篇是NR TA的笔记,之前有对R17 NTN TA进行了简单总结,但是也仅仅局限在NTN部分,其他TA基本过程没有涉及,这篇是针对R16版本协议对NR TA相关内容做的总结。和NR PUSCH power …

OPTEE TA介绍

前言 本文主要介绍OPTEE的TA(Trusted Applications),翻译自官方文档:Trusted Applications — OP-TEE documentation documentation (optee.readthedocs.io) 有两种方法可以实现可信应用程序 (TA):伪 TA 和用户模式 T…

中登TA、自TA、分TA

TA就是完成基金、集合理财产品登记结算业务的系统,具体实现的业务有:账户开户、销户、客户资料修改、账户冻结/解冻、账户登记、取消登记、认购、申购、赎回、转托管、非交易过户、产品转换、修改分红方式、份额冻结/解冻、产品成立、发行失败、产品终止…

BA、DA、AA、TA参考

通过以下四种组织架构的内容及内在联系,方便梳理。 BA:Business Architecture,业务架构 DA:Data Architecture,数据架构 AA:Applications Architecture,应用架构 TA:Technology Arc…

OPTEE:TA和TA加载(一)

前言 最近老师给了个作业,让做一下TA的镜像校验,而我是什么都不知道?甚至以前都没听过这个。于是将这个任务拆分成了三个部分,最后也就是学习的三篇笔记。 TA动态加载流程是什么? TA验签流程是什么? 怎么制作TA的签名? 这是我在看了关于TA的一些基础的知识之后,选…