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