Nrfr 免 Root 修改 SIM 國家碼,把手機的地區辨識換成指定國家

Nrfr 是開源的 Android 工具,免 Root 就能把系統讀到的 SIM 國家碼覆寫成指定國家。它動的是電信框架設定而非 SIM 卡本體,可還原、雙卡可分別設定;從 Android 16 起部分系統已擋下這條路,動手前要先對照版本與 issue 現況。

用 AI 摘要這篇文章:

Nrfr 是一支免 Root 就能修改 SIM 國家碼的開源 Android 工具。它在 GitHub 拿下超過九千顆星,發布檔累計超過二十八萬次下載。它的做法相當節制:不動 SIM 卡、不刷機、不掛 Xposed 之類的框架。它只是把 Android 電信框架裡本來就存在的一組覆寫開關,搬到一般人的手機畫面上。要付的代價有兩個。手機得先通過 Shizuku 借到 ADB 等級的權限,而且從 Android 16 開始部分系統已經把這條呼叫路徑擋住,能不能用要先看你的手機版本。

Nrfr 改的不是 SIM 卡,是手機裡留給電信商的開關

整個工具的核心寫在一百二十餘行的 CarrierConfigManager.kt 裡。應用把兩位字母國碼放進 KEY_SIM_COUNTRY_ISO_OVERRIDE_STRING 這組設定鍵,再經由系統的 CarrierConfigLoader 服務把整包設定寫進電信框架。寫入時帶了 persistent 旗標,重開機後仍然有效。這組鍵值是 Android 原生設計的電信商客製介面,手機廠與電信商本來就用它調整各地區的網路參數,Nrfr 做的事情只是把同一個開關開放給一般人操作。

換句話說,它修改的是手機端讀取 SIM 資訊的方式。一般 App 拿 SIM 國碼的途徑是系統的電話管理服務,電信框架覆寫生效後,這條讀值路徑吐出來的就是你指定的國家,與 TikTok 這類 App 判斷用戶所在地區時讀的資料源是同一套。差別只在誰有權限寫入。SIM 卡本體一個位元組都不會被碰到,還原也是走同一個介面,交給系統一份空設定就等於清掉覆寫。應用主畫面會先顯示目前生效的國碼與電信商名稱,改完再讀一次就能對照覆寫是否生效,這個設計讓操作後的驗證變得很直觀,也讓雙卡用戶能確認自己改的是哪一張卡。

雙卡機的兩個門號可分別設定,這在實務上有意義:出國時把漫遊的那張卡改成當地國碼,另一張維持原狀,影響範圍就能限縮在單一門號。覆寫是綁在系統的門號識別上,換了別張 SIM 卡不保證設定跟著轉移,換卡後重新設定一次最保險。應用內建二十八個國家預設,也開放自行輸入兩位碼,預設清單涵蓋中、港、澳、台、日、韓、美與歐洲主要國家;要注意國碼走的是 ISO 標準的二位國家層級,官方 issue 裡有人問為什麼沒有廣東可選,答案就是它處理的對象是國家碼,與省份無關。

另一個附帶功能是電信商名稱覆寫,預設清單裡中華電信、台灣大哥大、遠傳都列在內,輸入法選字後一鍵套用,想處理漫遊時狀態列顯示亂碼電信商名稱的困擾,直接套預設即可。一個小細節:Android 系統端吃的是小寫 ISO 碼,應用會自動把你輸入的大寫轉成小寫再寫入,這種角落處理得算扎實。介面用 Jetpack Compose 打造,走極簡路線,主畫面就是選擇 SIM 卡、選擇國家碼、按下保存三個動作,沒有其他多餘功能;只有簡體中文一種語言,國家清單的標示也沿用對岸的命名慣例,習慣繁中介面的使用者需要一點適應時間。

Nrfr Android 應用主畫面,選擇 SIM 卡與國家碼的簡潔介面Pin
Nrfr Android 應用主畫面(官方倉庫截圖)

免 Root 怎麼辦到?先過 Shizuku 這一關

