复制/提取/修补 android apk 签名和比较 apk
项目描述
apksig复印机
复制/提取/修补 android apk 签名和比较 apk
apksigcopier
是一种用于将 android APK 签名从已签名的 APK 复制到未签名的 APK 的工具(以验证可重现的构建)。它还可用于比较具有不同签名的两个 APK。它的命令行工具提供四种操作:
- 将签名直接从已签名的 APK 复制到未签名的 APK
- 从已签名的 APK 中提取签名到目录
- 将先前提取的签名修补到未签名的 APK 上
- 比较两个具有不同签名的 APK
提炼
$ mkdir meta
$ apksigcopier extract signed.apk meta
$ ls -1 meta
8BEA2A77.RSA
8BEA2A77.SF
APKSigningBlock
APKSigningBlockOffset
MANIFEST.MF
修补
$ apksigcopier patch meta unsigned.apk out.apk
复制(提取和补丁)
$ apksigcopier copy signed.apk unsigned.apk out.apk
相比
此命令需要apksigner
.
$ apksigcopier compare foo-from-fdroid.apk foo-built-locally.apk
$ apksigcopier compare --unsigned foo.apk foo-unsigned.apk
帮助
$ apksigcopier --help
$ apksigcopier copy --help # extract --help, patch --help, etc.
$ man apksigcopier # requires the man page to be installed
环境变量
可以将以下环境变量设置为1
、yes
或
true
覆盖默认行为:
- 设置
APKSIGCOPIER_EXCLUDE_ALL_META=1
为排除所有元数据文件 - 设置
APKSIGCOPIER_COPY_EXTRA_BYTES=1
为在数据之后复制额外的字节(例如 v2 sig)
Python API
>>> from apksigcopier import do_extract, do_patch, do_copy, do_compare
>>> do_extract(signed_apk, output_dir, v1_only=NO)
>>> do_patch(metadata_dir, unsigned_apk, output_apk, v1_only=NO)
>>> do_copy(signed_apk, unsigned_apk, output_apk, v1_only=NO)
>>> do_compare(first_apk, second_apk, unsigned=False)
您可以分别使用False
、None
和True
代替NO
、AUTO
和
YES
。
可以设置以下全局变量(默认为False
)以覆盖默认行为:
- 设置
exclude_all_meta=True
为排除所有元数据文件 - 设置
copy_extra_bytes=True
为在数据之后复制额外的字节(例如 v2 sig)
常问问题
apksigcopier 支持哪些类型的签名?
它目前支持 v1 + v2 + v3(它是 v2 的变体)。
它还应该支持 v4,因为它们存储在单独的文件中(并且需要补充的 v2/v3 签名)。
使用该extract
命令时,v2/v3 签名保存为
APKSigningBlock
+ APKSigningBlockOffset
。
制表符完成
对于 Bash,将其添加到~/.bashrc
:
eval "$(_APKSIGCOPIER_COMPLETE=source_bash apksigcopier)"
对于 Zsh,将其添加到~/.zshrc
:
eval "$(_APKSIGCOPIER_COMPLETE=source_zsh apksigcopier)"
对于鱼,将其添加到~/.config/fish/completions/apksigcopier.fish
:
eval (env _APKSIGCOPIER_COMPLETE=source_fish apksigcopier)
要求
- Python >= 3.5 + 点击。
- 该
compare
命令还需要apksigner
.
Debian/Ubuntu
$ apt install python3-click
$ apt install apksigner # only needed for the compare command
安装
Debian
Debian 不稳定的官方软件包 可用:
$ apt install apksigcopier
您还可以使用该分支手动构建 Debian 包,或通过 GitHub 版本debian/sid
下载预构建的包。.deb
NixOS 和 Arch Linux
官方包也可以在 nixpkgs stable 和Arch Linux (及其衍生版本)中获得。
使用点子
$ pip install apksigcopier
注意:根据您的系统,您可能需要使用 egpip3 --user
而不是pip
.
来自 git
注意:这会安装最新的开发版本,而不是最新版本。
$ git clone https://github.com/obfusk/apksigcopier.git
$ cd apksigcopier
$ pip install -e .
注意:您可能需要添加 eg~/.local/bin
才能$PATH
运行apksigcopier
.
要更新到最新的开发版本:
$ cd apksigcopier
$ git pull --rebase
执照
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
内置分布
apksigcopier -1.0.1.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 0699ff5099385d57a4817013c2fafd48e18054b0017a650c6df66a11432a004f |
|
MD5 | d4cc7c36d0f4276b4a5741249257acda |
|
布莱克2-256 | 28b559ad9cc7d4a193ee0cfbf8a1935d520eb4abdb60265c5e2f7da3733d4ea5 |
apksigcopier -1.0.1-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9cd9970bbd8ed7bbd28a02c124300b7a0ff581e71a6351512110c1d89b8dd94b |
|
MD5 | a0ea4309751f0020a908a9c90f363ee5 |
|
布莱克2-256 | 361708d6068a521b5f552c64d8820fc2db6e6988555b9174d229e7a28e430f5a |