Android 4.2 - 支持LD_PRELOAD吗?

时间:2013-01-20 15:46:17

标签: android android-ndk android-4.2-jelly-bean ld-preload

我想知道现在更新的Android版本是否支持LD_PRELOAD?

在4.0 ICS时它没有,在文档(NDK docs / SYSTEM-ISSUES.html)中仍有:

No support for LD_LIBRARY_PATH, LD_PRELOAD, RTLD_LOCAL and many other options.

但是几天前我在我的Android 4.2 Galaxy Nexus上使用了LD_LIBRARY_PATH,它起作用了(!)。

提前致谢!

2 个答案:

答案 0 :(得分:6)

虽然官方的NDK-r9d文档仍然说明相同,但事实证明LD_PRELOAD确实可以在root设备上运行。 运行

adb shell
setprop wrap.com.xyz.yourapp LD_PRELOAD=/path/to/your/library.so
stop
start
将库推入设备后

。 我在ANDROID-19仿真器上成功尝试了它,以提供函数的替代定义。

查看此链接 - http://cedricvb.be/post/intercepting-android-native-library-calls/

答案 1 :(得分:0)

一般来说,LD_LIBRARY_PATH已经在工程构建(a.k.a. rooted devices)上工作了很长一段时间。问题是这对生产构建没有帮助 - 不是因为加载器已更改,而是因为应用程序的环境是安全的。