Apksigner 不验证签名

2024-05-02

我试图使用 apksigner 验证最新 Gmail 应用程序(版本 8.11.25.224)的签名,但失败了。

I used:

apksigner verifiy --verbose --print-certs <apk.file>

结果是:

DOES NOT VERIFY
ERROR: APK Signature Scheme v2 signer #1 Malformed additional attribute #1

我正在寻找发生这种情况的解释,但找不到解决此问题的任何方法。我经历过一点,如果你补充一下--min-sdk-version 28到 apksigner 命令的选项,结果是:

Verified using v1 scheme (JAR signing): false
Verified using v2 scheme (APK Signature Scheme v2): false
Number of signers: 1
Signer #1 certificate DN: CN=Android, OU=Android, O=Google Inc., L=Mountain View, ST=California, C=US
Signer #1 certificate SHA-256 digest: f0fd...
Signer #1 certificate SHA-1 digest: 3891...
Signer #1 certificate MD5 digest: cde9...
Signer #1 key algorithm: RSA
Signer #1 key size (bits): 2048
Signer #1 public key SHA-256 digest: 2b06...
Signer #1 public key SHA-1 digest: b2da...
Signer #1 public key MD5 digest: a90c...

如果您使用 jarsigner 工具,结果是:


WARNING:
This jar contains entries whoes certificate chain is invalid.
Reason: PKIX path bulding failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
This jar contains signatures that does not include a timestamp. Without a timestamp, users may not be able to validate this jar after the signers certificate's expiration date (2036-01-08) or after any future revocation date.

重新运行-verbose and -certs选项以了解更多详细信息。我上传了 Gmail APK 文件。


如果 APK 使用 v3 签名方案进行签名,但 apksigner 的版本已过时且不支持此方案,则会发生这种情况。阅读警告:

apksigner version
    0.8    
apksigner verify --verbose "Signal-website-universal-release-4.50.5.apk"
    DOES NOT VERIFY
    ERROR: APK Signature Scheme v2 signer #1: Malformed additional attribute #1
    WARNING: APK Signature Scheme v2 signer #1: Unknown signature algorithm: 0x421

