1

我有一个加载mylib.so. 这个库有一个函数decryptChar,我想钩住并打印一个在那里计算的字符串变量。我为此目的使用frida 。我做了一些尝试,但考虑到我在这方面的经验不足,一切都失败了。我想Key在离开函数之前打印变量,以便获得它的最终值。

我使用的代码如下

Interceptor.attach(Module.findExportByName("mylib.so", "decryptChar"), {
    onEnter: function (args) {
        console.log(this.Key.value);
    }
});

这样做的正确方法是什么?

4

2 回答 2

1

你混合了几件事

onLeave 参数是返回值,this用于从 onEnter 传递数据

如果要打印静态方法的第一个参数,假设它是指向字符串的指针

Interceptor.attach(Module.findExportByName("mylib.so", "decryptChar"), {
    onEnter: function (args) {
        console.log(args[0].readCString());
    }
});

阅读文档@https ://www.frida.re/docs/javascript-api/#instruction

于 2019-05-23T00:07:14.843 回答
1

您不能打印局部变量。您应该挂钩变量的使用站点。如果该变量在另一个函数调用中使用decryptChar,则应挂钩该函数。如果您想查看变量调用了哪个函数作为参数decryptChar,最好使用 ida pro 之类的反汇编程序,因为您要挂钩的函数在.so库中定义。

例如,write()使用变量作为参数调用函数 from decryptChar(),则挂钩write()函数调用。然后,您可以打印变量。

于 2019-09-29T08:20:26.520 回答