Android 的電信設定屬於系統保護範圍,一般應用碰不到,Nrfr 的解法是借道 Shizuku。Shizuku 是知名的特權服務框架,本身也是開源專案,透過 ADB 或無線偵錯取得 shell 等級權限後,讓一般應用在執行期借用它呼叫系統介面,在需要跨過系統權限門檻的 Android 工具圈幾乎是標準配備。Shizuku 官方提供兩種啟動方式:連電腦跑一次 ADB,或是在 Android 11 以上的手機直接開無線偵錯自啟,兩種都不需要解鎖引導程式,這是整個方案能號稱免 Root 的基礎。Nrfr 的 AndroidManifest 連一個 uses-permission 都沒有宣告,連網路權限都不申請;整包應用沒有任何對外連線的程式碼,網址只出現在關於頁的作者與原始碼連結。權限全部在執行期向 Shizuku 申請,第一次打開若偵測不到 Shizuku 服務,畫面會停在引導安裝的提示頁,授予權限後才進入主畫面。隱私邊界乾淨,與同樣以零網路權限為架構特徵的 Stay Put 屬於同一個等級。

為了讓不熟悉指令的人也能上手,作者另外做了一支 Windows 與 macOS 的桌面快速啟動工具,隨附在發布壓縮包裡,約二十 MB 的體積塞了 adb、Shizuku 安裝包與 Nrfr 本體。它的功能其實很樸素:偵測到手機後把兩個 APK 推到手機暫存區,用系統安裝指令裝起來,再執行 Shizuku 的啟動腳本把服務帶起來,關閉工具時順手收掉 adb 服務,全程都在本機完成,沒有任何對外連線。它省掉的是手打 adb 指令的門檻;如果你本來就會用 adb,或想走 Shizuku 的無線偵錯模式,這支桌面工具可以完全略過,電腦端搭配 Android 的工具生態可以參考 Escrcpy 這類本機配對的路線。官方 issue 裡也有桌面工具在某些手機上帶不起 Shizuku 的案例,遇到這種情況手動執行 adb 指令仍是可靠後備。

Nrfr 桌面快速啟動工具的裝置偵測與元件安裝畫面Pin
Nrfr 桌面快速啟動工具(官方倉庫截圖)

在新版 Android 上還有一道額外關卡:Google 從 Android 9 起限制應用存取非 SDK 的系統介面,Nrfr 透過 LSPosed 的 HiddenApiBypass 程式庫在執行期申請豁免,才拿得到電信框架的內部物件。這在開源圈是成熟做法,Android 開源社群借系統介面做實用小工具的傳統由來已久,像自動跳過開屏廣告的 GKD 就是同一片土壤長出來的專案,但這類倚賴內部介面的工具,命運也與系統版本的更迭綁在一起。

2026 年還能用嗎?Android 版本先看清楚

這是現在最重要的問題。Nrfr 的發行停在 2025 年 1 月的 v1.0.3,目標 SDK 對應 Android 14,儲存庫的提交記錄止於 2025 年 7 月,之後就凍結了,連桌面工具裡的版本檢查都還寫死著 1.0.3。工具標榜支援 Android 8 以上,Android 14 以前的環境使用紀錄大致順利,Android 15 也大致可用、但已出現零星保存失敗案例。

從 2026 年開始,官方 issue 追蹤出現成串的保存失敗案例,錯誤訊息幾乎都是同一句:「overrideConfig cannot be invoked by shell」。Redmi K80 上的澎湃 OS 4(Android 17)、澎湃 OS 3.0、三星 One UI 8.5、vivo OriginOS 都有人反映系統更新後無法保存,傳出案例的裝置橫跨小米、三星、vivo 與 realme,連 LineageOS 這類原生系統的用戶也在討論區找相容版本;同時也有使用者留言表示自己的 Android 16 裝置仍正常運作,顯示各家系統收緊的幅度不一。問題追蹤區目前有一百零八個未關閉的議題,加上四個開著的修復 PR,議題裡不乏直接問作者還要不要更新的留言。方向很明確:Google 與手機廠正在逐步關閉 shell 身分呼叫電信設定的路,這扇門不會再開得更寬。

系統環境狀態整理
Android 8 至 14工具的設計範圍,保存普遍正常
Android 15大致可用,已出現零星保存失敗案例
Android 16視客製系統而定,部分裝置保存失敗,社群 fork 已有修復
Android 17多數案例是 shell 呼叫遭系統拒絕,需改用對應 fork
One UI 8.5 與 OriginOS 等客製系統2026 年系統更新後陸續出現失效案例

