如果我們将病毒木馬植入他人計算機,将會在他人電腦上運作多個執行個體,很有可能增加暴露的風險。是以為了防止這種風險發生,我們需要通過程式設計確定隻出現一個執行個體。
CreateMutex
建立或打開一個已命名或未命名的互斥對象。
函數聲明
具體可直接查詢msdn
CreateMutex(a,b,c)
參數
參數a為指向SECURITY_ATTRIBUTES結構的指針。若值為NULL,則句柄不能由子程序繼承。
參數b值為TRUE并且調用者建立了互斥鎖,則調用的線程将獲得互斥鎖對象的初始所有權。否則,調用線程不會獲得互斥鎖的所有權。
參數c是互斥對象的名稱。區分大小寫,如果為NULL,則建立不帶名稱的互斥對象,若與其他變量名稱比對,則函數報錯。GetLastError會傳回ERROR_INVALID_HANDLE。
傳回值
若函數成功,則傳回新建立的互斥對象的句柄。
若函數失敗,則傳回NULL,要獲得詳細資訊 需要用到GetLastError。
若互斥鎖是一個已命名的互斥鎖,則GetLastError會傳回ERROR_INVALID_HANDLE。
原理
原理其實很簡單,因為第一個程式已經建立了一個有名字的互斥鎖對象,第二個程式去建立時,會檢測到同名互斥鎖,傳回ERROR_ALREADY_EXISTS的狀态碼。
我們隻需檢測GetLastError函數的傳回值是否為ERROR_ALREADY_EXISTS就可以判斷是否出現重複程序。
第一個程式啟動

第二個程式啟動
red team