吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 490|回复: 0
收起左侧

[学习记录] Android--通过aapt和sh脚本批量导出包名和应用名称

[复制链接]
mutex 发表于 2023-11-18 10:12

首先获取 arm 版本的开发者工具. 这是别人编译好的可执行文件
如果觉得不安全, 可以通过 apt 或者 AOSP 安装 arm 版本的 aapt

git clone https://github.com/JonForShort/android-tools.git

推送 arm64-v8a 的开发者工具到手机(老手机可能是 armeabi-v7a的, 请自行查询)

adb push ./android-tools/build/android-11.0.0_r33/aapt/arm64-v8a/bin/aapt /data/local/tmp

本地新建一个脚本 output_package_with_name.sh
其内容为:

#!/system/bin/sh

for pkg in $(pm list packages -3 | cut -d':' -f2); do
        pkg_loc=$(pm list packages -f ${pkg} | awk -F: '{print $2}' | awk -F .apk\= '{printf "%s.apk\n", $1}')
        pkg_info=$(./aapt dump badging ${pkg_loc} 2>>/data/local/tmp/error.output | grep "application-label:" | awk -F\' '{print $2}' )
        echo ${pkg} ${pkg_info}
done

并推送到手机:

adb push ./output_package_with_name.sh /data/local/tmp

输入如下命令进行:

adb shell
cd /data/local/tmp
sh ./output_package_with_name.sh > ./packages.txt

退出 adb shell 执行以下命令下载到本地查看即可:

adb pull /data/local/tmp/packages.txt ./

分隔线下面是原理讲解


主要是通过 pm list packages -3 来导出所有第三方包的包名
如果需要所有的包, 也就是需要包含系统包, 可使用 pm list package

然后使用 pm list packages -f 来找出包的 base.apk 的所在位置.

然后使用 aapt dump badging 来分析这个 base.apk

由于aapt里面存在诸如以下的 error:

AndroidManifest.xml:XXX: error: ERROR getting 'android:icon' attribute: attribute value reference does not exist

鉴于没有到 /dev/null 的访问权限, 所以脚本中使用了 2>>/data/local/tmp/error.output 将 Error 输出到另一个位置。

提示 2 是指 STDERR, 1 是指 STDOUT

过后可以将 error.output 删除

最后通过 echo ${pkg} ${pkg_info} 以 包名+空格+应用名称 的形式打印出来

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-24 18:43

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表