12得票2回答
如何在我的Android应用程序(非root设备)中挂钩系统调用

我正在尝试在非root设备上拦截Android应用程序所做的所有系统调用。 因此,每当我的应用程序写入/读取文件时,我希望拦截系统调用并对流进行加密/解密以实现安全目的。加密部分没有问题,但是如何拦截系统调用呢? 由于应用程序的某些部分是由第三方提供商开发的模块,我无法更改其源代码,因此没...

9得票3回答
为什么LD_PRELOAD在Python中不起作用?

在使用Python进行open()函数的函数插值时,似乎在第一次几个调用之后就无法正常工作了。我怀疑Python正在执行某种初始化操作,或者有一些东西暂时绕过了我的函数。 在这里,open调用显然已经被挂钩: $ cat a hi $ LD_PRELOAD=./libinterpose_p...

8得票3回答
通过soname替换共享对象的插入部分

我编写了一个共享对象,通过 LD_PRELOAD 和 dlsym 与 FreeType 的 FT_Load_Glyph 和 FT_Render_Glyph 函数进行交互以修改参数。 这个方法很好用,但我想知道是否有一种方法可以实现以下更改: 对于在特定主机(例如 Debian)上使用 F...

8得票4回答
在Linux中实现无需dlsym的函数重定向

我目前正在从事一个项目,需要跟踪几个系统调用和低级函数的使用,例如mmap、brk、sbrk等。到目前为止,我一直在使用函数拦截来完成这项工作:我编写了一个与我要替换的函数同名的包装器函数(例如mmap),并通过设置LD_PRELOAD环境变量将其加载到程序中。我通过使用dlsym加载指针来调...

7得票6回答
如何捕获无意的函数重定向?

我正在阅读我的书《专家级C编程》,看到了有关函数拦截的章节,如果无意中进行函数拦截,可能会导致一些严重难以发现的错误。 书中给出的例子如下: my_source.c mktemp() { ... } main() { mktemp(); getwd(); } libc m...