我的应用正在尝试获取隐藏APIs的系统VPN配置文件列表。但是,隐藏的API需要在系统进程中运行。谷歌之后,我找到this,它可以创建一个具有root权限的新进程。
Process suProcess = Runtime.getRuntime().exec("su");
但它只能在新进程中运行shell命令。如何在新流程中运行自定义功能?
答案 0 :(得分:1)
使用基础系统的权限运行您的应用程序。您需要使用操作系统的固件证书对应用程序进行签名。如果您要定位某个设备,这只是一个选项。
然后,您可以在AndroidManifest.xml
文件中共享系统的uid。
android:sharedUserId="android.uid.system"
由于您拥有平台密钥,您如何签署APK?这是我用来签署APK的.bat文件。您可以在命令中查看必要的文件(signapk.jar
,platform.x509.pem
,platform.pk8
):
@echo off
echo Signing APK "%1" with platform certificate.
java -Xms256m -Xmx512m -jar %~dp0\sign\signapk.jar -w %~dp0\sign\platform.x509.pem %~dp0\sign\platform.pk8 %1 test.apk
move test.apk %1 >NUL
echo APK is signed.
timeout 2