使用frida获取微信EnMicroMsg.db 数据库密码

本文详细记录了作者利用Frida框架在Python环境下,如何在Mumu模拟器中获取微信EnMicroMsg.db数据库密码的过程,包括安装步骤、frida-server配置、hook脚本编写及实际操作细节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这件事情浪费我两天时间,期间遇到了各种坑,记录一下
工具:
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版本
frida-server 服务端版本下载

https://github.com/frida/frida

同样选择 12.8.0 版本
frida-server选择
我这里使用 是的 mumu模拟器 (记得勾选获取root权限方便后续操作)
adb连接模拟器中的android系统 查看系统架构

adb connect 127.0.0.1:7555 # 创建连接
adb shell	# 进入系统 shell
getprop ro.product.cpu.abi	#查看系统架构

注意:7555是 Mumu模拟器内安卓系统 默认端口
在这里插入图片描述
下载 frida-server-12.8.0-android-x86_64.xz 版本
解压上传

# 创建frida-server至 安卓系统上
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): #js中执行send函数后要回调的函数
    if message["type"] == "send":
        print("[*] {0}".format(message["payload"]))
    else:
        print(message)
     
process = frida.get_remote_device()
pid = process.spawn(['com.tencent.mm']) #spawn函数:进程启动的瞬间就会调用该函数
session = process.attach(pid)  # 加载进程号
script = session.create_script(jscode) #创建js脚本
script.on('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
process.resume(pid)  # 重启app
sys.stdin.read() 

获取数据库密码成功
在这里插入图片描述
将EnMicroMsg.db文件从模拟器(手机)复制到电脑上(手机或者模拟器要登陆微信)

adb  pull /data/data/com.tencent.mm/MicroMsg/xxxxxxxxxxxxx/EnMicroMsg.db EnMicroMsg.db

使用 SqlCipher 工具打开EnMicroMsg.db
在这里插入图片描述

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值