Frida

阅读: 评论:0

Frida

Frida

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

  • Frida-hook:微信数据库的破解
    • 1. 准备条件
    • 2. 用frida获取key
      • 2.1 静态分析微信apk文件
      • 2.2 frida hook:
    • 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。
脚本如下:

import frida  
import sys    
jscode = """Java.perform(function(){  var utils = Java.use(&#t.wcdb.database.SQLiteDatabase"); // 类的加载路径utils.openDatabase.overload('java.lang.String', '[B', &#t.wcdb.database.SQLiteCipherSpec', &#t.wcdb.database.SQLiteDatabase$CursorFactory', 'int', &#t.wcdb.DatabaseErrorHandler', 'int').implementation = function(a,b,c,d,e,f,g){   console.log("");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("");return database;};});
"""
def on_message(message,data): #js中执行send函数后要回调的函数if message["type"] == "send":print("[*] {0}".format(message["payload"]))else:print(message)
process = _remote_device()
pid = process.spawn([&#t.mm']) #spawn函数:进程启动的瞬间就会调用该函数
session = process.attach(pid)  # 加载进程号
script = ate_script(jscode) #创建js脚本
('message',on_message) #加载回调函数,也就是js中执行send函数规定要执行的python函数
script.load() #加载脚本
sume(pid)  # 重启app
ad()

3. 用sqlcipher打开数据库:

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

本文发布于:2024-01-29 03:32:28,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170647035112405.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:Frida
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23