目的:检验你现有“签名校验工具/方案”的强度,把理论与实战对齐。
对比我们之前的理论基础,我实现了一个签名检测程序 Small Detector,专门面向以下三类关键检查:
Java 层签名检测:基于系统 API 读取自身(或目标包)签名信息,核验证书指纹、公钥等关键字段,评估应用“自查签名”的可靠性与覆盖面。
IO / 文件层检测:对 APK 本体与运行时文件进行只读校验,辅助识别“重签 / 二次打包 / 资源改动 / 运行态被替换”等风险线索。
包名一致性检测:对比 AndroidManifest 声明与运行时 Context.getPackageName()、ApplicationInfo、dataDir 等信息,识别包名绕过与路径伪装。
AndroidManifest
Context.getPackageName()
ApplicationInfo
dataDir
一句话总结:用 Small Detector 去“打”你自己的签名校验逻辑,看看真实强度如何。
定位:签名校验强度的红队/自测工具,用于灰盒/黑盒条件下的快速、可复现验证。
不建议:直接作为生产环境防护组件;生产防护应当整合更完整的运行态防护与风控策略。
通过 PackageManager / PackageInfo / Signature 等获取目标包签名信息。
PackageManager
PackageInfo
Signature
核验点:
证书指纹(SHA-256 / DER 摘要)与公钥参数的稳定比对;
证书主体/颁发者、有效期等基础一致性;
对“仅做字符串比对”的薄弱实现给出提醒。
针对 APK 归档与关键条目进行只读核查:
Zip 结构合理性(中央目录偏移、条目数量、对齐特征等)。
AndroidManifest.xml、resources.arsc、.dex 条目大小与压缩策略的异常指纹。
AndroidManifest.xml
resources.arsc
.dex
运行时文件与 FD 侧线索(只读探测):
open/fstat/readlink/ 等路径与挂载信息,以发现被替换或重定向迹象。
open
fstat
readlink
对齐以下信息源,识别包名伪装:
AndroidManifest 中的包名;
运行时 Context.getPackageName()、ApplicationInfo、dataDir、uid 等;
uid
/data/user/0/<package>/... 路径推导是否与声明/运行时一致。
/data/user/0/<package>/...
注:本版本不包含 V3 对抗相关内容;如需更深入的结构比对,可在后续扩展版中开启。
安卓 7.0+ 推荐;允许“未知来源”后直接安装 APK。
场景 A:重签识别
取一份你的正式 APK;2) 使用调试证书重签;3) 分别检测并对比结果。预期:能稳定识别重签/二次打包,且 Java 层比对不被简单绕过。
场景 B:运行态替换线索在常规与带 Hook/文件重定向的环境分别运行,关注 IO 报告与异常指纹。
场景 C:包名伪装识别对比 Manifest 与运行时包名/路径/UID 是否一致,识别伪装或“多开容器”痕迹。
调试环境可能闪退:属于自检/对抗副作用,用于提示运行态不可信。
开启 eBPF Hook 可能出现对抗:不同内核策略下可能异常退出。
内核强制反调试(写死策略):如系统层禁止调试/跟踪,也可能触发闪退。
这些现象用于暴露“实验室强度 ≠ 真实环境强度”。若你的签名校验能在此环境下仍然产出可信结论,说明方案更稳健。
证书/指纹:显示证书摘要、公钥要素、主体/颁发者等。
文件/结构线索:Zip/Manifest/DEX/资源条目与运行时 FD 信息的异常提示。
包名一致性:Manifest、运行时信息、路径三者是否一致。
建议做法(我的观点):
将 Small Detector 作为签名校验强度门禁接入 CI:重签 → 检测 → 必须失败;
同时保留 离线文件基线(哈希、大小、条目数)与运行态自检两条线,避免单点策略被绕过。
蓝奏云(直装包):
a6dK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6$3k6T1i4K6u0W2L8r3q4F1P5X3!0#2N6#2)9J5k6h3y4G2L8g2)9J5c8X3W2G2d9g2S2B7x3K6c8C8k6%4x3$3k6l9`.`.
GitHub(APK 与资料):
077K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6Y4K9i4c8Z5N6h3u0Q4x3X3g2U0L8$3#2Q4x3V1k6z5K9g2c8A6j5h3&6q4M7W2S2A6L8X3M7$3y4U0k6Q4x3V1k6Q4x3X3c8m8L8X3c8J5L8$3W2V1f1X3g2$3k6i4u0K6k6g2)9J5c8X3u0D9L8$3u0Q4x3V1k6E0j5h3W2F1i4K6u0r3i4K6t1#2c8e0N6Q4x3U0g2m8c8q4)9J5y4f1u0q4i4K6t1#2c8e0g2Q4x3U0f1&6x3q4)9J5y4e0S2p5i4K6t1#2c8e0k6Q4x3U0g2m8x3q4)9J5y4f1p5I4i4K6t1#2c8e0W2Q4x3U0g2m8b7g2)9J5y4e0S2o6i4K6t1#2c8e0N6Q4x3U0f1&6b7W2)9J5y4f1t1^5i4K6t1#2c8e0g2Q4x3U0f1^5y4g2)9J5y4f1t1K6i4K6u0r3f1$3#2S2L8r3I4Q4x3U0f1J5x3p5c8W2N6r3g2U0N6r3!0J5i4K6u0W2j5i4m8C8
仅用于学习研究与自测;严禁用于未授权的渗透、绕过、攻击。
使用者需确保行为合规,一切后果自负。
—— 目标始终如一:用可复现实验把签名校验做“硬”,让强度可量化、可回归。
作者目前的 的环境位android 13 在你的设备上可能不兼容
传播安全知识、拓宽行业人脉——看雪讲师团队等你加入!