Android LD_PRELOAD在安卓6.0上仍然有效吗
我试着在Android上学习一个教程。它在Ubuntu16.04上运行,但当我在Android上尝试时,它不起作用 以下是我的步骤: 将库推送到设备上Android LD_PRELOAD在安卓6.0上仍然有效吗,android,system,native,Android,System,Native,我试着在Android上学习一个教程。它在Ubuntu16.04上运行,但当我在Android上尝试时,它不起作用 以下是我的步骤: 将库推送到设备上 adb push libpreload.so /data/libpreload.so 在Android终端上设置系统属性: setprop com.foo.bar LD_PRELOAD=/data/libpreload.so 我使用strace追踪了Android设备上的所有系统调用。我不明白这个信息: "write(0, "Hello, K
adb push libpreload.so /data/libpreload.so
在Android终端上设置系统属性:
setprop com.foo.bar LD_PRELOAD=/data/libpreload.so
我使用strace追踪了Android设备上的所有系统调用。我不明白这个信息:
"write(0, "Hello, Kernel!\n", 15Hello, Kernel!) = 15"
我错过什么了吗?Ld_preload在Android 6.0上工作吗?您的setprop调用不正确。您需要设置目标包的wrap属性:
setprop wrap.com.foo.bar LD_PRELOAD=/data/libpreload.so
还要确保库可读且可执行:adb shell chmod a+rx/data/libpreload.so.回答此问题,因为缺少一些信息,如果人们发现此问题,这些信息可能会有所帮助
是的,它在安卓6上工作。
除了上面回答中提到的命令错误之外,Android 6上的SELinux还阻止了共享库。您必须将其设置为许可模式才能使其工作。为此,您很可能需要在手机上使用root访问权限
启用:
亚行壳牌
苏
设置强制执行0
使用getenforce验证是否将其设置为Permissive
禁用:
亚行壳牌
苏
SET1
使用getenforce验证是否将其设置为Enforcing