把 v2.9.7 的 APK 拖进 apksigner,SHA-256 与官方页面公示值差了 4 位
3 月 12 日傍晚,我在旧笔记本上跑完 apksigner verify --print-certs,输出指纹尾段是 …a91c,而页面写的是 …a9f4。不是我眼花了,是那个镜像站把包重打过。这件事让我从此只信两条独立来源的哈希对照。
这里收录 10 条与 imtoken安卓版下载v2.9.7 相关的手记:版本号如何被伪造、安装包哈希在哪些环节被替换、钓鱼站点怎样把下载按钮做成两套、以及一次旧手机上的安装失败记录。
每条都指向一件具体的事:一个包、一台设备、一次对话、或一个被改过的域名。没有归纳性的空话。
3 月 12 日傍晚,我在旧笔记本上跑完 apksigner verify --print-certs,输出指纹尾段是 …a91c,而页面写的是 …a9f4。不是我眼花了,是那个镜像站把包重打过。这件事让我从此只信两条独立来源的哈希对照。
我用 curl 拉了同一关键词落地页的直链,得到 27.4MB、31.2MB、18.9MB 三个体积。后两个明显是套壳。有意思的是,最大那个反而是原包——套壳通常省掉图片资源,体积会反而更小,这点跟直觉相反。
老周把截图发我,页面右下角和中间各有一个蓝色下载按钮,中间那个是 display:none 在移动端才显示。他在 6.1 英寸屏上点错了,装进一个带推送 SDK 的空壳。这种双按钮布局我在两年前的一篇< a>记录里也提过。
版本号是字符串,改起来零成本;versionCode 是整数,升级逻辑靠它。我见过把 versionName 改成 2.9.7 而 versionCode 停在 29041 的包,装上后永远收不到新版本提示,因为系统的比较逻辑认为它没变。这是个很低级但很常见的破绽。
那台机器还剩 1.8GB 存储,按说不该卡。拔掉数据线、开飞行模式后重试,34 秒装完。我判断是安装过程中包管理器在校验证书链时触发了网络回查。这条没什么学术价值,但它是那晚我唯一确定的事实。
用零代替字母 o,在无衬线字体下几乎看不出差别。WHOIS 显示注册商在境外,隐私保护开启。我用 dig 查了它的 A 记录,指向一台与某图床共用 IP 的服务器。这个细节说明它租的是便宜共享主机,随时会跑。
先用 aapt dump badging 拿包名和 versionCode,再用 apksigner 对证书,最后把 SHA-256 贴进两个独立渠道比对。第三步最重要也最容易被跳过。我把这三步写在便签上贴在显示器边框,已经贴了四个月。
倒计时是典型的心理施压设计,制造稀缺感。他问这算不算诈骗。我说单凭倒计时不算,但它几乎总与二次跳转同时出现——倒计时结束时按钮指向的不是直链,而是一个短链服务。那个短链,才是真正要看的地方。
多出来的两项与后台定位和读取已安装应用列表有关。这未必是恶意,功能迭代常带权限增长,但值得追问一句为什么。我把两份 manifest 用 diff 排在一起,红绿交错的样子像一份没校对完的稿子。这句话不是比喻,是我当时的真实观感。
一个普通用户想装个东西,理应不需要懂证书、哈希、包名。现在他得学。我不认为这是用户的问题,也不是「多留个心眼」能解决的。把鉴别成本转嫁给终端用户,是分发链条上每一环都在偷懒的结果。这话可能得罪人,但我保留。
这一栏是我在核对这 10 条笔记时顺手记下的站内参考,有的是查页面的路径,有的是图库资料的入口,不构成对任何站点的推荐,只是把当时点开过的东西留个位置。比如查安装说明时在 qq浏览器怎么打开qq网页版 上绕了一圈;比对素材来源时翻过 49.49cm资料图库的下载方法;还有几处资料页,澳门免费公开资料、澳门新49图库资料、qq浏览器直接输入网址、新奥门49图库资料还原,都在我的浏览器历史里排在一起,时间戳都是那几天深夜。