Frida-hook:微信数据库的破解

Frida-hook:微信数据库的破解

  • Frida-hook:微信数据库的破解
    • [1. 准备条件](#1. 准备条件)
    • [2. 用frida获取key](#2. 用frida获取key)
      • [2.1 静态分析微信apk文件](#2.1 静态分析微信apk文件)
      • [2.2 frida hook:](#2.2 frida hook:)
    • [3. 用sqlcipher打开数据库:](#3. 用sqlcipher打开数据库:)

Frida-hook:微信数据库的破解

我们可以从root过的手机中,找到微信相关数据库,例如EnMicroMsg.db,是最关键的一个。但是,无法用sqlit攻击直接打开,因为这个数据库是加密过的。为了正常显示,就需要解密。用Frida 对Android SQLiteDatabase相关Api进行hook,就可以得到key,进而用sqlite软件可以打开了。本篇主要介绍如何hook,得到key,然后打开EnMicroMsg.db数据库。

1. 准备条件

使用的软件及版本:

  • root过的手机,可以获取root权限;
  • adb命令可以正常执行;
  • 微信apk:
  • frida版本:
  • 数据库软件:sqlcipher

2. 用frida获取key

2.1 静态分析微信apk文件

用jadx-gui进行微信apk的分析,主要看SQLiteDatabase这个类的相关方法。

2.2 frida hook:

得到的结果中,截取前7个字符,就得到了key。

脚本如下:

python 复制代码
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()

3. 用sqlcipher打开数据库:

这是一个windows中测试通过的。

相关推荐
lihuayong10 个月前
Frida抓包flutter app过程记录
frida hook·charles抓包·app抓包·https抓包
lihuayong1 年前
一次不成功的抓包过程
抓包·frida-server·frida·android模拟器