Commit Graph

106 Commits

Author SHA1 Message Date
NkBe e640da4f57
feat: 引入輕量級 MicroG 支援與 GMS 請求重導向機制
為 NPatch 引入了原生的 MicroG 整合支援,允許修補後的 Google 應用程式(例如 YouTube)在依賴 Google Play 服務的環境下,透過社群版 MicroG(如 ReVanced GmsCore)正常運作。

詳細改動範圍包含:

* ** UI Manager **
  - 於 `NewPatchScreen` 的修補選項清單中,新增「啟用 MicroG 支援」核取方塊與相容性說明。
  - 更新 `NewPatchViewModel`,透過 `Patcher.kt` 將使用者的 `useMicroG` 選擇狀態以 `--useMicroG` 指令列參數的形式,傳遞給底層修補引擎。

* ** Patcher **
  - 於 `NPatch.java` 中新增對 `--useMicroG` 參數的解析邏輯。
  - 擴充 `modifyManifestFile` 邏輯:當啟用 MicroG 支援時,自動讀取目標應用的原始簽名並轉碼為 Hex 格式。
  - 於 `AndroidManifest.xml` 中動態注入 `fake-signature` 的 `<meta-data>` 節點與 `android.permission.FAKE_PACKAGE_SIGNATURE` 權限,以滿足 MicroG 進行簽名欺騙(Signature Spoofing)時的驗證需求。

* ** Patch Loader **
  - 實作 `GmsRedirector.java` 類別,負責在應用程式執行期間動態攔截並重導向 IPC 通訊:
    1. 掛鉤 `Intent.setPackage`、`Intent.setComponent` 與建構子,將所有指向 `com.google.android.gms` 與 GSF 的意圖,強制導向至設備上已安裝的社群版 MicroG 套件(優先支援 `app.revanced.android.gms` 與 `org.microg.gms`)。
    2. 掛鉤 `ContentResolver`,替換帶有 GMS Authority 的 URI。針對真實 GMS 拋出的 `SecurityException`(憑證拒絕存取)實作了智慧攔截與重試機制。
    3. 掛鉤 `PackageManager.getPackageInfo` 實現動態簽名偽裝,使修補後的應用程式將 MicroG 視為官方正版 GMS。
  - 於 `LSPApplication.java` 的 `onLoad` 階段,依據 `PatchConfig` 設定檔動態喚醒並初始化 `GmsRedirector`。

* ** Share **
  - 更新 `PatchConfig.java` 以儲存與傳遞 `useMicroG` 布林值狀態。
  - 於 `Constants.java` 中定義 `REAL_GMS_PACKAGE_NAME` 常數,供各模組統一呼叫。

Co-Authored-By: MrZhongzq <108169409+MrZhongzq@users.noreply.github.com>
2026-03-08 21:53:41 +08:00
NkBe cf6993baa0
Fix ConfigProvider crash: Make ConfigManager database initialization
lazy to prevent UninitializedPropertyAccessException when ContentProvider
   is queried before Application.onCreate() runs.
2026-03-06 21:31:19 +08:00
NkBe 59dc353e0e
修正本地模式模式並解決 x86_64 的 bypass_svc 構建問題
manager / patch-loader:
- 將 ConfigProvider 添加至管理器以調用已啟用模組列表,繞過安卓沙盒限制。
- 將 NeoLocalApplicationService 改寫為查詢 ConfigProvider,而非 SharedPreferences。
- 動態解析 APK 路徑透過 PackageManager 並改善錯誤記錄。

bypass_svc:
- 修復 x86_64 編譯錯誤。
- 為 x86_64 提供 stub 實現。
- 將 g_is_hook_active 移至全域範圍以避免未定義符號。
- 保護 ARM64 特定的 syscall/seccomp 邏輯。
2026-02-10 16:39:53 +08:00
NkBe 271eb7bd82
feat(sigbypass): SVC Bypass (ARM64) and OpenAt I/O Redirection
導入 ARM64 專用的 SVC/Seccomp 內核級簽名繞過 (Level 3),並全面強化檔案 I/O 重定向機制。
移除非 ARM64 架構的支持
2025-12-22 21:57:33 +08:00
NkBe 01071283c6
Remove: Uncomment LogsScreen 2025-12-11 23:18:17 +08:00
NkBe f14f65d078
refactor(ui): 統一介面風格並優化佈局
- Home:重新整理資訊卡,將 StringBuilder 替換為 Composables;修正填充和 HtmlText 參數錯誤。
- Manager:為 TabRow 添加動畫指示器並統一頁面間距。
- Settings:為 KeyStore 對話框添加垂直滾動功能,以防止在小螢幕上出現裁剪。
- Repo:改善「即將推出」的 UI,增添圖標。
2025-12-11 22:42:26 +08:00
NkBe 5c8509e4f5
feat: 支持手動重載列表
- 當卸載後重新整理程式清單
- 可手動下拉刷新應用列表與模組列表
2025-12-07 23:47:43 +08:00
NkBe 5a90ed436e
fix: 正確設定共享偏好設定鍵並提升加載穩定性
- 修正了 SharedPreferences 鍵配置錯誤,確保模組緩存能正確加載。
- 優化 檔案注入器: 減少 ZipFile 重複 I/O,提升啟動效率。
- 優化 profile 禁用: 採用冪等性檢查和 Truncate 替代 Delete/Create 流程,增強對系統監控的穩定性,避免用戶配置意外清除。
- 代碼精簡: 改進了變數命名和程式碼結構。

