建站行业有哪些公司,网站备案号 主体备案号,新闻发布网站建设实训小结,自己建设网站难不难Frida-hook:微信数据库的破解 Frida-hook:微信数据库的破解1. 准备条件2. 用frida获取key2.1 静态分析微信apk文件2.2 frida hook#xff1a; 3. 用sqlcipher打开数据库#xff1a; Frida-hook:微信数据库的破解
我们可以从root过的手机中#xff0c;找到微信相关数据库 3. 用sqlcipher打开数据库 Frida-hook:微信数据库的破解
我们可以从root过的手机中找到微信相关数据库例如EnMicroMsg.db是最关键的一个。但是无法用sqlit攻击直接打开因为这个数据库是加密过的。为了正常显示就需要解密。用Frida 对Android SQLiteDatabase相关Api进行hook就可以得到key进而用sqlite软件可以打开了。本篇主要介绍如何hook得到key然后打开EnMicroMsg.db数据库。
1. 准备条件
使用的软件及版本
root过的手机可以获取root权限adb命令可以正常执行微信apkfrida版本数据库软件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(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中测试通过的。