搜尋

SmmMem無驅動記憶體存取工具SMM遊戲修改器

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

[電玩遊戲] 《SmmMem》CE繁體中文化腳本下載 無驅動記憶體存取工具、SMM模式原理、UEFI韌體燒錄教學

[複製連結]
1
路易安納 ( Lv.30 大天使 ) 發表於 3 小時前 | 只看該作者 |只看大圖 回覆獎勵 |降序瀏覽 |閱讀模式

SmmMem 快速閱讀精華


  • 🚀 無需載入驅動程式:透過 SMM(系統管理模式)在 Ring -2 權限下直接讀寫 Windows 記憶體
  • 🔑 ACPI WMI 門鈴機制:使用者模式應用程式透過 ACPI WMI 方法觸發 SMI,與 SMM 溝通
  • 💪 完整 API 支援:提供行程查找、虛擬/實體記憶體讀寫、模組匯出整理等功能
  • ⚠️ 高風險操作:需要燒錄自訂 UEFI 韌體,錯誤操作可能導致主機板磚壞




SmmMem 是什麼?


SmmMem 是一款無需載入驅動程式的 Windows 記憶體存取工具,讓一般使用者模式應用程式能夠在 Ring -2 權限下讀寫、整理 Windows 記憶體。這項技術透過 SMM(System Management Mode,系統管理模式)處理器模式運作,完全不需要安裝任何核心驅動程式。

傳統的記憶體修改工具(如 Cheat Engine 搭配驅動)需要在 Ring 0 核心層運作,而 SmmMem 則是將所有記憶體操作邏輯——包括分頁表查詢、虛擬位址轉實體位址(VA→PA)、行程查找、模組查找、匯出整理以及讀寫操作——全部交給在 Ring -2 執行的 SMM 處理常式處理。

核心概念與架構


SmmMem 專案包含兩個韌體元件:

元件名稱功能說明
Dxe.efi分配共享信箱、設定 ACPI WMI 門鈴、發布信箱設定給 SMM,並嘗試透過 EFI_SMM_COMMUNICATION_PROTOCOL 進行早期設定
Smm.efi擷取信箱設定、註冊 SMI 處理常式、處理來自使用者模式 API 的記憶體請求,實際執行所有記憶體操作


當 Windows 啟動後,使用者模式的客戶端程式可以透過 ACPI WMI 方法發送請求。ACPI 方法會將請求複製到共享信箱,觸發軟體 SMI 呼叫,然後由 SMM 處理常式在 -2 層級處理該命令。


👉 GM後台版 遊戲 推薦 ⬇️⬇️⬇️ 快速玩各種二次元動漫手遊app



使用者模式 API 說明


安裝好韌體端之後,在 Windows 中使用 SmmMem 非常簡單。你不需要載入驅動、啟用測試簽章,或與任何核心元件互動。應用程式只需要包含 API 標頭檔、連結客戶端程式庫,然後呼叫標準 C 函式即可。

#include "Api.h"

int main(void) {
    PROCESS_INFO Process = {0};
    char Buffer[16] = {0};

    Init();

    FindProcessByName("notepad.exe", &Process);
    ReadVirt(Process.Pid, Process.ImageBase, Buffer, sizeof(Buffer));

    Close();
    return 0;
}


目前 API 提供以下核心功能:

  • 初始化/結束:Init()、Close()、Ping()
  • 行程查找:FindProcessByPid()、FindProcessByName()
  • 位址轉換:TranslateVirt()(虛擬位址轉實體位址)
  • 虛擬記憶體存取:ReadVirt()、WriteVirt()
  • 實體記憶體存取:ReadPhys()、WritePhys()
  • 模組與匯出:FindModule()、FindKernelModule()、FindExport()
  • 記憶體傾印:Dump()


一旦韌體安裝完成,你的使用者模式程式碼完全不需要操心 SMI、ACPI、內部 WMI 結構、信箱結構或分頁表——只需呼叫 API,SMM 就會處理所有工作。

ACPI WMI 門鈴溝通機制


溝通通道是這個專案最關鍵的部分。最直覺的解法是使用核心驅動:驅動程式將請求寫入共享信箱,直接觸發軟體 SMI。這確實可行,但如果使用者模式仍然需要核心驅動才能與 SMM 溝通,那這個專案的一大賣點就消失了。

因此,作者用 ACPI WMI 取代了核心驅動。

開機時,DXE 會安裝一個小型 SSDT,建立 ACPI WMI 裝置。Windows 透過標準 WMI 介面提供對此裝置的存取,因此一般使用者模式行程可以開啟它並呼叫方法。客戶端載入 Advapi32.dll,使用 WmiOpenBlock 開啟 WMI 區塊,並使用 WmiExecuteMetdodW 呼叫 ACPI WMI 方法。



