我想知道如何監視另一個應用程序的進程內存,看看它是否被第三方操縱。比如當在特定進程上調用ReadProcessMemory,WriteProcessMemory時。例如,nProtect GameGuard可以檢測遊戲進程內存何時被操縱。檢測是否正在處理進程內存?
回答
真正的答案可能非常長,所以這裏有一些小技巧給你。首先,你需要一些系統級的掛鉤來實現這些功能,以及它們的低級構建塊(Zw ...,Nt ...,甚至系統調用)。這應該由內核驅動程序完成。
其次,您需要一種方法來安裝此驅動程序,並將其隨意刪除。這可以通過服務完成。
三,你需要一種內核驅動程序和遊戲之間的通信方式。在初始化階段,遊戲將安裝驅動程序,並告訴它遊戲正在運行的進程ID。然後,驅動程序將阻止從其他進程訪問該特定進程。
第四,你需要保持一個白名單。殺毒軟件等應用程序需要窺視和捅你的遊戲。您的內核驅動程序必須允許這些檢查通過。這是nProtect和類似技術失敗的地方。他們只是與其他軟件衝突。
第五,也許是時候想想其他方法來保護你的遊戲。 David Aucsmith的論文「防篡改軟件:實施」值得一讀。
謝謝,我想我會和你的第五個建議一起去。我希望它不必如此入侵。 – PepsiMmmm
抱歉張貼在舊線程上,但這也是一個很好的閱讀。儘管它採用了稍微不同的方法,但它引入了很多好方法來檢測和抵消內存操作,包括哈希/冗餘。 http://research.microsoft.com/en-us/um/people/venkie/jakubowski09tts.pdf –
- 1. 批處理程序來檢查進程是否存在
- 2. 如何檢測文件是否在java中進行處理?
- 3. 檢測物理光驅是否存在
- 4. WPF動畫:檢測是否有任何動畫正在處理?
- 5. 如何檢測dompdf是否正在處理本地腳本
- 6. 檢測Windows進程和應用程序是否正在運行
- 7. 檢測是否存在,然後自動處理
- 8. NG重複 - 檢測是否存在圖像和處理
- 9. 檢測控件是否被處理
- 10. 檢測ReceivePort是否在調用之前有處理程序
- 11. 檢查進程是否正在運行
- 12. 檢查進程是否正在運行
- 13. 如何通過批處理腳本檢查進程是否正在運行
- 14. 檢測Internet Explorer進程是否正在運行Flash Player
- 15. 如何檢測進程是否正在調試
- 16. 檢測進程是否在Windows容器內執行
- 17. 檢查特定的wsgi處理程序是否正在運行
- 18. 檢測進程運行內存泄漏
- 19. 檢測內存訪問進程
- 20. 檢測表是否存在
- 21. GWT:檢查事件處理程序是否存在
- 22. 檢測內存是否低於ocaml
- 23. 是否可以檢查express.js處理程序是否正在使用HTTPS?
- 24. 檢測進程是否空閒
- 25. 檢測遠程桌面是否有批處理活動
- 26. .net遠程處理:檢測服務器是否沒有運行
- 27. 如何檢查批處理是否成功執行了進程
- 28. 檢查進程是否正在運行(使用進程名稱)
- 29. 如何檢查SOAP錯誤是否正在被正常處理?
- 30. 檢查進程中是否存在進程
你究竟想要完成什麼? –
我想檢測何時在我的應用程序上調用OpenProcess,ReadProcessMemory,WriteProcessMemory。我想通過一個單獨的程序來監視它。 – PepsiMmmm
可能是一個系統廣泛的鉤。你會注入每個進程,並監視他們對這些函數的調用,如果進程ID與你的匹配,你的行爲依據是什麼? –