我想运行一个 x86 共享库,它是从非 android linux 机器上的 apk 中获取的。
它与 android libc 相关联,所以我libc.so
从 android ndk 中获取了它。在调试了段错误一段时间后,我认为这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 为何使用此技巧以及覆盖如何在那里工作的更多上下文感兴趣。