內部來說,ACPI 方法執行三個動作:
  • 將使用者模式請求緩衝區複製到共享信箱
  • 將 SMI 值寫入 SMI 命令埠
  • 將 SMM 回應緩衝區返回給使用者模式


這就是為什麼作者稱之為「門鈴」——SMM 程式碼並非在背景持續執行,也不會持續監控記憶體等待新命令。SMM 只有在處理器因 SMI 而進入 SMM 時才會被觸發。因此,單純將請求寫入記憶體是不夠的,必須有人「按下門鈴」。

4AbNIFc.jpg


plGqIP6.jpg



安裝教學與編譯步驟



⚠️ 重要風險警告

燒錄修改過的韌體可能導致主機板磚壞,意味著主機板可能無法開機,甚至無法進入 BIOS。在嘗試之前,請確保你有可靠的復原方法,例如 BIOS Flashback、外部燒錄器,或其他復原途徑。


編譯韌體元件


  • 開啟 x64 Visual Studio 開發人員命令提示字元
  • 執行 src\build.cmd 編譯專案
  • 編譯完成後會產生 Dxe.efi 和 Smm.efi 兩個檔案


UEFI 韌體燒錄


  • 將 Dxe.efi 和 Smm.efi 加入你的韌體中並燒錄到主機板
  • 最簡單的方法是直接替換現有的 DXE 和 SMM 模組(例如使用 UEFI Tools)
  • 開機後觀察序列埠輸出,確認韌體初始化、信箱設定、ACPI WMI 設定和 SMI 處理常式註冊訊息
  • 你需要將 COM 埠讀取器連接到主機板的序列標頭


使用者端程式編譯


  • 在 Windows 中建立你的使用者模式應用程式
  • 在專案中包含 Api.h
  • 連結 Client.c 檔案
  • 重要:編譯 Client.c 時必須定義 API_ONLY,以排除內建的測試 main 函式


MSVC 編譯範例:
cl /nologo /W4 /O2 /DAPI_ONLY app.c Client.c


使用前呼叫 Init(),使用完畢呼叫 Close()。溝通通過 ACPI WMI 進行,不需要核心驅動。

API 使用注意:韌體端必須先安裝完成,因為使用者模式 API 只透過 ACPI WMI 門鈴發送請求。實際的讀取、寫入、轉換、行程查找、模組查找和匯出整理工作都由 SMM 元件處理。

支援平臺與系統需求


項目需求規格
韌體平臺x64 UEFI 韌體,支援 AMI Aptio V 風格 PI SMM
作業系統Windows 10 或 Windows 11
溝通機制ACPI WMI 命令,用於從使用者模式觸發 SMM 記憶體請求
測試平臺ASUS TUF X870(AMD 平臺)、MSI Z790 EDGE(Intel 平臺)


疑難排解與除錯


如果專案無法正常運作,請協助作者找出原因:

  • 下載除錯版本的韌體
  • 使用 DbgRead 擷取記錄檔
  • 提供你的主機板名稱和使用的修補方法


檔案下載點




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



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





常見問題Q&A



Q:SmmMem 跟傳統核心驅動有什麼不同?
A:傳統驅動在 Ring 0 運作,而 SmmMem 透過 SMM 在 Ring -2 運作。最大的優勢是使用者端完全不需要載入任何驅動程式,規避了驅動簽章和防作弊驅動偵測的問題。

Q:什麼是 Ring -2?為什麼比 Ring 0 更高權限?
A:Ring -2 指的是 SMM(系統管理模式),這是 x86 處理器的一種特殊執行模式,比 Ring 0 核心模式擁有更高的權限和隔離性。SMM 通常用於處理系統層級功能如電源管理、溫度監控等。

Q:燒錄韌體有什麼風險?
A:錯誤的韌體燒錄可能導致主機板無法開機(俗稱「磚壞」)。強烈建議在操作前確認主機板支援 BIOS Flashback 或有外部燒錄器等復原手段。

Q:SmmMem 可以繞過哪些防作弊系統?
A:SmmMem 的設計重點是提供無驅動的記憶體存取能力。由於不涉及傳統驅動載入,可能規避依賴驅動偵測的防機制,但具體效果取決於各遊戲的防作弊實作。

Q:哪些主機板支援 SmmMem?
A:需要 x64 UEFI 韌體並支援 AMI Aptio V 風格 PI SMM。目前已測試 ASUS TUF X870(AMD)和 MSI Z790 EDGE(Intel),但其他符合規格的主機板理論上也可使用。

Q:如何確認韌體是否正確安裝?
A:開機時透過序列埠讀取器觀察輸出,應該能看到韌體初始化、信箱設定、ACPI WMI 設定和 SMI 處理常式註冊的訊息。

Q:編譯時出現重複定義錯誤怎麼辦?
A:編譯 Client.c 時務必定義 API_ONLY 巨集,這會排除檔案內建的測試 main 函式,避免與你的應用程式主函式衝突。





大家正在看啥


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

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

本版積分規則

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

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

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