《osu!stable》外掛原始碼 快速閱讀精華
- 🎯 Aim Assist 自動瞄準:針對下一個圈圈或滑桿進行輔助,採用平滑角度與速度噪音,避免直接鎖定
- 🎵 Relax 自動點擊:自動處理單點、滑桿與轉盤,模擬人類點擊節奏與疲勞曲線
- 🚀 APC Manual-Map 注入器:針對 32-bit osu!.exe 行程,使用 APC 非同步呼叫手動映射 DLL
- ⚠️ 風險提醒:目前功能上未被偵測,但公開原始碼後可能被更新偵測,使用風險自負
- 💾 下載資訊:原始碼約 33.4 KB,需 Visual Studio 2022 + CMake 3.20 + Ninja 編譯
前言與風險提醒
這是一套針對 osu!stable(舊版官方客戶端)開發的私有外掛原始碼,原作者因已較少遊玩 osu!,決定將此專案公開釋出。與常見的現成外掛不同,此釋出為完整 原始碼(Source Code),使用者需自行編譯,無提供已編譯的執行檔。
⚠️ 重要提醒:使用風險聲明
- 此原始碼目前功能上屬於「未被偵測(undetected)」狀態,但公開後遊戲官方可能會更新偵測機制
- 使用任何外掛、修改器或自動化腳本皆有極高風險導致永久封號(Ban)
- 本教學僅供技術研究與教育目的,不鼓勵也不協助於線上對戰中使用
- 作者明確表示不會協助編譯,也不會因遊戲更新而提供新的簽章(signatures)或位移(offsets)
功能模組整理
此外掛採用模組化設計,主要包含三大核心元件:Aim Assist(自動瞄準)、Relax(自動點擊)以及APC Manual-Map Injector(注入器)。以下逐一說明其技術原理與功能特性。
Aim Assist 自動瞄準
不同於一般的「硬鎖(Hard Lock)」外掛,此模組採用更平滑的輔助機制:
- 目標預測:自動鎖定下一個圓圈(Circle)或滑桿(Slider)的所在位置,但僅在設定的輔助範圍(Assist Range)內生效
- 遊標修正限制:透過設定最大偏移量(Maximum Offset)來限制遊標修正幅度,避免明顯的「瞬移」行為
- 平滑演算法:使用平滑化的角度(Smootded Angle)與速度噪音(Speed Noise)替代直接跳躍,模擬更自然的人類手部移動軌跡
- 進階限制:包含串流速度限制(Stream Velocity Limiting)、方向改變阻尼(Direction-Change Damping)以及漸進式遊標重新同步(Gradual Cursor Resync),可選的 Anti-Tug 行為模式進一步降低被觀察到的風險
Relax 自動點擊
Relax 模組負責自動處理所有的點擊時機,涵蓋單點、滑桿尾端與轉盤(Spinner):
- 物件支援:完整處理圓圈(Circles)、滑桿(Sliders)與轉盤(Spinners)的點擊與按住邏輯
- 按鍵偵測:自動讀取 osu! 設定檔(osu!.*.cfg)中設定的左鍵與右鍵,若讀取失敗則預設使用 Z 與 X 鍵
- 持久亂數種子:使用 32 位元組的持久性種子(Persistent Seed),確保每次啟動外掛時產生相同的點擊時間分佈,避免因隨機性過高而被偵測
- 人類行為模擬:完整模型包含點擊時間偏移(Timing Offsets)、按住持續時間(Hold Durations)、按鍵不對稱性(Key Asymmetry)、熱身延遲(Warmup)、疲勞曲線(Fatigue)、串流漂移(Stream Drift)以及休息後的變化(Post-Break Variation)
- 串流處理:在快速串流(Stream)時自動交替使用左右鍵,並在較慢間隔時混合單點(Single Tapping)與交替
- 安全機制:當玩家一段時間未移動遊標時自動停止產生點擊,避免明顯的「無操作自動打」行為;可選的 BPM 限制功能在超過設定速度時自動增加失誤率,進一步模擬人類極限
APC Manual-Map 注入器
此注入器採用進階的 APC(Asynchronous Procedure Call)手動映射技術,專門針對 osu!stable 的 32 位元架構設計:
- 目標行程:鎖定 32 位元的 osu!.exe 主行程
- CLR 等待:注入前會等待 .NET 執行環境的 clr.dll 與 clrjit.dll 載入完成,確保遊戲的核心邏輯已初始化
- APC 手動映射:使用 APC 非同步程序呼叫機制進行手動 DLL 映射,並強制觸發 NtTestAlert 以確保 DLL 立即執行
- 完整初始化:處理重定位(Relocations)、整理匯入表(Imports)、呼叫 TLS 回呼(TLS Callbacks)等標準 Windows 載入流程
- CLR 掛鉤:透過交換 CLR 方法表(Metdod-Table)的插槽(Slot Swaps)來掛鉤 Player 生命週期,取代輸入處理器使用的間接 SetMousePos 委派
- 防偵測清理:初始化完成後恢復記憶體區段保護並清除映射的 PE 標頭,降低記憶體掃描的特徵足跡
系統需求與編譯環境
由於此釋出為原始碼形式,使用者必須自行編譯。以下是編譯所需的環境與工具:
| 需求項目 | 版本/規格 | 說明 | | 作業系統 | Windows | 僅支援 Windows 平臺,需能執行 32 位元 osu!.exe | | 開發環境 | Visual Studio 2022 | 需安裝「使用 C++ 的桌面開發」工作負載 | | 建構工具 | CMake 3.20+ | 用於產生建構系統檔案 | | 編譯器 | Ninja | 建議使用 Ninja 作為後端以提升編譯速度 |
編譯注意事項:
- 作者明確表示不會協助任何人編譯此原始碼,也不會因遊戲更新而提供新的簽章(Signatures)或位移(Offsets)
- 若未來 osu!stable 更新導致記憶體結構改變,原始碼中的硬編碼位址可能失效,需自行更新
- 設定檔位於各功能模組的標頭檔(Header Files)中,需修改後重新編譯才能調整參數
使用風險與防偵測狀態
當前偵測狀態:
截至原始碼發布時,此外掛在功能上屬於「未被偵測(Functionally Undetected)」狀態。然而,這是公開發布的原始碼,作者明確不保證未來仍維持未偵測狀態。
風險評估:
- 封號風險:使用任何外掛、修改器或自動化腳本皆有極高風險導致永久封號(Account Ban),包括但不限於帳號停權、成績刪除、硬體 ID 封鎖
- 公開原始碼的風險:由於原始碼公開,遊戲官方(ppy)可輕易取得並分析其注入方式與特徵碼,進而更新反作弊系統(如 osu! 的 osu!ac 或 Dean Herbert 的偵測機制)來主動攔截
- 記憶體特徵:儘管注入器使用 APC Manual-Map 並清理 PE 標頭,但 CLR Metdod-Table Hook 與 SetMousePos 替換仍可能留下行為特徵
- 行為偵測:Relax 模組的點擊時間分佈雖使用持久種子維持一致性,但過於完美的點擊節奏(尤其是串流時的交替)可能觸發統計異常偵測
風險降低建議(僅供技術研究,不鼓勵實際使用):
- 僅在離線模式或私人伺服器測試,避免連接官方 osu! 伺服器
- 使用虛擬機器(VM)或沙盒環境執行,避免主機硬體 ID 被記錄
- 修改原始碼中的特徵碼與注入方式,避免使用公開的預設設定
- 定期檢查 osu! 官方論壇與反作弊更新日誌,確認當前版本是否仍安全
檔案下載點
以下是此外掛原始碼的下載連結。請注意,此為原始碼壓縮檔,非現成可用的執行檔,您需要具備 C++ 編譯能力與 Visual Studio 環境才能建置。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
常見問題Q&A
Q:這個外掛是現成可以直接使用的嗎?
A:不是。此釋出為完整原始碼(Source Code),您需要自行使用 Visual Studio 2022、CMake 3.20+ 與 Ninja 進行編譯。作者明確表示不會協助任何人編譯,也沒有提供編譯好的 .exe 或 .dll 檔案。
Q:編譯後會被遊戲偵測到嗎?
A:截至原始碼發布時,此外掛在功能上屬於「未被偵測(Functionally Undetected)」狀態。但這是公開發布的原始碼,遊戲官方可以輕易分析其機制並更新反作弊系統。使用任何外掛皆有極高風險導致永久封號,請自行承擔風險。
Q:我需要修改哪些設定來調整外掛功能?
A:此外掛沒有提供選單或執行期設定介面。所有設定都位於各功能模組的標頭檔(Header Files,如 aim_assist.h、relax.h 等)中。您需要修改這些檔案中的常數值(如最大偏移量、BPM 限制、輔助範圍等),然後重新編譯整個專案。
Q:如果 osu! 更新後外掛失效了怎麼辦?
A:作者明確表示不會因遊戲更新而提供新的簽章(Signatures)或位移(Offsets)。如果 osu!stable 的記憶體結構因更新而改變,您需要自行使用 Cheat Engine 等工具分析新的記憶體位址,並更新原始碼中的硬編碼位址。
Q:Relax 模組的「持久種子」是什麼意思?
A:Relax 模組使用一個 32 位元組的持久性種子(Persistent 32-byte Seed)來產生點擊時間分佈。這意味著每次您使用相同設定啟動外掛時,產生的點擊節奏模式會完全一致。這是為了避免因隨機性過高而觸發統計異常偵測,模擬特定人類玩家的「習慣性」點擊模式。
|