这件事情浪费我两天时间,期间遇到了各种坑,记录一下
工具:
python3.7.6
frida 12.8.0
mumu模拟器
adb
SqlCipher
0x00 frida
- Frida是一款轻量级HOOK框架,可用于多平台上,例如android、windows、ios等。
- frida分为两部分,服务端运行在目标机上,通过注入进程的方式来实现劫持应用函数,另一部分运行在系统机器上。frida上层接口支持js、python、c等。
0x01 安装frida和frida-tools 和配置
python端 frida 和frida-tools安装
因为我的python环境是3.7的,再加上根据大家的评价 说 12.8.0比较稳定,这选择12.8.0。没有使用最新的版本(最新版本好像不支持py3.7)
python3 -m pip install frida==12.8.0
python3 -m pip install frida-tools==5.3.0
frida-server 服务端版本下载
https://github.com/frida/frida
同样选择 12.8.0 版本
我这里使用 是的 mumu模拟器 (记得勾选获取root权限方便后续操作)
adb连接模拟器中的android系统 查看系统架构
adb connect 127.0.0.1:7555
adb shell
getprop ro.product.cpu.abi
注意:7555是 Mumu模拟器内安卓系统 默认端口
下载 frida-server-12.8.0-android-x86_64.xz 版本
解压上传
adb push frida-server-12.8.0-android-x86_64 /data/local/tmp
chmod +x frida-server-12.8.0-android-x86_64
./frida-server-12.8.0-android-x86_64
adb forward tcp:27042 tcp:27042
adb forward tcp:27043 tcp:27043
测试枚举模拟器系统的 进程
frida-ps -U
0x02 使用frida获取 微信EnMicroMsg.db 数据库密码
源码分析参考连接:https://www.cnblogs.com/lxh2cwl/p/14842537.html
hook.js
import frida
import sys
jscode = """
Java.perform(function(){
var utils = Java.use("com.tencent.wcdb.database.SQLiteDatabase"); // 类的加载路径
utils.openDatabase.overload('java.lang.String', '[B', 'com.tencent.wcdb.database.SQLiteCipherSpec', 'com.tencent.wcdb.database.SQLiteDatabase$CursorFactory', 'int', 'com.tencent.wcdb.DatabaseErrorHandler', 'int').implementation = function(a,b,c,d,e,f,g){
console.log("Hook start......");
var JavaString = Java.use("java.lang.String");
var database = this.openDatabase(a,b,c,d,e,f,g);
send(a);
console.log(JavaString.$new(b));
send("Hook ending......");
return database;
};
});
"""
def on_message(message,data):
if message["type"] == "send":
print("[*] {0}".format(message["payload"]))
else:
print(message)
process = frida.get_remote_device()
pid = process.spawn(['com.tencent.mm'])
session = process.attach(pid)
script = session.create_script(jscode)
script.on('message',on_message)
script.load()
process.resume(pid)
sys.stdin.read()
获取数据库密码成功
将EnMicroMsg.db文件从模拟器(手机)复制到电脑上(手机或者模拟器要登陆微信)
adb pull /data/data/com.tencent.mm/MicroMsg/xxxxxxxxxxxxx/EnMicroMsg.db EnMicroMsg.db
使用 SqlCipher 工具打开EnMicroMsg.db
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)