run-as 命令调用成工所需的packages.list说明

在用ndk-gdb-py --verbose  --adb D:\android-sdk\platform-tools\adb.exe 调用gdb调试JNI代码时报错:

Could not extract package's data directory. Are you sure that your installed application is debuggable?

这个错报,run-as的调用不成功有关。网上有说法,要把run-as的权限改为"chmod 4751 /system/bin/run-as".这个说法没错只会我改了以后在adb shell下调用: run-as com.home.ququ.videotest(包名)还是会报错:

run-as: Package 'com.home.ququ.videotest' is unknown 这个是因为/data/system/packages.list里没有com.home.ququ.videotest相关的项,可能是安装程序被厂家改了。手工改这个文件时要理解其含义,网上找到

Android 6.0的packages.list说明

com.android.packageinstaller 10025 0 /data/data/com.android.packageinstaller platform 1028,3003,2001

  • 第一列是app的包名,也就是AndroidManifest.xml文件中的package=”xxx.xxx.xxx”设置的内容
  • 第二列是app的使用的userid, 如果没有在AndroidManifext.xml里使用android:sharedUserId属性指定UID, 在app安装的时候,系统会给这个app自动分配一uid,以后app运行时,就用这个UID运行
  • 第三列是app是否处于调试模式,由AndroidManifext.xml里android:debuggable指定
  • 第四列是app的数据存放路径,一般是”/data/data/${package_name}”这样的文件夹
  • 第五列是app的seinfo信息,这个好像和SEAndroid机制有关,具体我也不是太清楚,它的值好像有platform, default之分
  • 第六列是app所属的user group, 如果一个app不属于任何group, 这里的值是None

实际中我用的android2.3是这样的

com.android.camera 10007 0 /data/data/com.android.camera

com.home.ququ.videotest 10004 1 /data/data/com.home.ququ.videotest

前四项相同,没有后两项,改时注意userid就好,用busybox ps看一下实际com.home.ququ.videotest的userid再改。要不还会报错。

这样就通过了。run-as 只能调用debuggable的。这是个安全漏洞。

猜你喜欢

转载自blog.csdn.net/qushaobo/article/details/81055436
run