因此,签名算法对于 apksigner 0.8 版本来说是未知的。我不会称其为错误(如Pierre https://stackoverflow.com/a/54790814/4680735确实如此),但错误消息可能会更清晰,如果旧版本至少能够检查 v2 签名会更好。 最烦人的一点(提到Freedo https://stackoverflow.com/questions/54782328/apksigner-does-not-verify-signature#comment102066450_54790814)是 Ubuntu 仍然为所有版本提供旧的 0.8 apksigner 软件包(软件包.ubuntu.com https://packages.ubuntu.com/search?keywords=apksigner)甚至是最新的 Ubuntu 19.10 (eoan) 并且没有更新版本的 ppa。 您至少需要 0.9 版本,该版本目前只是 Android SDK 构建工具的一部分。

对我来说最简单的方法是安装 Android Studio 并至少打开一次以自动下载最新的 Android SDK。 Ubuntu 19.10 App Center 确实将其安装为 snap,然后 SDK 位于我的主目录中:

./Android/Sdk/build-tools/29.0.2/apksigner version
    0.9
./Android/Sdk/build-tools/29.0.2/apksigner verify --verbose --print-certs "Signal-website-universal-release-4.50.5.apk" 
    Verifies
    Verified using v1 scheme (JAR signing): true
    Verified using v2 scheme (APK Signature Scheme v2): true
    Verified using v3 scheme (APK Signature Scheme v3): true
    Number of signers: 1
    Signer #1 certificate DN: CN=Whisper Systems, OU=Research and Development, O=Whisper Systems, L=Pittsburgh, ST=PA, C=US
    Signer #1 certificate SHA-256 digest: 29f34e5f27f211b424bc5bf9d67162c0eafba2da35af35c16416fc446276ba26
    Signer #1 certificate SHA-1 digest: 45989dc9ad8728c2aa9a82fa55503e34a8879374
    Signer #1 certificate MD5 digest: d90db364e32fa3a7bda4c290fb65e310
    Signer #1 key algorithm: RSA
    Signer #1 key size (bits): 1024
    Signer #1 public key SHA-256 digest: 75336a3cc9edb64202cd77cd4caa6396a9b5fc3c78c58660313c7098ea248a55
    Signer #1 public key SHA-1 digest: b46cbed18d6fbbe42045fdb93f5032c943d80266
    Signer #1 public key MD5 digest: 0f9c33bbd45db0218c86ac378067538d
    WARNING: META-INF/* not protected by signature.

META-INF文件夹中的文件有很多警告,因为该文件夹被排除在签名之外,包含大量版本文件和证书。这也是为什么仅仅从 APK 中读取证书是不够的,就像一些pages https://dev.webonomic.nl/how-to-check-a-the-certificate-on-an-android-app-apk推荐。

编辑: 也可以看看 ”如何验证APK的SHA256指纹 https://security.stackexchange.com/questions/178936/how-to-verify-sha256-fingerprint-of-apk"

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Apksigner 不验证签名 的相关文章

  • Android 通知进度条冻结

    这是我正在使用的代码 http pastebin com 3bMCKURu http pastebin com 3bMCKURu 问题是 一段时间后 文件变得更重 通知栏下拉速度变慢 最后它就冻结了 你的通知太频繁了 这就是它冻结的原因 让
  • GCM 向主题发送消息:TOO_MANY_TOPICS 错误

    以前 GCM 每个应用程序有 100 万个主题订阅的限制 我发现他们现在已经取消了这一限制 基于发布 订阅模型 主题消息支持 每个应用程序无限订阅 https developers google com cloud messaging to
  • Android SoundPool 堆限制

    我正在使用 SoundPool 加载多个声音剪辑并播放它们 据我所知 它的功能 100 正确 但在 load 调用期间 我的日志中充斥着以下内容 06 09 11 30 26 110 ERROR AudioCache 23363 Heap
  • Firebase Analytics 禁用受众国家/地区跟踪

    我正在开发一个严格不允许位置跟踪的应用程序 我想使用 Firebase Analytic 的其他功能 例如 PageTransitions 和 Crashalitics 但如果我无法禁用受众位置跟踪 我就无法使用其中任何功能 这是我在 An
  • 在自定义对象中创建时粘性服务不会重新启动

    我有一个具有绑定服务的单例对象 我希望它重新启动 当我从启动器启动应用程序时 单例对象将初始化并绑定到这个现有的服务实例 以下是在单例中创建和绑定服务的代码 public class MyState private static MySta
  • Android libgdx 首选项丢失

    我在 Libgdx 引擎中创建了 Android 游戏 一段时间后 我注意到在某些应用程序杀手中杀死该应用程序后 或者如果我在 Android 设置中执行 强制关闭 操作 我保存到首选项中的游戏选项就会丢失 有办法防止这种情况吗 我从来没有
  • 线程自动利用多个CPU核心?

    假设我的应用程序运行 2 个线程 例如渲染线程和游戏更新线程 如果它在具有多核 CPU 当今典型 的移动设备上运行 我是否可以期望线程在可能的情况下自动分配给不同的核心 我知道底层操作系统内核 Android linux内核 决定调度 我的
  • 在意图过滤器中使用多个操作时的默认值

    尝试理解 Android 中的意图和操作并查看文档 http developer android com guide topics intents intents filters html 但我一直看到的一件事是定义了多个操作的意图过滤器
  • 已经使用 AsyncTask doInBackground 但新数据未显示

    我使用 AsyncTask 创建一个聊天室来接收消息 因此它总是检查即将到来的消息并将其显示给客户端 但代码似乎无法按我希望的方式工作 在客户端只显示所有旧数据 新数据不显示 因为当我尝试从服务器发送消息时 新数据没有显示在客户端中 我对这
  • 请求位置更新参数

    这就是 requestLocationUpdates 的样子 我使用它的方式 requestLocationUpdates String provider long minTime float minDistance LocationLis
  • 应用程序未安装在 Android 模拟器上

    我正在 android Geocoder 中开发一个应用程序 当我运行该应用程序时 它会显示 2011 01 11 11 08 13 GeoTourProject 自动目标模式 使用现有模拟器 emulator 5554 运行兼容的 AVD
  • Android 版 Robotium - solo.searchText () 不起作用

    我在使用 Robotium 时遇到 searchText 函数问题 我正在寻找这个字符串
  • minHeight 有什么作用吗?

    在附图中 我希望按钮列与图像的高度相匹配 但我也希望按钮列有一个最小高度 它正确匹配图像的高度 但不遵守 minHeight 并且会使按钮向下滑动 我正在为按钮列设置这些属性
  • Flutter 深度链接

    据Flutter官方介绍深层链接页面 https flutter dev docs development ui navigation deep linking 我们不需要任何插件或本机 Android iOS 代码来处理深层链接 但它并没
  • 如何在C(Linux)中的while循环中准确地睡眠?

    在 C 代码 Linux 操作系统 中 我需要在 while 循环内准确地休眠 比如说 10000 微秒 1000 次 我尝试过usleep nanosleep select pselect和其他一些方法 但没有成功 一旦大约 50 次 它
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s
  • Android 设备上的静默安装

    我已经接受了一段时间了 在 Android 上静默安装应用程序是不可能的 也就是说 让程序安装捆绑为 APK 的应用程序 而不提供标准操作系统安装提示并完成应用程序安装程序活动 但现在我已经拿到了 Appbrain 快速网络安装程序的副本
  • Android 如何聚焦当前位置

    您好 我有一个 Android 应用程序 可以在谷歌地图上找到您的位置 但是当我启动该应用程序时 它从非洲开始 而不是在我当前的城市 国家 位置等 我已经在developer android com上检查了信息与位置问题有关 但问题仍然存在
  • android Accessibility-service 突然停止触发事件

    我有一个 AccessibilityService 工作正常 但由于开发过程中的某些原因它停止工作 我似乎找不到这个原因 请看一下我的代码并告诉我为什么它不起作用 public class MyServicee extends Access
  • 在 Google 地图上绘制线条/路径

    我很长一段时间都在忙于寻找如何在 HelloMapView 中的地图上的两个 GPS 点之间画一条线 但没有运气 谁能告诉我该怎么做 假设我使用扩展 MapView 的 HelloMapView 我需要使用叠加层吗 如果是这样 我是否必须重

随机推荐

  • python sympy计算余弦函数积分时出错

    因此 我直接尝试从 sympy 文档中获取示例 但出现了一个奇怪的错误 我正在使用 python 3 2 和 sympy 0 7 3 我一直在 ipython 笔记本上工作 尽管我认为这不会有什么不同 错误是 每当我创建 x 符号并尝试集成
  • 如何使用谷歌趋势查找编程语言流行总体趋势的统计数据

    我喜欢关注趋势浏览器 操作系统 语言等 我发现谷歌趋势是一个非常有用的资源有时但有时我无法获得我想要的信息 与多年来其他主要 Linux 发行版相比 Ubuntu 的增长非常明显 在发布日期附近有 6 个月度峰值 由于非编程相关事件而出现偏
  • 为什么在“if False:”块中注释赋值语句会导致差异“NameError”消息?

    如果我评论了baz 4中的声明if False 阻止我收到消息NameError name baz is not defined否则我收到消息NameError free variable baz referenced before ass
  • 从 MySQL 转储中删除 DEFINER 子句

    我有一个数据库的 MySQL 转储 其中有 DEFINER 子句 如下所示 DEFINER root localhost 也就是说 这些 DEFINER 子句位于我的 CREATE VIEW 和 CREATE PROCEDURE 语句中 有
  • 使用 sed 反转输入顺序

    我有一个文件 我们将其命名为 a txt 该文件包含以下文本行 do to what 我想知道 SED 命令是什么来反转此文本的顺序 使其看起来像 what to do 我必须做某种追加吗 就像将 do 附加到 to 所以它看起来像 to
  • 寻找使用库版本的方法?

    我正在通过库在多个电子表格上部署脚本 但正如您所知 脚本 目前 还无法知道它是否正在运行最新版本 我试图通过为我的代码创建自己的版本控制来找到解决此问题的方法 我有一个 Web 服务返回我的库代码的最新版本号 以便我可以对其进行比较 但 o
  • 使用更新面板时服务器控件丢失其 CSS 样式

    我在用我的项目的模板 我在表单中使用了 updatepanel 在更新面板中我采用了 asp net 的不同下拉列表控件 现在的问题是 当页面回发时 应用于下拉列表的 css 样式会丢失 因为我对 CSS 没有详细的了解 所以请帮助 现在有
  • 在 re.sub 中使用变量,以便 Python 解析多个日期时间格式字符串?

    我试图想出一个函数来将各种人类日期 时间格式字符串转换为Python兼容的字符串 来自 yyyy MMM dd to Y b d 到目前为止 我构建了下面的翻译字典 元组列表 yyyy Y MMM b 这样我可以将输入格式字符串中的占位符字
  • 获取运行时权限错误 E/Minikin: addFont 未能创建字体 /system/fonts/NanumGothic.ttf

    我在 google 和 stackoverflow 上搜索了很多 我得到了这个错误 E Minikin addFont 无法在片段中创建字体 system fonts NanumGothic ttf 之后重新加载片段 请帮我解决这个问题 在
  • redux 减速器类型“从不”

    我想使用 useSelector 来选择 rootStore 的正确状态 但无法正确获取状态 原因是主题缩减器根状态给我类型never export type RootState ReturnType
  • 忽略 Xamarin.Forms (PCL) 中的 SSL 证书错误

    有没有办法做类似这里描述的事情 https stackoverflow com a 2675183 https stackoverflow com a 2675183但在 Xamarin Forms PCL 应用程序中 我正在使用 Http
  • Pandas 旋转一列,同时使用与列标题相同的列值

    我想在数据框中旋转一列 其中列值成为列标题 而这些列的实际值成为1 or 0 例子 movie id cluster id answer id 0 73 1 4 1 80 1 5 4 81 1 2 7 84 1 1 10 88 1 1 11
  • google Drive api 是否支持 2 足 oauth?

    现在 我们有一个带有 Google Docs Api 和 2 条腿的 oauth 的应用程序 但是 我们希望迁移到使用 Oauth 2 0 的 Google Drive Api 我们可以将 2 条腿的 oauth 与 Google Driv
  • 如何在工作项更改事件中获取对 TFS 工作项的引用?

    看起来这非常简单 但我正在努力寻找我需要的东西 我正在实现一个 TFS 2013 事件处理程序 并且只想获取对引发更改事件的工作项的引用 获取标题似乎很容易 但我在事件签名对象中找不到属性或方法来为我提供对 WorkItem 对象的引用或查
  • Azure Pipelines 中的 NG 构建失败,出现 NPM 错误 134

    大约 50 的托管构建失败 并出现 npm 错误 134 我正在使用托管 vs2017 构建具有相同构建定义的相同提交 我正在使用 Angular CLI 构建 Angular 应用程序 npm 任务调用 run build 它在我的 pa
  • TypeScript GUID 类? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 有谁知道在 TypeScript 中像 GUID UUID 这样的 C 的良好 可靠的实现吗 我自己可
  • 当用户控件可见时将焦点设置到它

    I am showing a MessageBox and want the user to be able to copy the contents of the message using CTRL C The problem is t
  • 如何在应用程序启动时获取当前的 Facebook 访问令牌?

    在应用程序启动时 我需要知道用户是否已登录或未显示登录页面 我的第一次尝试是打电话AccessToken getCurrentAccessToken 但这不起作用 请参阅https stackoverflow com a 29854249
  • iOS 相机视频实时预览与拍摄的照片有偏移

    我正在使用相机工作 相机以实时反馈的形式呈现给用户 当用户单击时 就会创建图像并将其传递给用户 问题是图像被设计为位于最顶部位置 该位置高于实时预览显示的位置 您知道如何调整相机的框架 使实时视频的顶部与他们要拍摄的照片的顶部相匹配吗 我以
  • Apksigner 不验证签名

    我试图使用 apksigner 验证最新 Gmail 应用程序 版本 8 11 25 224 的签名 但失败了 I used apksigner verifiy verbose print certs