apk逆向分析工具_“送给最好的TA.apk”简单逆向分析

20190927收到一个apk,名字叫“送给最好的TA.apk”。文件哈希值如下:

送给最好的TA.apk
Size: 741707 bytes
CRC32: 31C62FAD
MD5: 9819F3FA458129D7CA092C32839B7F38
SHA1: A948ACADD5647FF44E120CC6789BE7D8CCA59660
SHA256: 205160694C6D86C3056AAA2FB196B485CFA2A8A2F9F08BA966BE03B9EBFD936A

逆向分析

用AndroidKiller对apk进行逆向分析。

0daaf23339099aa3c231b5f3af39c1c3.png

发现一个0.mp3和2个lua文件。其中0.mp3就是罪魁祸首了。而lua文件打开是乱码也不是字节码。

4f1e213f16cfe72e25278e3fc2dfe133.png

通过分析java代码,发现调用了lib\armeabi-v7a\libluajava.so对lua进行解密,于是用IDA Pro 7.0 x86对so文件进行逆向。

6da8c530b00842a9974412b54a05224f.png

在luaL.loadbufferx函数里,有解密过程,整个代码不复杂,编写解密脚本如下:

# -*- coding:utf8 -*-
__author__='pcat@chamd5.org'
__blog__='http://pcat.cc'

from ctypes import *
import sys

def decrypt(filename):
    s=open(filename,'rb').read()
    outfile='out.lua'
    if s[0]==chr(0x1b) and s[1]!=chr(0x4c):
        rst=chr(0x1b)
        size=len(s)
        v10=0
        for i in range(1,size):
            v10+=size
            v=(c_ulonglong(-2139062143*v10).value>>32)+v10
            v1=c_uint(v).value>>7
            v2=c_int(v).value<0
            rst+=chr(ord(s[i])^(v10+v1+v2)&0xff)
        with open(outfile,'wb') as f:
            f.write(rst)
    else:
        pass

def foo():
    if len(sys.argv)==2:
        filename=sys.argv[1]
    else:    
        filename='main.lua'
    decrypt(filename)

if __name__ == '__main__':
    foo()

解密后是正常的lua字节码,可使用unluac进行反编译。

java -jar unluac.jar out.lua >raw.lua

解密后的init.lua:

local L0_0
appname = "\233\128\129\231\187\153\230\156\128\229\165\189\231\154\132TA"
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)endti.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 trueend

其中,定时器不断地设置音量为15(最大值)。

b69a3d886ff42b582f9641580fd3c9b0.png

安全意识的感悟

科技发展日新月异,加强关注网络安全,提高网络安全意识刻不容缓。在网络安全意识上一定要多加注意,多了解一些网络安全常识和网络安全技术问题,可以使我们能保证自己的安全。

另外,程序员制作程序的初衷应当是为了让世界更方便快捷美好之类的,而做这些乱七八糟坑人的东西,根本没有任何意义。


13c6d73689cd86b4ceb2a039863d5304.png



~~ChaMd5安全招聘~~

火睛安全团队

渗透测试工程师

http://www.chamd5.org/jobdetail.aspx?id=823

深圳市拓豹科技有限公司

信息安全工程师

http://www.chamd5.org/jobdetail.aspx?id=822

京东

高级安全工程师-系统安全方向

http://www.chamd5.org/jobdetail.aspx?id=819

OPPO子午实验室

高级IoT安全工程师

http://www.chamd5.org/jobdetail.aspx?id=814

高级Android安全工程师

http://www.chamd5.org/jobdetail.aspx?id=815

高级业务安全工程师

http://www.chamd5.org/jobdetail.aspx?id=816

高级WEB安全工程师

http://www.chamd5.org/jobdetail.aspx?id=817

高级隐私合规测试工程师

http://www.chamd5.org/jobdetail.aspx?id=818

国铁吉讯科技有限公司

安全渗透工程师

http://www.chamd5.org/jobdetail.aspx?id=809

高级安全逆向工程师(偏移动端)

http://www.chamd5.org/jobdetail.aspx?id=810




招新小广告

ChaMd5 ctf组 长期招新

尤其是crypto+reverse+pwn+合约的大佬

欢迎联系admin@chamd5.org

9f4e4b0c27094f4e402760f7cc6d8530.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值