實現DLL記憶體補丁,DLL劫持技術

2021-06-22 02:25:36 字數 2152 閱讀 6681



在windows下當乙個可執行檔案執行時,windows載入器將可執行模組對映到程序的位址空間中,載入器分析可執行模組的輸入表,並設法找出任何需要的dll,並將它們對映到程序的位址空間中。由於輸入表是根據dll名來進行查詢,首先是查詢當前目錄下有沒這檔案,沒有話在去查詢系統目錄c:\\windows\\system32有沒這檔案,所以我們可以完全趁這個機會去劫持dll,把他劫持下來後就可以在裡面進行我們要做的事情。

為了讓我們自己開發的補丁dll有匯出函式,我們可以用 #parma comment(..),如:

#pragma comment(linker, "/export:testadd=_testdlllib_testadd,@1")
1.補丁前dll。

補丁前

//by symanli

#include "stdafx.h"

#include "dll.h"

bool apientry dllmain( handle hmodule,

dword ul_reason_for_call,

lpvoid lpreserved

)//原始函式

int testadd(int a,int b)

2.補丁後dll

//這是補丁**。by symanli

// 標頭檔案

#include // 巨集定義

#define externc extern "c"

#define naked __declspec(naked)

#define export __declspec(dllexport)

#define alcpp export naked

#define alstd externc export naked void __stdcall

#define alcfast externc export naked void __fastcall

#define alcdecl externc naked void __cdecl

// testdlllib 命名空間

namespace testdlllib

; // 原始函式返回位址

// 載入原始模組

inline bool winapi load()

return (m_hmodule != null);

}// 釋放原始模組

inline void winapi free()

}// 獲取原始函式位址

farproc winapi getaddress(pcstr pszprocname)

wsprintf(tztemp, text("無法找到函式 %hs,程式無法正常執行。"), pszprocname);

messagebox(null, tztemp, text("aheadlib"), mb_iconstop);

exitprocess(-2);

}return fpaddress;

}}using namespace testdlllib;

// 入口函式

bool winapi dllmain(hmodule hmodule, dword dwreason, pvoid pvreserved)

return load();

}else if (dwreason == dll_process_detach)

free();

}return true;

}// 匯出函式

alcdecl testdlllib_testadd(void)

#pragma comment(linker, "/export:testadd=_testdlllib_testadd,@1")

exe呼叫

//exe呼叫**

#pragma comment(lib,"tstdll.lib")//匯入先前dll的lib,就是最原始的lib

void ctstexedlg::onbutton1()

DLL補丁劫持製作

dll 由於輸入表中只包含 dll 名而沒有它的路徑名,因此引導程式必須在磁碟上搜尋 dll 檔案。首先會嘗試從當前程式所在的目錄載入 dll,如果沒找到,則在windows 系統目錄中查詢,最後是在環境變數中列出的各個目錄下查詢。利用這個特點,先偽造乙個系統同名的 dll,提供同樣的輸出表,每個輸...

DLL劫持原理

系統有一套標準的搜尋dll路徑的規則,這套規則又分為兩種搜尋模式,安全搜尋模式,非安全搜尋模式。預設情況下啟用安全dll搜尋模式。要禁用此功能,需建立hkey local machine system currentcontrolset control session manager safedll...

dll劫持破壞360

說起dll劫持技術,相信大家都不會陌生,因為這種技術的應用比較廣泛,比如 木馬後門的啟動 破解程式的記憶體補丁 外掛程式外掛程式的注入以及加密狗的模擬 等。之所以dll劫持技術深受黑客們的喜愛,主要是因為該技術可以有效的躲過大部分殺軟,並且實現起來技術難度不大。dll劫持技術也不是什麼新技術,記得在...