【发布时间】:2016-08-23 18:57:54
【问题描述】:
我想在非 android linux 机器上运行我从 apk 中获取的 x86 共享库。
它与 android libc 相关联,所以我从 android ndk 中获取了libc.so。
在调试了一段时间的段错误之后,我发现libc.so 是“作弊”,并且只包含许多库函数的 nop 实现:
$ objdump -d libc.so | grep memalign -A 8
0000bf82 <memalign>:
bf82: 55 push %ebp
bf83: 89 e5 mov %esp,%ebp
bf85: 5d pop %ebp
bf86: c3 ret
现在 ndk 还包含一个 libc.a,其中包含这些函数的实际实现,但我如何让我的进程加载这些并覆盖 libc.so 的 nop 函数?
还想了解更多有关 android 为何使用此技巧以及覆盖如何在那里工作的上下文。
【问题讨论】:
标签: android-ndk shared-libraries ld libc bionic