游戏学习
外掛思想
1.對于注入內存的內存掛,首先是注入外掛模塊
2.隱藏外掛模塊
3.與用戶交互并操作游戲核心功能
4.分析游戲安全保護并繞過
5.外掛模塊自我保護
反外掛思路
1.防止游戲客戶端代碼被分析(去明文字符串,加殼等等)
2.防止被注入外掛模塊(雙進程保護,驅動監控加載模塊)
3.加密通信協議,防止重放數據包
4.防止外掛call函數,修改代碼與數據。
第二章 注入技術
10種注入:注冊表注入、遠線程注入、依賴可信進程注入、APC注入、消息勾子注入、導入表注入、劫持進程創建注入、LSP劫持注入、輸入法注入、ComRes注入。
遠線程注入:簡單,易實現,但只要監控LoadLibrary就可監控到
依賴可信進程注入:services不易調試,權限高,隱蔽性好,外掛木馬的好跳板
1.外掛exe遠程向services注入外掛DLL;
2.外掛DLL高Process32Next查詢游戲EXE并向其注入外掛DLL
3.外掛EXE查詢遍歷游戲EXE中是否加載外掛DLL
4.外掛EXE遠程調用FreeLibrary釋放servieces中的外掛DLL
優:隱蔽性好 缺點:遍歷查詢游戲EXE要防止被假進程,最好不要顯式調API
APC注入:Asynchronous Procedure Call,異步過程調用,每個線程都有一個APC隊列,在用戶模式下,當線程調用SleepEx,WaitForSingleObjectEx等進入"Alterable Wait Status.
此時系統會遍歷APC隊列,先進先出地處理其中函數(QueueUserAPC)
優:比較隱蔽 缺:實現的條件苛刻
導入表注入:修改游戲EXE依賴dll樹上找個結點,程序運行前加載,加載修改回導入表。
優:游戲依賴庫多,不易用完整性來查驗,同時客戶端版本不同,更易躲過檢測
缺點:文件操作明顯,易被ProcessMonitor檢測到
劫持進程創建注入:如果在進程起來前能獲得目標進程的讀寫權限,只要CreatProcess時傳入CREATE_SUSPENDED,再load外掛DLL,最后ResumeThread游戲線程。
CreateProcess->CreateProcessInternal->Nt/ZwCreateProcess->KiFastSystemCall -用戶態 - 內核態 ->
KiFastSystemCall 是ring3到ring0的通道,只要在此函數之前劫持都行
優點:不易防御,成功率高
缺點:劫持時間不宜過長,否則宜被發現,劫持后如再需要劫持則要Hook,但此時易被檢測
LSP(Layer Service Provider分層服務提供者)是一個DLL程序,安裝在winsock目錄下,依靠低層的基礎服務提供者來實現高層的服務。
SPI(Service Provider Interface,服務提供者接口)由LSP導出供ws2_32.dll調用的系列函數。winsock api對應有WSPStartup,WSPSocket,WSPSendTo等
當網絡程序調用socket創建套接字是傳3參數就是在選擇Base Service Provider和Layer Service Provider.
要實現LSP加載:1.實現LSP,即編寫一個導出WSPStartup函數的DLL,2.安裝該LSP
輸入法注入:需要3個程序協同完成:一個自制ime結尾的輸入法模塊,一個是外掛DLL,一個是控制IME文件的EXE模塊
EXE模塊發命令,IME輸入法模塊接收命令加載或卸載外掛DLL
優點:加載方法優美,難以阻止,實現簡單,使用方便
缺點:外掛DLL加載后快速隱藏或卸載輸入法模塊。
ComRes注入:ComRes.dll是windows中COM服務所使用的一個系統文件,常被木馬病毒替換
步驟:1.以ComRes規范編寫外掛模塊;2.關閉文件保護;3.rename原ComRes.dll,copy
優點:簡單 缺點:不進行隱藏,因帶有特征而易被檢測到。
1.對于注入內存的內存掛,首先是注入外掛模塊
2.隱藏外掛模塊
3.與用戶交互并操作游戲核心功能
4.分析游戲安全保護并繞過
5.外掛模塊自我保護
反外掛思路
1.防止游戲客戶端代碼被分析(去明文字符串,加殼等等)
2.防止被注入外掛模塊(雙進程保護,驅動監控加載模塊)
3.加密通信協議,防止重放數據包
4.防止外掛call函數,修改代碼與數據。
第二章 注入技術
10種注入:注冊表注入、遠線程注入、依賴可信進程注入、APC注入、消息勾子注入、導入表注入、劫持進程創建注入、LSP劫持注入、輸入法注入、ComRes注入。
遠線程注入:簡單,易實現,但只要監控LoadLibrary就可監控到
依賴可信進程注入:services不易調試,權限高,隱蔽性好,外掛木馬的好跳板
1.外掛exe遠程向services注入外掛DLL;
2.外掛DLL高Process32Next查詢游戲EXE并向其注入外掛DLL
3.外掛EXE查詢遍歷游戲EXE中是否加載外掛DLL
4.外掛EXE遠程調用FreeLibrary釋放servieces中的外掛DLL
優:隱蔽性好 缺點:遍歷查詢游戲EXE要防止被假進程,最好不要顯式調API
APC注入:Asynchronous Procedure Call,異步過程調用,每個線程都有一個APC隊列,在用戶模式下,當線程調用SleepEx,WaitForSingleObjectEx等進入"Alterable Wait Status.
此時系統會遍歷APC隊列,先進先出地處理其中函數(QueueUserAPC)
優:比較隱蔽 缺:實現的條件苛刻
導入表注入:修改游戲EXE依賴dll樹上找個結點,程序運行前加載,加載修改回導入表。
優:游戲依賴庫多,不易用完整性來查驗,同時客戶端版本不同,更易躲過檢測
缺點:文件操作明顯,易被ProcessMonitor檢測到
劫持進程創建注入:如果在進程起來前能獲得目標進程的讀寫權限,只要CreatProcess時傳入CREATE_SUSPENDED,再load外掛DLL,最后ResumeThread游戲線程。
CreateProcess->CreateProcessInternal->Nt/ZwCreateProcess->KiFastSystemCall -用戶態 - 內核態 ->
KiFastSystemCall 是ring3到ring0的通道,只要在此函數之前劫持都行
優點:不易防御,成功率高
缺點:劫持時間不宜過長,否則宜被發現,劫持后如再需要劫持則要Hook,但此時易被檢測
LSP(Layer Service Provider分層服務提供者)是一個DLL程序,安裝在winsock目錄下,依靠低層的基礎服務提供者來實現高層的服務。
SPI(Service Provider Interface,服務提供者接口)由LSP導出供ws2_32.dll調用的系列函數。winsock api對應有WSPStartup,WSPSocket,WSPSendTo等
當網絡程序調用socket創建套接字是傳3參數就是在選擇Base Service Provider和Layer Service Provider.
要實現LSP加載:1.實現LSP,即編寫一個導出WSPStartup函數的DLL,2.安裝該LSP
輸入法注入:需要3個程序協同完成:一個自制ime結尾的輸入法模塊,一個是外掛DLL,一個是控制IME文件的EXE模塊
EXE模塊發命令,IME輸入法模塊接收命令加載或卸載外掛DLL
優點:加載方法優美,難以阻止,實現簡單,使用方便
缺點:外掛DLL加載后快速隱藏或卸載輸入法模塊。
ComRes注入:ComRes.dll是windows中COM服務所使用的一個系統文件,常被木馬病毒替換
步驟:1.以ComRes規范編寫外掛模塊;2.關閉文件保護;3.rename原ComRes.dll,copy
優點:簡單 缺點:不進行隱藏,因帶有特征而易被檢測到。
總結
- 上一篇: PE学习(十一)第十一章:动态加载技术
- 下一篇: 注入(一):APC注入