BabianNest / docs

怎么校验币安APK签名?两种工具实操

校验币安 APK 签名最实用的两种工具是 apksigner(命令行)和 Android 上的签名查看 App。本文给出 apksigner 完整命令、签名指纹的核对方法、以及不同版本币安 APK 签名变化的处理。

校验币安 APK 签名最实用的两种工具是 **apksigner(命令行)**和 Android 上的签名查看 App。直接答标题:apksigner 用 apksigner verify --print-certs Binance.apk 一行命令打印证书指纹(SHA-256),App 端用 ApkSignatureViewer 类工具直接查看。两种工具结果应一致,签名指纹只要和已知的币安官方指纹匹配就是真包。

签名校验是辨别仿冒 APK 最强的手段——包名可以仿冒,签名几乎不可能伪造。仿冒者重新打包后必须用自己的密钥重新签名,证书指纹会完全不同。本文给出两种工具的完整操作步骤,以及拿到签名后如何核对。如果你刚从 币安官网 下载了 APK,可以走完本文流程做最严格的校验。

为什么签名校验比包名校验更可靠

维度 包名 签名
是否容易仿冒 容易(改 manifest 即可) 极难(要拿到原始私钥)
是否唯一 一个 App 一个 一个开发者一组(可有多个)
是否会变 极少变 偶尔轮换
工具门槛 低(看应用信息即可) 中(要工具)
校验强度

签名校验是真伪辨识的最后一道关

工具 1:apksigner(命令行,最权威)

apksigner 是 Google 官方的 Android SDK 自带工具,业界最权威的 APK 签名验证工具

准备 apksigner

方法 1:装 Android Studio

Android Studio 自带 apksigner,路径在:

C:\Users\<你>\AppData\Local\Android\Sdk\build-tools\<版本>\apksigner.bat

或 Mac/Linux:

~/Library/Android/sdk/build-tools/<版本>/apksigner

方法 2:单独装 build-tools

不想装整个 Android Studio,可以单独下 command-line tools:

  1. 去 Android 开发者官网下载 command-line tools
  2. 解压后用 sdkmanager 安装 build-tools
  3. apksigner 就在 build-tools/<版本>/

命令 1:打印证书指纹

最常用的命令:

apksigner verify --print-certs Binance.apk

输出示例:

Signer #1 certificate DN: CN=Binance, O=Binance Holdings Limited
Signer #1 certificate SHA-256 digest: a1b2c3d4...(64 个十六进制字符)
Signer #1 certificate SHA-1 digest: f1e2d3...(40 个字符)
Signer #1 certificate MD5 digest: 1a2b3c...(32 个字符)

记下 SHA-256 指纹,去币安官方公告或开发者签名公示页核对。

命令 2:仅验证签名有效性

apksigner verify Binance.apk

输出 Verifies 表示签名有效(但不一定是币安的)。失败会输出错误原因(如签名损坏、被篡改)。

命令 3:查看签名方案

apksigner verify --verbose Binance.apk

输出会显示用了哪些签名方案:

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

币安官方 APK 通常使用 v2 + v3 双签名(APK Signature Scheme v2/v3),如果只看到 v1 → 可能是老版本或被处理过的包。

工具 2:Android App(手机端,最方便)

如果不想装命令行工具,可以在 Android 手机上直接用 App 查看签名。

推荐工具

App 名 平台 是否需要 root 显示内容
ApkSignatureViewer Android 包名 + 签名指纹
App Inspector Android 包名 + 权限 + 签名
APK Analyzer Android 完整 APK 结构

ApkSignatureViewer 操作步骤

  1. 装 ApkSignatureViewer(Google Play 或 F-Droid 找到)
  2. 装好币安 APK
  3. 打开 ApkSignatureViewer → 选 Binance
  4. 看到包名、版本、签名 SHA-256

App Inspector 操作步骤

  1. 装 App Inspector
  2. 打开后选 Binance
  3. 滑到底部 → 看签名 SHA-256

App 端工具的好处:不用电脑、不用 ADB、不需要 root,几十秒搞定。

两种工具结果应该一致

无论 apksigner 还是 App 端工具,输出的 SHA-256 指纹应该完全一样。如果不一致:

  • App 端可能算法实现错误 → 以 apksigner 为准
  • 安装后查的是真包,APK 文件是仿冒包 → 应当心
  • 工具版本太老 → 升级工具

核对币安官方签名指纹

拿到 SHA-256 指纹后,怎么知道是不是币安官方的?

来源 1:币安官方公告

币安官网的"应用安全"或"开发者"页面偶尔会公开 APK 签名指纹。但这个页面不是固定地址,要靠搜索。

来源 2:APKMirror 等知名镜像

APKMirror 是 Android 圈知名的 APK 镜像站,每个上架 APK 都有签名指纹页。可以下币安 APK 时看 APKMirror 上的"Cert sha-256"字段。

来源 3:交叉对比多版本

下载币安 APK 多个版本(v2.83.x、v2.84.x、v2.85.x),用 apksigner 分别打印指纹:

  • 都一致 → 大概率是同一个开发者签的真包
  • 不一致 → 可能其中某些是仿冒包,或者币安做了密钥轮换

