老柯修机铺

通讯行老师傅的手机软件笔记——每款 App 装过、用过,才敢写下来

Nrfr 改 SIM 国家码的底层逻辑:为什么它能绕过 Root 还不毁卡

项目内容
软件Nrfr
版本1.0.3
平台Android APK
体积7.46M
分类系统工具
包名com.github.nrfr
官网Nrfr 官网
下载一Nrfr 下载,Nrfr 下载
下载二Nrfr 下载,Nrfr 下载
文档Nrfr 文档
介绍Nrfr 借助 Shizuku 的 ADB 特权链路改写 CarrierConfig,实现 SIM 国家码伪装。本文拆解这条权限通道的设计原理、写入机制与可逆性保障。

Nrfr 是什么——以及为什么改个国家码还要折腾这么多

Nrfr 是一款开源的 Android SIM 卡码修改工具。它能把你手机里 SIM 卡上报的国家码和运营商信息改成任意值,让目标应用以为你在另一个国家或地区。双卡设备也支持,操作就三步:选卡、选码、保存。

听起来像个普通的系统工具对吧?但 Nrfr 背后藏着一条不太常见的技术路线——它既不需要 Root,也不破坏 SIM 卡本身,却能写入连大多数普通应用碰都碰不到的运营商配置。这就引出了我最开始看到它时的第一个问题:它到底是怎么做到的?

拆解:一条借道 ADB 的特权链路

权限问题的历史解法

要改 SIM 卡的国家码,你得调用 Android 系统里的 CarrierConfigLoader 接口。这个接口属于系统级 API——普通应用没权限直接调,就像你家楼道里的配电箱贴着「仅限物业操作」,但 Nrfr 偏要去拧那个旋钮。

传统解法只有两个:要么 Root 手机拿到最高权限(代价是丢保修、银行 App 可能拒用、刷机有风险),要么硬破解卡(SIM 卡本身会被永久改写,不可逆)。

Nrfr 走了第三条路:Shizuku。

Shizuku 到底是什么角色

Shizuku 是 RikkaApps 做的一个开源权限工具,GitHub 星标过万。它干的事情可以用一个生活化的类比来说——

想象你是一个房客,想请工人(普通应用)来修水管,但物业不让工人直接进门。Shizuku 就像一个你自己雇的临时管家:你通过 ADB(安卓调试桥,相当于你把家门钥匙临时交给管家)启动它,它作为管家进程在后台运行,拿到了 ADB 级的权限——比普通房客(普通应用)高,但远不如把房子过户给管家(Root)。之后任何需要特权的工人(被 Shizuku 授权的应用)都可以找管家帮忙办事,事办完管家还在,也没改房屋所有权。

Nrfr 就是那个找管家帮忙的工人。它自己不申请特权,只在执行改码操作时通过 Shizuku 的进程间通信通道,让管家代为调用 CarrierConfigLoader。整个写入过程发生在 Shizuku 进程里,Nrfr 拿到的只是执行结果。

Shizuku 服务运行中界面

数据流向:改码那一秒到底发生了什么

当你在 Nrfr 界面点「保存」时,内部的数据流是这样的:

  1. Nrfr 把目标国家码(比如 CN 改成 US)打包成一个 JSON 请求
  2. 通过 Android 的 Binder IPC 通道发给 Shizuku 服务进程
  3. Shizuku 验证调用者授权合法性(你之前在 Shizuku 里给 Nrfr 勾过授权)
  4. Shizuku 以 ADB 权限身份调用 CarrierConfigLoader 的写入接口
  5. 系统把新的运营商配置写入 SIM 卡的 EF 区域(Elementary File,SIM 卡里存储运营商信息的那块区域)
  6. 写入完成后返回结果,Nrfr 在界面上显示「生效」

关键在于第 5 步——它写的是 SIM 卡的 EF 区,而不是软件层面的临时变量。这意味着系统重启后改动依然生效,但同时 Shizuku 停了 Nrfr 就动不了,因为管家不在了。

Nrfr 主界面:选择 SIM 卡与国家码

可逆性设计:为什么它敢说「不毁卡」

Nrfr 主界面底部有个「还原设置」按钮,按一下就能回到原始国家码。这不是靠重新查国家码再改回去那么粗暴——它在第一次写入前就把原始配置备份在本地了。还原时直接把备份写回 EF 区,所以不管你后来改了多少次,都能一键回到原点。

这个备份机制的设计逻辑值得提一下:它是在每次成功写入前自动触发的,不需要你手动操作。换句话说,Nrfr 默认假设你可能随时需要回滚,所以每一步都留了后路。

取舍:这套设计的代价

必须同时养两个进程

Shizuku 是有状态的——服务进程一旦停了,Nrfr 就跟没油的车一样动不了。手机重启后 Shizuku 服务也会跟着停,你必须手动再启动一次。这不是 bug,是这套权限架构的固有属性:管家下班了,工人自然没人带进门。

配对环节的玄学体验

Shizuku 的无线调试配对是整个流程里最容易翻车的环节。配对码有时效、小米机型通知样式不对弹不出输入框、无线调试开关需要反复重开——社区教程里用了整整三个故障排查章节来覆盖这个阶段。本质原因是:ADB 无线调试是 Android 开发者功能里的边缘特性,各厂商的定制系统对它的支持参差不齐。

权限边界:它能做什么、不能做什么

Shizuku 提供的权限比 Root 低得多——它能调用的系统接口是 RikkaApps 团队精选过的一个白名单,不包括 su 命令执行、系统分区读写这类高危操作。所以 Nrfr 能改 SIM 配置,但改不了你的系统设置、删不了系统应用,也碰不到银行 App 的安全环境。这是一个刻意的设计取舍:够用,但不越界。

判断:适合谁、不适合谁

适合的场景

玩机党折腾地区限制应用、海外卡临时伪装成本地卡、测试地区相关的功能——这些场景需要的是「能改、改得快、随时能还原」,Nrfr 刚好踩中了这个需求三角形的中心点。7.46M 的安装包、不需要 Root、双卡支持,这三个条件加起来让它成了同类工具里门槛最低的选项。

不适合的场景

如果你需要持久化的地区伪装(改一次再也不动),Shizuku 的进程依赖性会让你觉得麻烦。如果你的手机系统版本过旧(Android 10 及以下无线调试支持有限),配对环节的痛苦可能超过实际需求。还有一点:Nrfr 的修改只对读取 SIM 卡 EF 区的应用有效,某些应用走 GPS 定位或 IP 判断归属地,改码对它们没用。

最后说一句

我觉得 Nrfr 最有意思的地方不是改码本身,而是它选择的这条技术路线——在 Root 和硬改卡之间找到一个足够实用的中间层,把 ADB 权限从一个纯开发者工具变成了普通应用能借用的特权通道。Shizuku 这个管家角色的设计,让后续所有需要系统级权限的工具类应用都可以复用同一条链路,而不需要各自去折腾 Root 方案。

这种「借道而非霸占」的设计思路,在 Android 的权限生态里其实挺少见的。

本文为个人基于网络公开资料整理编写,非官方内容,仅供学习交流参考;软件版权归原作者所有,请支持正版;使用过程中遇到问题请查阅官方渠道,本文不承担任何责任。

同类文章

notrack.ai 資料退路指南:備份、遷移與數據自主

notrack.ai 主打無註冊、無追蹤、無審查的隱私 AI 聊天體驗,但零賬號體系意味著所有對話數據全存本地。本文從數據存儲位置、備份方法到換設備遷移路徑,把這款工具的資料自主度徹底摸清。