Frida 无法及时挂钩共享库加载,第二次被记录

问题描述 投票:0回答:0

我在使用 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 是执行此操作的最快方法还是比其他方法慢?还有其他方法可以尝试吗?我使用这种方式是因为每次调用时动态库名称都不相同,所以我不能用通常的方式来做。

真的很感激一些指导或其他我可以尝试的事情......

dynamic shared-libraries hook frida
© www.soinside.com 2019 - 2024. All rights reserved.