来源 4:装在多台设备交叉验证

把同一个 APK 装到 3 台手机:A 是从官网下的、B 是别的来源、C 是朋友给的。用 App 端工具查 3 台的签名 SHA-256:

  • 都一致 → 都是同一份
  • A 和 B 一致但 C 不同 → C 可能装了仿冒包

完整校验流程

下面是一个推荐的完整校验流程:

第 1 步:下载 APK(来自官网)

币安官方App 入口下载约 85MB 的 APK。

第 2 步:核对文件大小

文件应是 80-95MB。明显偏离立刻删。

第 3 步:用 apksigner 看签名

在电脑上跑 apksigner verify --print-certs Binance.apk,记下 SHA-256 指纹。

第 4 步:核对包名

apksigner 同时会读 manifest,但更直接是用:

aapt dump badging Binance.apk | grep package

输出应是 package: name='com.binance.dev'

第 5 步:装机后再查一次

装到手机后用 ApkSignatureViewer 再查一次签名。两次结果一致 → 真包。

第 6 步:登录后看是否跳转 binance.com

启动 App,登录页应跳到 accounts.binance.com。如果跳到不知名网址,立刻卸载——可能是中间人劫持或仿冒包。

常见的签名异常情况

异常 可能原因 处理
Verifies 但 SHA-256 与已知不一致 仿冒包重新签名
Verification failed 签名损坏或被篡改
多个 Signer 一个 APK 有多个签名者,可能被注入 谨慎
仅 v1 签名 极老的版本或被工具重打包 谨慎
证书有效期已过 证书过期 看是否在轮换期
DN 字段是中文乱码 仿冒包用了非标准证书

apksigner 的几个进阶命令

验证签名块完整性

apksigner verify --print-certs --verbose Binance.apk

会输出每个签名方案的详情,能看到 v1/v2/v3 是否都有效。

查看签名块大小

apksigner verify --max-sdk-version=33 Binance.apk

针对特定 Android 版本验证签名兼容性。

检查是否签名后被修改

apksigner verify --check-signed Binance.apk

验证 APK 在签名之后没有被修改(包括 ZIP 注释、对齐)。

aapt 工具补充

apksigner 之外,aapt 也很常用——专门看 APK 元信息:

aapt dump badging Binance.apk

输出包含:包名、版本号、最低 Android 版本、应用名、申请的权限、Activity 列表等。

签名校验之外建议 aapt 看一眼申请的权限列表——仿冒包常请求异常权限(短信、通讯录、自启动),官方包只要通知/摄像头/存储/网络。

与包名校验、文件大小校验的关系

完整的真伪辨识应该是三层校验

层级 工具 用时 强度
文件大小 文件管理器 5 秒
包名 应用信息 / aapt 30 秒
签名 apksigner / App 1-2 分钟

具体可以看 币安 APK 包名核对 配合签名校验形成双保险,或者去 安卓 APK 分类 看更多 Android 端实操。

签名轮换的应对

少数情况下,币安会轮换签名密钥(比如使用 Android 11+ 的 APK Signature Scheme v3 签名轮换)。这时你会看到:

Signer #1: <旧签名 SHA-256>
Signer #2: <新签名 SHA-256>

两个签名同时出现属于轮换期,正常情况。只看其中一个就判定假包是错的。轮换期通常持续几个月。

FAQ

Q:apksigner 必须装 Android Studio 才能用吗? A:不需要。可以单独装 command-line tools(约 200MB),用 sdkmanager 装 build-tools 之后就有 apksigner。比装 Android Studio 节省 6GB+。

Q:APK 在传输过程中(比如发邮件、传网盘)签名会变吗? A:不会。APK 是一个 ZIP 文件,传输不会改变内部内容。如果传输后签名变了 → 路上被替换了,不是传输问题。

Q:手机直接装签名查看 App 比电脑跑 apksigner 准吗? A:算法上一样准。但 App 端实现可能有 bug 或读取权限限制。严苛场景以 apksigner 为准

Q:v2 和 v3 签名有什么区别? A:v1 是 JAR 签名(早期),v2 是 APK 整体哈希签名(更安全),v3 支持密钥轮换。Android 9+ 强制要求 v2,币安 APK 通常是 v2 + v3 双签名。

Q:为什么 apksigner 输出"DOES NOT VERIFY"? A:可能:① APK 损坏;② 签名被篡改;③ 你装的工具版本太老不识别新签名方案。先升级 build-tools 到最新,再试。

Q:能不能直接看 APK 解压后的 META-INF 目录判断签名? A:可以,但 META-INF 里只有签名块的二进制,人眼看不出来 SHA-256。还是要用 apksigner 这类工具计算。

Q:iOS App 也有类似的签名校验吗? A:iOS 的代码签名机制(Code Signing)由 Apple 强制,App Store 装的所有 App 都已通过签名验证。所以 iOS 用户不用手动校验签名。Android 的开放性导致需要用户自己校验。

Q:装上之后能否再校验签名? A:能。已装的 App 签名信息存在 /data/system/packages.xml(需 root)或者用 ApkSignatureViewer 类 App 直接读 PackageManager API。无 root 也能查。