NoShake:Android“摇一摇”广告克星,通过 SensorService 受限模式一键屏蔽应用运动传感器访问,支持 Root/Shizuku/ADB 多种权限方案

在 Android 生态中,“摇一摇”广告已成为一种令人厌烦的交互侵扰——仅仅拿起手机或走两步路,应用便误判动作并强制跳转至广告页。NoShake 是一款专为对抗此类行为设计的 Android 工具。它不依赖传统的广告拦截规则,而是从系统底层入手,通过控制 SensorService(传感器服务) 的访问权限,从根本上切断应用读取加速度计等运动传感器的途径,让手机回归宁静。

核心亮点:系统级拦截、灵活控制

1. 一键全局屏蔽

  • 彻底静音:一键关闭所有第三方应用的运动传感器访问权限,从源头杜绝“摇一摇”触发。
  • 快速恢复:支持一键恢复全部应用的传感器正常访问,便于需要运动功能的场景(如健身、游戏)。

2. 精细化白名单管理

  • 单应用例外:在全局屏蔽状态下,可单独允许某个特定应用(如微信步数、地图导航)使用运动传感器。
  • 智能同步:自动读取设备当前 SensorService 状态,即使通过外部 ADB/Shizuku 操作,回到 App 也能实时同步 UI 显示。

3. 多权限模式支持

  • Root 模式:在已 Root 设备上,直接通过 su 执行系统命令,操作最便捷。
  • 非 Root 模式:无需 Root,通过 Shizuku 或 无线 ADB 获取 shell 权限即可运行,降低了使用门槛。

技术原理:SensorService 受限模式

NoShake 利用了 Android 系统底层的 SensorService 受限模式(Restricted Mode),而非应用层的 Hook 或拦截:

  • 核心命令:
    • dumpsys sensorservice enable:恢复 SensorService 正常模式(所有应用可读取)。
    • dumpsys sensorservice restrict <package>:进入受限模式,仅允许指定包名的应用读取传感器。
  • 工作逻辑:
    • 当设置为 restrict com.example.noshake 时,相当于屏蔽了除 NoShake 自身外所有应用的传感器访问。
    • 当设置为 restrict com.target.app 时,相当于仅开启目标应用的传感器访问。
  • 状态解析:App 通过解析 dumpsys sensorservice 输出中的 Mode : NORMAL 或 Mode : RESTRICTED 来确认当前状态。

快速上手

1. 非 Root 用户(推荐 Shizuku/ADB)

方式 A:使用 Shizuku

  1. 安装并启动 Shizuku 应用。
  2. 在 NoShake 中选择“Shizuku 模式”,授权后即可一键操作。

方式 B:使用无线 ADB

  1. 开启开发者选项中的“无线调试”。
  2. 配对并连接 ADB。
  3. 手动执行命令(或通过 NoShake 引导):# 屏蔽其他应用,仅允许 NoShake adb shell "dumpsys sensorservice enable && dumpsys sensorservice restrict 'com.example.noshake'" # 恢复全部开启 adb shell "dumpsys sensorservice enable"

2. Root 用户

  1. 授予 NoShake Root 权限。
  2. App 内部自动通过 su -c 执行上述命令,无需额外配置。

注意事项与限制

  • 非传统广告拦截:NoShake 控制的是传感器硬件访问,不仅影响广告,也会影响所有依赖运动传感器的功能(如计步、摇一摇换歌、体感游戏)。请根据需求合理使用白名单。
  • 重启失效:SensorService 的受限模式通常不保证重启后保持。每次重启设备后,需重新应用设置(可配合自动化工具如 Tasker/MacroDroid 实现开机自启)。
  • 厂商差异:不同 Android 厂商(小米、华为、三星等)可能修改 SensorService 行为,实际效果请以真机测试为准。
  • 权限要求:普通无权限 APK 无法拦截其他应用传感器事件,必须通过 Shell 权限(Root/Shizuku/ADB)执行系统命令。
下载地址
夸克
密码:B4fY