《NASM》組合語言注入框架 快速閱讀精華
- 🚀 極致輕量化:純NASM組合語言編寫,最小僅4.5KB,無外部函式庫依賴
- 🎯 雙架構支援:完整支援x32與x64位元處理器,自動處理ASLR與高DPI相容
- 💉 三種注入模式:DLL注入(隱藏痕跡)、EXE注入(跨視窗熱鍵)、控制檯注入(極簡介面)
- ⚡ 高效能掃描:超高速特徵碼搜尋(DWORD大小),支援手動Hook與記憶體修補
前言與技術概觀
對於想要深入理解遊戲修改器底層運作原理的開發者來說,市面上大多數框架都過於龐大且依賴複雜的執行期函式庫。這套由純NASM組合語言編寫的注入式訓練器框架,提供了極致輕量化的解決方案,最小編譯體積僅4.5KB,同時完整支援現代Windows作業系統的ASLR與高DPI特性。
本框架採用現代化組合語言編碼風格,在目標處理程序內部執行,提供DLL注入、EXE注入與控制檯注入三種模式,適合從新手到進階開發者作為學習基礎或進階修改。
👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app
六大核心功能整理
- 雙緩衝繪製視窗:採用雙緩衝技術避免視窗閃爍,視窗自動使用與遊戲相同的圖示,視覺體驗一致。
- 超高速特徵碼搜尋:針對DWORD大小的資料進行極速記憶體掃描,快速定位遊戲數值位址。
- 手動Hook機制:x32版本使用5位元組的call xxxxxxxx指令,x64版本使用6位元組的call [xxxxxxxx]指令,Hook函式手動複製原始程式碼確保穩定性。
- 自動清理機制:視窗關閉後自動還原所有記憶體修改,避免遊戲崩潰或殘留痕跡。
- ASLR與高DPI相容:完全支援Windows位址空間配置隨機載入(ASLR)與高整理度螢幕顯示設定。
- 零函式庫依賴編譯:無需任何.lib連結庫檔案即可編譯,基於kernel32.dll在所有處理程序中具有相同基底位址的特性進行注入。
三種注入版本差異
本框架提供三種不同的注入執行方式,分別適用於不同的使用場景與技術需求。底下表格詳細比較各版本的核心差異:
| 版本類型 | 檔案格式 | 注入方式 | 熱鍵範圍 | 編譯大小 | | 視窗DLL注入版 | .cpl (控制檯項目) | LoadLibraryW載入 | 僅修改器視窗內 | 6.0KB / 7.5KB | | 視窗EXE注入版 | .exe (執行檔) | 複製至目標並修復重定位/導入表 | 視窗與遊戲視窗 | 6.0KB / 7.5KB | | 控制檯EXE注入版 | .exe (執行檔) | 複製至目標並修復重定位/導入表 | 視窗與遊戲視窗 | 4.5KB / 5.5KB |
各版本特殊功能心得分享
視窗DLL注入版特殊功能:
- PEB隱藏DLL技術(HideDLL),降低被偵測機率
- 透過模組名稱尋找目標處理程序
- 掃描可執行記憶體並跳過MEM_IMAGE區段
- 當位址再次可用時自動修補或Hook
- 使用目標特徵碼區塊儲存Hook函式位址
- MemCopy函式用於修補,需要原始位元組
視窗EXE注入版特殊功能:
- 注入類型為.exe複製至目標並修復重定位與導入表
- 使用MemSwap函式進行修補,無需原始位元組
- 透過模組名稱尋找目標
控制檯EXE注入版特殊功能:
- 透過視窗名稱尋找目標(而非模組名稱)
- 單一printf呼叫繪製選單介面,極致精簡
- 可注入另一個具有相同視窗名稱的作用中目標
- 可使用Ctrl+C或Ctrl+Pause組合鍵關閉
編譯環境建置教學
要成功編譯此框架,你需要準備以下工具並按照步驟設定環境:
必要工具清單
- 文字編輯器:Notepad++(建議用於編輯.asm檔案)
- 組譯器:nasm-x.xx.xx-win64.zip 解壓後取得 nasm.exe
- 連結器:golink.zip 解壓後取得 golink.exe
- 資源編譯器:gorc.zip 解壓後取得 gorc.exe(用於處理圖示等資源)
環境設定步驟
- 將上述所有.exe檔案(nasm.exe、golink.exe、gorc.exe)放置於同一工作目錄,建議建立專屬的NASM工作資料夾。
- 開啟Notepad++建立或編輯.asm原始碼檔案。
- 開啟命令提示字元(CMD),切換至工作目錄。
- 使用NASM進行組譯:nasm -f win32 yourfile.asm -o yourfile.obj(32位元)或 nasm -f win64 yourfile.asm -o yourfile.obj(64位元)。
- 使用GoLink進行連結:golink /entry _start yourfile.obj kernel32.dll user32.dll(視實際需要的API調整DLL清單)。
- 若包含資源(如圖示),先使用GoRC編譯資源:gorc /r yourfile.rc,再於連結時加入產生的.res檔案。
編譯參數說明
- /entry _start:指定程式進入點,需與.asm中定義的標籤一致
- kernel32.dll:提供記憶體管理、處理程序操作等核心API
- user32.dll:提供視窗建立、訊息處理等GUI相關API
- gdi32.dll:若需要進階繪圖功能(部分版本需要)
原始碼下載點
本框架原始碼已壓縮為ZIP檔案,內含32位元與64位元雙版本的完整原始碼、編譯批次檔範例以及必要工具的取得說明。
所有站內附件皆會附上安全掃描報告 請會員查看純淨度百分比後判斷使用
相關檔案須知: 取得檔案前,請先詳細閱讀文章內容 避免不必要錯誤與誤會發生。 也可多參考文章討論樓層內容 了解附件檔案相關討論資訊。
下載後請使用7-Zip或WinRAR解壓縮,建議將檔案放置於不含中文或特殊字元的純英文路徑(如 C:ASM_Projects\)以避免編譯時發生編碼錯誤。
《NASM》注入框架 重點回顧
- 極致輕量:純組合語言編寫,最小僅4.5KB,遠勝C++框架的數MB體積。
- 三種注入模式:DLL版適合隱藏痕跡,EXE視窗版適合跨視窗操作,控制檯版適合極簡需求。
- 現代系統相容:完整支援ASLR、高DPI、Unicode,確保在Windows 10/11穩定運行。
常見問題Q&A
Q:這個框架支援哪些作業系統?
本框架專為Windows作業系統設計,支援Windows 7至Windows 11(32位元與64位元版本)。框架核心使用kernel32.dll與user32.dll的標準API呼叫,並完整相容ASLR(位址空間配置隨機載入)與高DPI顯示設定,確保在現代作業系統環境下穩定運作。
Q:x32與x64版本在Hook機制上有什麼主要差異?
兩個版本的主要差異在於呼叫指令的位元組數與定址方式。x32版本使用5位元組的call xxxxxxxx指令(相對位址呼叫),而x64版本使用6位元組的call [xxxxxxxx]指令(絕對位址間接呼叫)。這個差異源於x64架構的RIP相對定址與大位址空間特性,框架已針對這些差異提供對應的原始碼範例。
Q:編譯時出現「無法找到kernel32.dll」或連結錯誤該如何解決?
首先確認golink.exe與nasm.exe放置於相同目錄,或已正確設定系統環境變數。若使用GoLink連結器,請確認指令中已包含正確的DLL清單,標準格式為:golink /entry _start yourfile.obj kernel32.dll user32.dll。若錯誤持續,請檢查.asm原始碼中的extern宣告是否與實際使用的API函式名稱完全匹配(區分大小寫)。
Q:DLL注入版本與EXE注入版本該選擇哪一個?什麼情況適合使用控制檯版本?
選擇取決於你的使用場景與技術需求。DLL注入版適合需要隱藏注入痕跡的場景,具備PEB隱藏DLL技術,且熱鍵僅在修改器視窗內有效,適合單一遊戲視窗操作。EXE注入版適合需要跨視窗操作的場景,熱鍵在修改器與遊戲視窗均有效,且使用MemSwap函式修補記憶體時無需原始位元組。控制檯版本則適合極簡主義者或遠端除錯需求,僅使用單一printf呼叫繪製選單,體積最小(4.5KB),且可透過Ctrl+C快速關閉。
Q:這個框架可以用來修改線上多人遊戲嗎?使用上有什麼法律或安全風險?
本框架專為單機遊戲修改學習與個人技術研究設計,強烈不建議用於線上多人遊戲。使用記憶體修改工具於線上遊戲極可能違反遊戲服務條款(ToS),導致帳號永久停權。此外,部分線上遊戲使用核心級別的反作弊系統(如 kernel-mode anti-cheat),不當使用記憶體注入技術可能觸發法律問題。建議僅在離線單人模式或自行建置的測試環境中使用本框架。
|