修復主力現在落在社群手裡。主儲存庫有四支針對 Android 16 的修復 PR,全部開著等作者合併,最久的已經等了四個多月;檯面上至少有四個 fork 各自接手,包括表明會持續維護的 baiyanwu 版、靠 AI 在幾分鐘內修好保存問題的 a5533348 版(該討論串累積十八則留言),以及專攻 Android 17 的 JHR-deve 版。Apache-2.0 授權本來就允許任何人分支維護,這個 fork 生態是授權設計的自然結果,只是 fork 的程式碼沒有經過主要維護者審查,挑選時看提交時間是否新鮮、issue 有沒有人答,比看星星數更有參考價值,是否採用需要自行衡量。

從漫遊顯示異常到 TikTok 區域限制:用途與代價

README 列的官方用途分成兩類。一類是正經的電信疑難:國際漫遊時電信商名稱顯示異常、海外 SIM 卡的本地化體驗不佳、電信商配置跑掉導致功能異常,把國碼覆寫成當地值有機會讓系統重新套用正確參數。另一類就是讓它衝上九千顆星的灰色需求:解除 TikTok 的區域限制,以及跳過 Samsung Health 首次啟動的 SIM 檢測,後者常見於水貨機或平板這類出廠狀態比較特殊的裝置;TikTok 相關的周邊工具我們先前也介紹過 抖音 TikTok 下載 API 這類服務。

灰色用途要有清楚的認知。SIM 國家碼影響的是 App 端讀取手機門號資訊時的地區判斷,並不會改變網路流量的實際出口,如果服務同時比對 IP 位置,光改國碼不見得夠用;更現實的風險是,繞過地區限制的行為多半牴觸服務條款,帳號被限縮的後果要自己承擔。如果目的只是想看某個地區的內容,先試帳號地區設定或官方提供的跨境方案,成本通常低於和系統設定搏鬥;把這套覆寫留給真正的電信層問題,是比較健康的用法。作者在 README 明言本工具僅供學習研究使用,修改系統設定的風險由使用者自負,這條線畫得算誠實。

操作面還有兩個提醒。修改國碼可能影響電信服務的正常運作,動手前先確認應用內的還原功能可用,別讓手機停在一個不正確的電信設定狀態;下載一律從 GitHub Release 頁面取得,發布頁有兩種檔案,超過十五萬七千次下載的單檔 APK 適合會自己裝的人,超過十二萬次的快速啟動包適合想省事的人,來路不明的第三方打包版一律別碰。官方文件列出的準備流程大致是:手機開發者選項打開 USB 偵錯與安裝授權,連上電腦讓快速啟動工具裝好兩個元件,啟用 Shizuku 之後接著在手機上操作,整段準備工作十分鐘內可以完成,之後的改碼與還原都在手機上點兩下就結束。

同類需求過去的解法離不開 root 與 Magisk 模組,或直接改寫系統檔案,門檻與風險都高一截;Nrfr 把整件事壓到 ADB 權限等級,用系統原生介面收尾,這是它值得被記住的地方,九千顆星背後的需求也多半衝著這一點而來。

授權與專案狀態

專案以 Apache-2.0 授權釋出,商業使用與修改的空間明確。三十六次提交裡有三十五次出自 Antkites 一人之手,最後一筆使用案例更新由貢獻者併入,九千零二十一顆星、六百五十九個分支,對一支核心邏輯百餘行的工具而言,這個熱度說明需求真實存在,也說明問題追蹤區還很熱鬧,值得在下手前先逛上一圈,確認自己裝置的狀況。儲存庫文件頁掛著 Tencent EdgeOne 與 DartNode 的贊助徽章,屬於開源專案常見的資源支援,不影響程式碼授權。

整體判斷:手機在 Android 14 以下(Android 15 多數情境也適用)、有臨時調整國碼的需求,無論是漫遊設定還是電信參數校正,原版 Nrfr 都是乾淨、可逆、不碰 SIM 卡的選擇;Android 16 以上先到官方 issue 對照自己的系統版本,再決定是否改用對應的社群 fork。無論走哪條路,保留還原路徑、下載只認 Release 頁,這兩條底線不變。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 1627

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...