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

本文介绍了解决在使用NDK进行JNI代码调试时遇到的错误:Could not extract package's data directory的问题。文中详细解释了如何通过修改packages.list文件来确保应用处于调试模式,并确保run-as命令能够正确执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在用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的。这是个安全漏洞。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值