packages.xml与packages.list

2019-02-26  本文已影响0人  Wi1ls努力努力再努力

文件路径:/data/system/packages.xml
PKMS 扫描完目标文件后会创建该文件,当系统进行程序安装、卸载和更新等操作时,均会更新该文件。该文件保存了系统中与 Package 相关的一些信息。
这个文件非常大,大概框架

<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<packages>
  <version sdkVersion="xx" databaseVersion="xx" fingerprint="xxx" />
  <version volumeUuid="xxx" sdkVersion="xx" databaseVersion="xx" fingerprint="xxx"/>
  <permission-trees>
    ...
  </permission-trees>
  <permissions>
     ...
  </permissions>
  <package ...>
    ...
  </package>
  <updated-package ...>
    ...
  </updated-package>
  <shared-user ...>
    ...
  </shared-user>
  <keyset-settings ...>
    ...
  </keyset-settings>

<permission>:包含系统所有定义的权限信息
<package>:包含系统所有安装的 app 的详细信息
<shared-user>:包含所有系统定义的 shareuser的信息
<keyset-setting>:包含已安装app 签名的 public key 信息

<permissions>
  <item name="android.permission.REAL_GET_TASKS" package="android" protection="18"/>
  <item name="android.permission.SEND_RECEIVE_STK_INTENT" package="com.android.stk" protection="2"/>
  ...
</permission>
<keyset-setting version="1">
  <keys>
    <public-key identifier="1" value="MIIBIDANBgkq..."
    ...
  </keys>
  <keysets>
    <keyset identifier="1">
      <key-id identifier="1"/>
    </keyset/>
    ...
  </keysets>
  <lastIssuedKeyId value="58"/>
  <lastIssuedKeySetId value="58"/>
 </keyset-settings>
<package name="com.android.provider.telephony codePath="/system/priv-app/TelephonyProvider" nativeLibraryPath="/system/priv-app/TelephonyProvider/lib"  primaryCpuAbi="armeabi" publicFlags="805846533" privateFlags="8" ft="11e8dc5d800" it="11e8dc5d800" ut="11e8dc5d800" version="23" sharedUserId="1001">
  <sigs count="1">
    <cert index="0" key="3082..."
  </sigs>
  <perms>
    <item name="android.permission.SEND_RECEIVE_STK_INTENT" granted="true" flags="0"/>
    ...
  </perms>
  <proper-signing-keyset identifier="1" />
 </package>
<shared-user name="android.uid.system" userId="1000">
  <sigs count="1">
    <cert index="0"/>
  <sigs>
  <perm>
    <item name="android.permission.REAL_GET_TASK" granted="true" flags="0"/>
    ...
  </perm>
</shared-user>

文件路径:/data/system/packages.list
描述系统中存在的所有非系统自带的 APK 信息,当这些程序有变动时,PKMS 就会更新该文件
打开这个文件,可以发现每一行都是相同排列的内容:

com.android.providers.telephony 1001 0 /data/data/com.android.providers.telephony platform 3002,3004,3009,3003,3001,1021,3005,1000,2002,1015,1023,1010,1007,3006
...
com.tencent.mm 10113 0 /data/data/com.tencent.mm default 3002,3003,3001

用空格区分:

{column0} {column1} {column2} {column3} {column4} {column5}

一共有6列:

column value desc
column0 com.android.providers.telephony|com.tencent.mm 是 app 的包名,即 AndroidManifest.xml文件中定义的package内容。
column1 1001|10113 是 app 使用的 userid,如果没在AndroidManifest.xml中使用 android:sharedUserId,则app 安装时,系统自动给 app 分配 uid,以后此 app 运行便以这 UID 运行。
column2 0|0 指 app 是否处于调式模式,AndroidManifest.xml中android:debuggable指定。一般不特地指定,像比如 android studio 直接 debug 运行 app,这里就是1了。
column3 /data/data/com.android.providers.telephony|/data/data/com.tencent.mm 指 app 的数据存放路径,一般是"/data/data${package_name}"
column4 platform| default
column5 3002,3004,3009,3003,3001,1021,3005,1000,2002,1015,1023,1010,1007,3006|3002,3003,3001 app 所属于的user group,如果不属于任何 group 则为 none
上一篇 下一篇

猜你喜欢

热点阅读