Windows程序设计-王艳平.pdf== 第二章
Win32 程序運行原理
對象句柄 為了使系統穩定,這些句柄是進程相關的,也就是僅對創建該內核對象的進程有效。如果將一個句柄值通過某種機制傳給其他進程中的線程,那么,該線程以此句柄為參數調用相關函數時就會失敗。
當然,多個進程共享一個內核對象也是可能的,調用DuplicateHandle函數復制一個進程句柄傳給其他進程即可。系統進程快照 CreateToolhelp32Snapshot 函數獲取當前系統所有的進程快照,相關更詳細的示例,查看msdn這個函數即可。
保護進程 這里的“保護進程”指的是保護進程不被其他進程非法關閉。有時一些軟件出于某種目的而禁止一些特殊程序的運行。比如,很多游戲都禁止WPE運行(一個截獲網絡數據的軟件),它們定時檢測系統內的進程,一旦發現WPE進程存在就試圖關閉它。
如果要保護WPE不會被非法關閉,可以從兩個方面入手,一個是防止此進程被其他進程檢測到,另一個是防止此進程被其他進程終止。
在檢測系統進程的時候,一般的程序都使用ToolHelp函數或者是Process Status函數(即
上面所述的EnumProcesses系列的函數),所以只要HOOK掉系統對這些函數的調用(有關
HOOK API的描述請參考9.3節),使這些函數的返回結果中不包含要保護的進程即可。
更簡單的辦法就是直接HOOK掉其他進程對TerminateProcess函數的調用。因為一個進程
要結束另外一個進程一般都調用TerminateProcess函數,包括Windows自帶的任務管理器。配
套光盤的09HookTermProApp實例就是基于這一思想而設計的(第9章的例子)。修改其他進程的內存 主要用 ReadProcessMemory和WriteProcessMemory 兩個函數實現。
總結
以上是生活随笔為你收集整理的Windows程序设计-王艳平.pdf== 第二章的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在线cad版本转换_商业住宅小区弱电系统
- 下一篇: 51单片机内部定时器/计数器实验