基本上,我正在Android上调试封闭源代码二进制文件,并且我想在这两者之间执行一些代码,这些代码足够大,无法放入Codecave。那么可以单独用我的代码编译库,然后从目标二进制文件中调用它吗?
如果是,那怎么办?我的代码。

我有另一个建议。
我知道该封闭源二进制文件的接口,那么有可能编写包装二进制文件吗?
例如,假设封闭源二进制文件是libfoo.so。然后有可能写一个二进制的libbar.so,它实际上加载libfoo.so并将函数调用发送到libfoo.so。 dll和通常是一些包装可执行文件。

#1 楼

“包装”绝对是可能的,我通常用于Android反向工程的技术之一是“填充”二进制文件。本质上,您编写的是基于Java / Application或C / Native的小型应用程序。此处是一个示例;

https://github.com/rednaga/native-shim

这允许您稍加修改即可调用所需的任何方法。

#2 楼

如果该库是静态链接的,则不能在不更改可执行文件的情况下对其进行更改。但是,您可以在调试会话期间使用Frida来拦截特定的调用,自动执行此任务并运行自己的(用惊奇的)JavaScript代码编写的代码。