线上全程直播班第九期火热招生,立时开课!
线上&实地班级均新增内推渠道及一线互联网公司最新口试题(安天、通付盾、梆梆、奇安信等)!
咨询Q:1847076032(注明来源)
Q群692903341
表面上是病毒惨案,实际上是老司机们探求原音频的速率车赛。
先附上剖析完之后音频的车牌: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系统无法识别该运用的赞助做事
再者运用主逻辑中都没有关于截图的任何调用。