我有一个可加载mylib.so
的android应用。这个库有一个叫做decryptChar
的函数,我想挂钩并打印在那里计算出的字符串变量。我为此使用frida。我做了一些尝试,但是由于我没有经验,所以一切都失败了。我想在离开函数之前打印变量Key
,以便获得最终值。
我使用的代码如下
Interceptor.attach(Module.findExportByName("mylib.so", "decryptChar"), {
onEnter: function (args) {
console.log(this.Key.value);
}
});
执行此操作的正确方法是什么?
答案 0 :(得分:0)
您混合了几件事
onLeave参数是返回值,this
用于从onEnter传递数据
如果要打印静态方法的第一个参数,请假定它是指向字符串的指针
Interceptor.attach(Module.findExportByName("mylib.so", "decryptChar"), {
onEnter: function (args) {
console.log(args[0].readCString());
}
});
答案 1 :(得分:0)
您不能打印局部变量。您应该钩住变量的使用站点。如果在decryptChar
的另一个函数调用中使用了该变量,则应挂钩该函数。如果要查看decryptChar
中作为变量调用变量的函数是什么,最好使用ida pro这样的反汇编程序,因为要挂接的函数是在.so
库中定义的。
例如,使用write()
的变量作为参数调用了decryptChar()
函数,您钩住了write()
函数调用。然后,您可以打印变量。