An *_*Hoa 13 security adb android-ndk
我正在寻找在Android 4.1(Jelly Bean)上运行本机ARM可执行文件的方法.例如,编译经典的C程序
// hello.c
#include <stdio.h>
int main() {
printf("Hello world");
}
Run Code Online (Sandbox Code Playgroud)
到ARMv7a可执行文件,比如hello使用Android NDK,然后在Android shell中运行它.我曾尝试的方法在网络上提出诸如推可执行文件/data/local通过
adb push hello /data/local
Run Code Online (Sandbox Code Playgroud)
更改允许执行的权限
adb shell chmod 755 /data/local/hello
Run Code Online (Sandbox Code Playgroud)
然后使用在shell中调用它们
adb shell /data/local/hello
Run Code Online (Sandbox Code Playgroud)
最后一步失败并出现错误:
/data/local/hello: not found
Run Code Online (Sandbox Code Playgroud)
但显然文件就在那里.我怀疑问题是Jelly Bean的shell不再允许执行外星二进制文件.谁能证实这一点并给我一个解决方案?
小智 6
如果要在Android中运行本机ARM二进制文件,则必须使用-static进行编译.
您用来构建的libc(如果使用标准的ARM工具链而不是Android NDK)与Android的libc(仿生)不同,因此当您的二进制文件打算在目标上动态链接到libc时,它不会因为libc不存在而目标.
使用-static选项,您可以在构建时从libc链接到所需内容,而不必担心动态链接内容.
| 归档时间: |
|
| 查看次数: |
1144 次 |
| 最近记录: |