最近在網(wǎng)上看到有人說(shuō)代碼中可以對(duì)調(diào)用者是不是屬于自己的程序進(jìn)行檢測(cè),用來(lái)提高軟件的安全性。但是我在網(wǎng)上搜調(diào)用者檢測(cè)沒(méi)找到相關(guān)內(nèi)容,想問(wèn)下這項(xiàng)技術(shù)的確切名稱是什么?如果我想在自己的軟件中加入相關(guān)的內(nèi)容應(yīng)該怎么做呢?
是堆棧檢測(cè),檢查返回值嗎?
調(diào)用RtlCaptureContext函數(shù),此函數(shù)傳入?yún)?shù)是個(gè)CONTEXT指針,函數(shù)返回后此指針中的eip變量為當(dāng)前函數(shù)返回后CPU即將執(zhí)行的指令的地址,獲取的eip可能不成功,如果當(dāng)前函數(shù)沒(méi)有保存棧幀,如push ebpmov ebp, esp如果函數(shù)開(kāi)頭沒(méi)有這兩條指令,那么獲取的調(diào)用者就不對(duì),如果可以正確獲取到調(diào)用者,然后枚舉當(dāng)前進(jìn)程的模塊,獲取exe及合法模塊的起始地址、結(jié)束地址,判斷是否剛才獲取的eip是不是落在這些區(qū)間內(nèi),來(lái)提高軟件的安全性。可以參考這篇文章:http://www.voidcn.com/article/p-helhxifq-hk.html