一、firda 安装
pip install firda -i http://pypi.douban.com/simple/
pip install frida-tools -i http://pypi.douban.com/simple/
二、安装木木模拟器
官网: http://mumu.163.com/
开启root
打开模拟器USB调试
在开发者选项中。
安装RE文件管理器
直接搜索进行下载,下载后打开给予root权限
下载frida服务端-Android
下载frida-server文件
到 https://github.com/frida/frida/releases 下载相应的版本(版本一定对应firda版本)
移动文件到tmp下
下载完成之后,如果你使用的本地下载,则把这个文件放入木木共享文件夹中解压,重命名为 frida-server
**
**
然后打开 RE文件管理器,使用全局搜索,找到这个文件的位置.
接着把 frida-server文件复制到 /data/local/tmp 目录下.
使用adb连接mumu模拟器
先找到模拟器的安装目录,然后进入 emulator\nemu\vmonitor\bin目录
配置adb
将adb_server.exe 重命名为adb.exe
配置全局变量
1、打开cmd,输入 adb connect 127.0.0.1:7555
2、adb shell 进入交互环境
3、cd /data/local/tmp
4、chmod 777 frida-server 设置权限
5、./frida-server 启动服务
6、adb forward tcp:27042 tcp:27042 开放访问端口
7、打开新cmd,输入frida-ps -U,有信息则服务启动成功
python调试
import frida
import sys
#获取设备信息
rdev = frida.get_remote_device()
#获取在前台运行的APP
front_app = rdev.get_frontmost_application()
print (front_app)
案例
import frida
rdev = frida.get_remote_device()
#获取在前台运行的APP
front_app = rdev.get_frontmost_application()
print (front_app)
import re
res = re.findall(r"pid=(.*?),",str(front_app))
# 枚举进程中加载指定模块中的导出函数
session = rdev.attach(int(res[0])) # 也可以使用attach(pid)的方式
jscode = """
Java.perform(function(){
var temp = Java.use('com.xunyou.libservice.server.impl.ServerApi');
var ServerParams = Java.use('com.xunyou.libservice.server.impl.ServerParams');
temp.e.overload('org.json.JSONObject').implementation = function(a){
var result = this.e(a);
send(hasmap_parse(result));
return result;
}
function hasmap_parse(result){
var test = result.toString();
var keyset = result.keySet();
var it = keyset.iterator();
while(it.hasNext()){
var keystr = it.next().toString();
var valuestr = result.get(keystr).toString();
test +=keystr+":"+ valuestr+";";
}
return test;
}
});
"""
script = session.create_script(jscode)
def on_message(message, data):
print(message)
script.on('message', on_message)
script.load()
sys.stdin.read()
脱壳
使用frida_dexdump 强制脱壳,可脱壳已加固
下载地址
使用
在模拟器上运行app后,执行 python main.py
脱壳后的文件将保存到当前目录
查看
使用jadx-gui查看源代码(拖进去即可)