fix: 正確設定共享偏好設定鍵並提升加載穩定性

- 修正了 SharedPreferences 鍵配置錯誤,確保模組緩存能正確加載。
- 優化 檔案注入器: 減少 ZipFile 重複 I/O,提升啟動效率。
- 優化 profile 禁用: 採用冪等性檢查和 Truncate 替代 Delete/Create 流程,增強對系統監控的穩定性,避免用戶配置意外清除。
- 改進 manager 構建檔案確保所有庫檔案不被壓縮。
- 代碼精簡: 改進了變數命名和程式碼結構。
2025-12-07 22:52:51 +08:00
NkBe 799bc1d022
feat: manager新增签名校验防篡改
HSSkyBoy
2025-12-07 21:31:27 +08:00
NkBe f4b2513182
feat: 更严格的权限检查
Android 11 及以上: 檢查 Environment.isExternalStorageManager(),如果沒有權限,則跳轉到「所有檔案存取權」設定頁面 。

Android 10 及以下: 檢查並請求 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 權限 。
2025-12-06 14:58:39 +08:00
NkBe 2d86d32ff2
manager: 优化构建配置 2025-12-05 22:28:44 +08:00
NkBe 544eccfeef
Move org.lsposed.npatch.util to nkbe.util 2025-12-04 23:06:27 +08:00
NkBe af548bb25d
feat: 增加已修補列表自動刷新 & 優化安裝完成後的跳轉邏輯
1. AppManageViewModel:
- 實現已修補應用列表的自動刷新機制(每 90 秒輪詢一次)。
- 引入 `silent` 參數區分自動刷新與手動刷新,避免自動刷新時 UI 出現加載轉圈,提升體驗。

2. NewPatchPage:
- 重構安裝成功的判定邏輯:不再僅依賴 PackageInstaller 的回調。
- 新增 `BroadcastReceiver` 監聽系統 `PACKAGE_ADDED` 和 `PACKAGE_REPLACED` 廣播。
- 確保系統真正註冊完新包後再執行導航返回 (navigateUp),解決安裝後立即返回導致列表尚未更新或狀態不同步的問題。
2025-12-03 00:33:21 +08:00
NkBe 5aa809dc5a
Refactor:Replace all instances of `lspatch` with `npatch`
嘗試规避關鍵詞檢測
2025-12-02 23:42:23 +08:00
NkBe c136335aaf
feat: support Shizuku API to fetch app list
ShizukuApi 增添 getInstalledApplications 方法,包名管理器增添 fetchAppList 方法,優先使用 Shizuku API 獲取應用列表,失敗則回退至標準 PackageManager。
2025-11-19 22:59:02 +08:00
NkBe 307660038e
refactor: rename lspatch meta key to npatch 2025-10-29 21:38:58 +08:00
NkBe d843faa515
fix: Forgot to add the inject DP option and Remove redundant intent-filter
.
2025-10-29 21:38:58 +08:00
NkBe a2b9e529ca
feat: support inject MT Manager DocumentsProvider
Co-Authored-By: Hicores <me@hicore.cc>
2025-10-29 21:38:57 +08:00
NkBe(HSSkyBoy) d644c22ade
feat: support patching with new package name
feat: log APK patch paths in submitPatch

fix: improve temp APK file handling

feat: add newPackageName option

refactor: optimize patch install dialogs

