怎么校验币安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:
- 去 Android 开发者官网下载 command-line tools
- 解压后用
sdkmanager安装 build-tools - 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 操作步骤
- 装 ApkSignatureViewer(Google Play 或 F-Droid 找到)
- 装好币安 APK
- 打开 ApkSignatureViewer → 选 Binance
- 看到包名、版本、签名 SHA-256
App Inspector 操作步骤
- 装 App Inspector
- 打开后选 Binance
- 滑到底部 → 看签名 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 也能查。