前提准备

1.手机模拟器(win优先选择雷电模拟器,不吃性能 mac的话我选的夜神模拟器)2.MT管理器 3.BlackDex(32位或者64位,根据手机选)4.Android Sdk(至少包含platform-tools) 5.frida-dexdump (电脑端) 6.frida-server(手机端)7.反编译工具(apktool、jadx),apktool反编译的话对于文件整理做的很好,将资源和代码很好的抽离归类了,jadx据说是反编译能力更强一点

具体脱壳以及反编译过程

这里主要讲一下脱壳过程:从github上下载完 frida-dexdump 以及 frida-server

1.安装 frida-dexdump

pip install frida-dexdump
  1. 安装 frida-server

    这个工具直接去 github 官方仓库下载即可,需要注意的是,frida-dexdump和frida-server的版本必须对应,否则后面运行服务会报错。

下载后解压,切换到工具所在目录,右键进入cmd,使用以下命令将frida-server安装到手机的tmp目录下

adb push frida-server /data/local/tmp/

你下载解压的工具全名叫啥,frida-server这个位置就换成你的工具名

3.开始脱壳(企业版加固的app大概率失败,所以也别抱希望)

-先打开模拟器,运行要脱壳的app

​ -在终端输入命令,验证是否检测到了模拟器

adb devices

​ -开启手机端frida-server服务

# 进入手机命令
adb shell
# 开启 shell 的 root 权限
su
# 进入 frida-server 目录(正常情况下都是这个目录)
cd /data/local/tmp
# 修改文件权限(不修改运行服务会失败)
chmod 755 frida-server
# 运行服务
./frida-server
# shell窗口不能关闭,关闭后服务就停止了!!!

​ -新开一个cmd窗口执行 frida-dexdump

# 输出进程列表
frida-ps -U
# 也可以是,这样会打印出进程id 进程名 以及包名
frida-ps -Ua
# 以进程 id 执行脱壳程序
frida-dexdump -U -p 进程id
# 以进程名执行脱壳程序
frida-dexdump -U -n 进程名
# 以包名执行脱壳程序
frida-dexdump -U -f 包名

脱壳命令任选一种方式就行,dump出的dex文件在app包所在的同级目录下

对dump出的dex文件进行反编译

将frida-dexdump这个软件dump出来的多个dex文件拖进jadx-gui中进行反编译或者是apktool中反编译,至此脱壳以及反编译就全部结束了。我猜测市面上大部分加固的apk使用开源的工具基本上都是不能脱壳的,所以为了便捷,可以先采用blackdex对apk进行脱壳,若脱壳失败大概率采用复杂的frida-dexdump也是会失败的。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