搜尋

RustdroidModding記憶體修改器Rust遊戲修改器

返回清單
切換到指定樓層
通知這文章過時或找檔案 發表主題

[電玩遊戲] 《RustdroidModding》Rust Unity IL2CPP 中文化腳本下載 Android 記憶體修改器開發框架

[複製連結]
1
mckogel1212 ( Lv.30 大天使 ) 發表於 4 小時前 | 只看該作者 回覆獎勵 |升序瀏覽 |閱讀模式
Rust-based Unity resolver for Android,JNI_OnLoad 自動注入、Dobby Hook、模組化開發

《RustdroidModding》快速閱讀精華



  • 🚀 這是一款用 Rust 語言撰寫的 Android IL2CPP/Unity 整理器,專門給想開發遊戲外掛或修改器的進階玩家使用
  • 🔧 核心功能:透過 JNI_OnLoad 自動注入、用 Dobby 進行函數 Hook、執行期整理 IL2CPP 符號
  • 💡 適合對象:有 Rust 基礎、想自己打造 Android 遊戲記憶體修改工具或自動化腳本的開發者
  • ⚠️ 高風險操作:涉及記憶體修改與執行期掛勾,使用不當可能導致遊戲閃退或帳號停權


前言:為什麼需要 RustdroidModding?



如果你曾經想過「怎麼在 Android 遊戲裡寫自己的修改器」,卻發現傳統工具像 GameGuardianCheat Engine 不夠靈活,那 RustdroidModding 就是為你準備的進階方案。

這個框架用 Rust 語言打造,專門處理 Unity IL2CPP 遊戲的記憶體整理與函數掛勾。白話說,它能讓你在遊戲執行時「攔截」原本的功能,換成你自己的邏輯——比如無限金幣、透視、加速等等。

核心功能與技術架構



RustdroidModding 採用模組化設計,主要檔案分成五個區塊:

模組檔案功能說明
lib.rs主程式進入點,負責 JNI_OnLoad 與模組初始化
il2cpp.rsIL2CPP 符號整理,透過 dlsym 動態查找函數位址
unity.rsUnity 引擎相關型別與輔助函數封裝
detour.rsDobby Hook 介接,負責函數攔截與跳轉
logging.rsandroid_logger 初始化,可自訂 log tag


執行流程整理



  • 遊戲載入 .so 檔案 → 觸發 JNI_OnLoad
  • 初始化日誌系統,開始記錄除錯資訊
  • 呼叫 try_load(),用 dlsym 查找 il2cpp_init 位址
  • 成功找到後,用 Dobby 掛勾(Hook)該函數
  • Hook 觸發時 → 呼叫原始函數 → 再呼叫 on_loaded()
  • 開發者在 on_loaded() 裡寫入自己的修改邏輯


⚠️ 重要提醒:使用風險與限制



這類工具屬於底層記憶體操作,使用前請務必瞭解:

  • 雙重保險機制失效風險:如果 il2cpp_init 無法掛勾,且備援的 il2cpp_class_from_il2cpp_type 也掛勾失敗,on_loaded() 會「盲開」——也就是說,遊戲可能根本還沒準備好,你的修改邏輯就會執行,導致閃退或不可預期的錯誤
  • 線上遊戲封鎖風險:任何記憶體修改行為都可能被反作弊系統偵測,建議僅於離線模式或私人伺服器測試
  • 必須保留原始呼叫:除非你真的想阻擋該功能,否則 Hook 內一定要呼叫 ORIGINAL,否則遊戲核心功能會壞掉


開發環境建置需求



想編譯這個專案,你的開發環境需要準備:

  • Rust 工具鏈:已安裝 rustc 與 cargo
  • aarch64-linux-android target:透過 rustup 新增
  • Android NDK:下載並設定環境變數,或在 .cargo/config.toml 指定 linker 路徑
  • CARGO_NDK_* 環境變數:確保編譯時能找到正確的 Android linker


編譯與建置教學



編譯指令



確保環境就緒後,在專案目錄執行:

cargo build --target aarch64-linux-android --release


編譯完成後,會在 target/aarch64-linux-android/release/ 產出 .so 檔案。

載入方式與使用範例



方法一:直接放入 APK



將編譯好的 .so 檔案放進反編譯後 APK 的 lib 資料夾對應架構目錄中。

方法二:搭配 Mod Loader



使用支援載入外部 .so 的 Mod 框架來注入。

方法三:Smali 手動注入(進階)



修改 smali 檔案,路徑:smali/com/unity3d/player/UnityPlayerActivity.smali

onCreate 方法的 locals 2 區塊下方加入:

    const-string v0, "RustdroidModding"

    invoke-static {v0}, Ljava/lang/System;->loadLibrary(Ljava/lang/String;)V


Hook 範例程式碼



lib.rs 內有範例可以參考,以下為 on_loaded() 中的典型寫法:

let cls = Class::find("Namespace", "ClassName")?;
match cls.hook("MetdodName", your_hook_fn as *mut u8) {
    Some(tramp) => unsafe { ORIGINAL = Some(std::mem::transmute(tramp)) },
    None => log::error!("hook failed"),
}


檔案下載點





所有站內附件皆會附上安全掃描報告
請會員查看純淨度百分比後判斷使用



相關檔案須知:
取得檔案前,請先詳細閱讀文章內容
避免不必要錯誤與誤會發生。
也可多參考文章討論樓層內容
了解附件檔案相關討論資訊。





常見問題Q&A



Q:這個工具跟 GameGuardian 有什麼不同?
A:GameGuardian 是現成的記憶體搜尋工具,而 RustdroidModding 是給開發者用的框架——你需要自己寫程式碼來定義要修改什麼、怎麼改。

Q:不會 Rust 可以用嗎?
A:不行,這個專案完全以 Rust 撰寫,需要具備 Rust 基礎語法與 Cargo 工具鏈使用經驗。

Q:為什麼 Hook 後遊戲會閃退?
A:最常見原因是 il2cpp_init 還沒準備好就執行了修改邏輯,或是你忘了在 Hook 內呼叫 ORIGINAL。建議檢查 logcat 日誌確認實際錯誤。

Q:這能用在所有 Unity 遊戲嗎?
A:只要是 IL2CPP 架構的 Unity 遊戲理論上都支援,但 Mono 架構的遊戲需要額外處理。另外,有強化反作弊的遊戲(如某些競技類)可能會攔截這類操作。

Q:編譯時找不到 linker 怎麼辦?
A:確認 Android NDK 已正確安裝,並且在 .cargo/config.toml 或環境變數中指定了正確的 CARGO_NDK_* 路徑。

《RustdroidModding》重點回顧



  • RustdroidModding 是針對 Android IL2CPP 遊戲的 Rust 開發框架,核心價值在於「自動化符號整理 + 函數掛勾」
  • 開發者只需專注寫 on_loaded() 內的邏輯,底層 Hook 機制已經封裝完成
  • 務必注意「盲開」風險與線上遊戲封鎖風險,建議離線環境測試






大家正在看啥


收藏收藏 分享文章到FB上分享
回覆 使用道具 檢舉
複製專屬你的推廣連結:發至FB與各論壇宣傳:累積點數換GP商品 & 藍鑽
每五點閱率就可以兌換藍鑽積分或遊戲點卡 夢遊推廣文章換GP商品

你需要登入後才可以回覆 登入 | 加入會員

本版積分規則

Copyright (C) 2010-2020 夢遊電玩論壇

廣告合作:請直接聯繫我們,並附上您預刊登位置的預算。  

快速回覆 返回頂端 返回清單