200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 使用frida获取微信EnMicroMsg.db 数据库密码

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

时间:2023-03-13 19:08:47

相关推荐

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

这件事情浪费我两天时间,期间遇到了各种坑,记录一下

工具:

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.0python3 -m pip install frida-tools==5.3.0

frida-server 服务端版本下载

/frida/frida

同样选择 12.8.0 版本

我这里使用 是的 mumu模拟器 (记得勾选获取root权限方便后续操作)

adb连接模拟器中的android系统 查看系统架构

adb connect 127.0.0.1:7555 # 创建连接adb shell# 进入系统 shellgetprop 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:27042adb forward tcp:27043 tcp:27043

测试枚举模拟器系统的 进程

frida-ps -U

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

源码分析参考连接:/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) # 重启appsys.stdin.read()

获取数据库密码成功

将EnMicroMsg.db文件从模拟器(手机)复制到电脑上(手机或者模拟器要登陆微信)

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

使用 SqlCipher 工具打开EnMicroMsg.db

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。