-
-
[求助]新手hook sqlcipher遇到的问题
-
发表于:
2023-4-18 15:19
7434
-
[求助]新手hook sqlcipher遇到的问题
新手,刚接触xposed开发,最近想做一个某个app的消息监听,开始还不知道消息这种数据一般用sqlcipher存,然后hook的sqlite,成功了但是并没有看到插入想要的数据,然后查了下,转向hook sqlcipher。具体函数如下
public long insertWithOnConflict(String str, String str2, ContentValues contentValues, int i)
我写的hook代码
XposedHelpers.findAndHookMethod(Application.class, "attach", Context.class, new XC_MethodHook() {
protected void afterHookedMethod(MethodHookParam param) throws Throwable {
Context context = (Context) param.args[0];
dexClassLoader = context.getClassLoader();
if (dexClassLoader == null) {
XposedBridge.log("cannot get classloader return ");
return ;
}
XposedHelpers.findAndHookMethod("net.sqlcipher.database.SQLiteDatabase",dexClassLoader , "insertWithOnConflict", java.lang.String.class, java.lang.String.class, android.content.ContentValues.class, int.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
ContentValues contentValues=(ContentValues)param.args[2];
String tableName=(String) param.args[0];
LogUtil.PrintInsert(tableName,contentValues,"sqlcipher insertWithOnConflict");
}
});
Class<?> cls = XposedHelpers.findClass("android.database.sqlite.SQLiteDatabase",dexClassLoader);
XposedHelpers.findAndHookMethod(cls, "insertWithOnConflict", String.class, String.class, ContentValues.class, int.class, new XC_MethodHook() {
@Override
protected void beforeHookedMethod(MethodHookParam param) throws Throwable {
ContentValues contentValues=(ContentValues)param.args[2];
String tableName=(String) param.args[0];
LogUtil.PrintInsert(tableName,contentValues,"sqlite");
}
});
}
});
然后sqlite的插入是能打印出来的,sqlcipher的插入并没有打印,lsp的模块日志没有报错找不到方法,看起来像未执行?但是应该不太可能,自己发送了很多消息,按理来说是应该会插入的。。百思不得其解,来求助一下。
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)