feat: support rename packagename
Co-Authored-By: javaeryang <27242250+javaeryang@users.noreply.github.com>
2025-10-08 15:47:16 +08:00
NkBe(HSSkyBoy) ac95b91712
Modify part of lspatch to npatch 2025-10-06 23:27:30 +08:00
NkBe(HSSkyBoy) 7613e7de10
feat: add output log to media
底層實現了日誌檔案寫入。為管理器新增了 outputLog 選項,可以將日誌輸出到 Android/media 目錄。
2025-10-06 23:27:30 +08:00
NkBe c2fdd4941d
refactor: improve hook and dex loading logic
重構了 patch_loader.cpp 並修改了bypass_sig.cpp,優化了 openat hook 的實現方式,簡化了 HookOpenat 和 enableOpenatHook 的流程。PatchLoader 的 LoadDex、InitArtHooker、InitHooks、SetupEntryClass、Load 方法也進行了結構優化,提升了代碼可讀性和健壯性,減少了重複代碼,並加強了錯誤處理。
參考自 802d3fbe28 爲什麽這樣改我也有點忘了,commit用Copilot寫的
2025-09-07 22:17:31 +08:00
NkBe 4e63d61cd3
fix: can't connect to manager
順便優化了一下排版
2025-09-07 22:16:41 +08:00
NkBe 326afc95ab
feat: add FileProvider and refactor install logic
新增 FileProvider 到 AndroidManifest,使其能检测到修补后的 apk;简化 NewPatchScreen 的安装按钮逻辑;修正 AppManagePage 的闭包结构。
2025-09-07 14:38:14 +08:00
NkBe ed93e43f8c
feat: deleat old InstallActivity 2025-09-07 14:38:02 +08:00
NkBe 0d55e2e602
Enhance installation and cleanup processes
Co-Authored-By: xihan123 <srxqzxs@vip.qq.com>
2025-09-07 14:38:02 +08:00
NkBe c0aecf9e33
change name and url
Co-Authored-By: Kaelyn Wisoky <206877283+lshwjgpt25@users.noreply.github.com>
2025-09-05 23:48:04 +08:00
NkBe 515f527cb2
微调 2025-08-18 15:44:20 +08:00
NkBe 155a76a43e
fix: lspatch metadata decode crash
Co-Authored-By: o0kam1 <duzhaokun2@outlook.com>
2025-08-18 13:36:07 +08:00
NkBe b4d1726708
Fix: Enable install activit 2025-08-18 13:24:12 +08:00
NkBe 88561bd2bd
feat: add StorageDirectory Switch
076e0e4f3b
2025-08-18 00:20:43 +08:00
NkBe 6be5f6ed7c
feat: switch install package
Co-Authored-By: o0kam1 <duzhaokun2@outlook.com>
2025-08-18 00:10:30 +08:00
NkBe 147d93c5dc
Update built-in hyperlinks 2025-08-17 23:15:29 +08:00
NkBe 9563fcc4d9
feat: check manager 2025-08-17 22:59:34 +08:00
NkBe 10b291bd61
NPatch 2025-08-17 22:09:10 +08:00
JingMatrix 5180d7315d Update dependencies
Update compose-destinations is non-trivial.
To use version 2.0+ in the future, we need to follow its migration guide:
https://composedestinations.rafaelcosta.xyz/migrating-to-v2/
2025-08-03 09:42:16 +02:00
JingMatrix bab8bd2d4c Update JingMatrix/LSPosed 2024-12-01 09:48:30 +01:00
xihan123 b83152323a
Allow uers to chose if inject loader dex (#19)
If we always inject loader dex, then modules with third party libraries might fail to find library classes since the default class loader is alway used before the the loader of the module package.

Therefore, it is better to treat packages with isolated services as special cases.
2024-11-20 19:38:48 +01:00
JingMatrix 90880f9bbe Update repo info 2024-07-27 10:41:40 +02:00
Js0n 2243d010b8
fix: packageInstaller userId (#280)
Package installer now install patched app in current user instead of
main user
2023-12-12 00:35:20 +08:00
Js0n 4bf1371155
feat: launch and install from apk intent (#279)
close #90
2023-12-11 23:38:30 +08:00
Js0n 3674a967ef
Remove keep alive foreground service because bound service won't need it (#262)
Co-authored-by: LoveSy <shana@zju.edu.cn>
2023-11-23 20:32:24 +08:00
Js0n eb2c458dc1
fix(manager): keep alive service crashing in A14 (#259) 2023-11-11 21:05:34 +08:00
Js0n 8b5d06f073
Revert "fix(manager): update loader failed due to outdated origin apk filename" (#257)
Reverts LSPosed/LSPatch#253
2023-11-11 19:12:27 +08:00
Js0n 768d335eea
fix(manager): update loader failed due to outdated origin apk filename (#253) 2023-11-02 22:07:10 +08:00
Js0n 8462043963
feat: select module(s) from storage (#225) 2023-10-12 14:10:53 +08:00
LoveSy 7d69dbcb66 Fix crash and sync 2023-06-29 10:08:50 +08:00
Howard Wu 941726d559
Core upgrade (#213)
Co-authored-by: LoveSy <shana@zju.edu.cn>
2023-06-29 02:17:00 +08:00
Nullptr 2ace2660b4
Fix modules missing after update loader for integrated mode 2022-11-13 22:43:39 +08:00
Nullptr b2b542e7cc
Optimize build 2022-11-10 22:55:39 +08:00