【发布时间】:2018-01-07 13:05:45
【问题描述】:
在我们的 Android 服务应用程序中,我们使用 JNI 来调用共享库的 C++ 代码。在这段代码中,我们调用 C“系统”命令来执行另一个进程。此代码在所有 Android 操作系统上都运行良好,但现在在 Android 8 Oreo 上失败了。 是否有任何新的安全或其他限制阻止执行系统命令?
更多数据:
这个“c”代码从我的共享库中成功执行:
int error = system("ls -l /sdcard/tmp >> /sdcard/tmp/log.txt");
文件log.txt按预期填充,错误=0;
但此命令始终失败并出现意外错误代码 (40704):
int error = system("/system/bin/7za t /sdcard/tmp/Camera.7z >> /sdcard/tmp/log.txt");
我可以从 shell(“adb shell”)执行这个命令。 7za 是一个兼容的 Android 应用程序,它没有可写和可执行的段(readelf --program-headers -W libBadFlags.so | grep WE)。
我试图在我的根 Android 设备上的许多地方找到 7za,并使用不同的权限,但仍然遇到同样的问题。
【问题讨论】:
标签: android c++ android-ndk android-8.0-oreo