github ldxm666/MapAdKiller v2.3.2-play
高德 Play 版 2.3.2 (17.02.2.2014)

2 hours ago

高德 Play 版 · 免 root 内置版 2.3.2

针对 Google Play 版高德地图 17.02.2.2014(versionCode 170105)。
国内版(17.02.0.2010)请用主 Release 里的 Amap-2.3.2-nonroot-embedded.apk。

为什么 Play 版要单独出包

Play 版与国内版是两次独立构建,不是同一份代码的两种分发:

  • 8 个 DEX 全部不同
  • libamapr.so 也不同(32,984,120 vs 32,983,424 字节)

所以两版不能共用同一组 native 补丁地址。本版内置双变体表,运行时按三重自检选择,
三关全过才写内存;都不匹配则完全不碰,高德零崩溃。

本次适配做了什么

  • native 偏移重推导:Play 版 VT_SLOT_PROCESS 0x1f40b08 / FN_PROCESS 0x18b1a74 /
    GADGET 0xe842c8。旧 gadget 0xe84148 在 Play 版里已变成 ret; stp…(某个函数的中间),
    照抄会跳进无效位置 —— 这正是选择靠自检、不靠版本号的原因。
  • 去更新改为按名 + 形状校验:AppUpgradeController.w 签名从 (e,ZZ)V 变成 (I,String,Z)V,
    且 appupgrade.e 这个类在 Play 版里不存在,精确签名那条路会整条落空。改后两版都命中。
  • 候选表保留多候选:k84.f/s27.d、wm3.c/lv3.c 各只在一个版本上命中,单留一个会静默失效。

真机验证(170105)

建筑去除    开→无楼块 / 关→有楼块(A/B 双向)
帧率上限    60→59~60   90→70~82   120→117~120
开屏拦截    alimama_blocked sendSplashScreen + sendH5Log
去更新      update_block_install w=1 v=1
悬浮球      floating layer attached to NewMapActivity
公告/版本   ver_code=2302 已从服务器取到

90 档落在 80 附近是 120Hz 屏幕整数分频的正常结果,不是缺陷。

安装

四个文件必须一起装,只装 base.apk 会报 INSTALL_FAILED_MISSING_SPLIT:

adb install-multiple base.apk split_config.arm64_v8a.apk split_config.xxxhdpi.apk split_config.zh.apk

签名与官方不同,装之前必须卸载官方高德(会清除登录态与离线地图)。

校验

sha256 e28719168467ee24d618c4ce24961c21b551df3e5b292a2e8e50b402ca9b7e6a  Amap-Play-2.3.2-nonroot-embedded.zip

源码:https://github.com/ldxm666/MapAdKiller

Don't miss a new MapAdKiller release

NewReleases is sending notifications on new releases.