2012-05-07 84 views
0

我有一個DLL文件,我購買了(沒有源代碼),我將它鏈接到我的應用程序,只需使用「LoadLibrary(」file.dll「)」,然後它導入一個函數,獲取唯一的ID的電腦。現在讓我們說,我們的黑客檢測到這個函數的名稱,現在他正在創建一個新的dll文件,它具有相同的名稱和相同的函數名稱。 他的新DLL文件將被替換(簡單地通過抓取他的dll到目錄並用我的替換),並且唯一ID的功能是可用的,但不返回任何內容。所以現在我的應用程序得到一個空白的唯一ID,黑客離開了我的手。C++ \ DLL - 如何防止DLL欺騙?

任何想法如何預防它?我的項目在C++上編程。

在此先感謝。

+0

當機器如此受損以至於有人可以替換任意DLL時,他們肯定會找到更有價值的方式來利用它。你會想到的任何對策都是通過替換對策代碼而被任意繞過的。 –

回答

0

你可以問你從哪個公司獲得DLL來提供這個DLL的LIB。然後你可以靜態鏈接到這個LIB。當這樣做時,庫的代碼將成爲你的代碼的一部分,因此對鉤子是透明的!

0

另一種可能性(在外部DLL的情況下是非常必要的):你可以試着說服你的DLL提供者不是通過NAME而是通過Ordinal來導出函數。這導致默默無聞的安全。這不會阻止掛鉤或替換,但至少這不會使導出的功能顯而易見。像73(按數字導出函數)而不是CreateMyFile(按名稱導出函數)。