我在使用 Frida 挂钩在我的应用程序运行时调用的库时遇到了一些问题。对于上下文,我可以使用 LLDB 在特定点连接到它。通过使用一个条件,我可以侦听一个变量,然后在它被命中并且它起作用时进行修补。我还有其他 Frida 补丁可以达到这一点。
我正在使用这个:
const binarybase = Process.enumerateModules().filter(ex => ex.name.includes("binaryname"))[0].base;
我之所以这样做是因为每次运行时lib的名称都不一样。第一次被调用时我得到:
{"type":"error","description":"TypeError: cannot read property 'base' of undefined","stack":"TypeError: cannot read property 'base' of undefined 在 onEnter (/filename.js:55)","fileName":"/filename.js","lineNumber":55,"columnNumber":1}
第二次调用它会找到 nameb(这本身有点奇怪,因为它似乎在 lldb 中只被调用一次,所以不确定为什么在使用上述技术时它被调用两次)。
带有过滤器的 enumerateModules 是执行此操作的最快方法还是比其他方法慢?还有其他方法可以尝试吗?我使用这种方式是因为每次调用时动态库名称都不相同,所以我不能用通常的方式来做。
真的很感激一些指导或其他我可以尝试的事情......