**:
黑客反病毒論壇
dll注入技術之reg注入
dll注入技術指的是將乙個dll檔案強行載入到exe檔案中,並成為exe檔案中的一部分,這樣做的目的在於方便我們通過這個dll讀寫exe檔案記憶體資料,(例如 hook exe檔案中的api),或以被注入exe的身份去執行一些操作等等。
reg注入原理是利用在windows 系統中,當reg以下鍵值中存在有dll檔案路徑時,會跟隨exe檔案的啟動載入這個dll檔案路徑中的dll檔案。當如果遇到有多個dll檔案時,需要用逗號或者空格隔開多個dll檔案的路徑。
hkey_local_machine\software\microsoft\windows nt\currentversion\windows
我們可以利用這個特性來進行dll的注入,接下來需要解決的就是關於登錄檔操作的windows api了,如下列**所示:
regopenkeyex
開啟登錄檔鍵值
regqueryvalueex
查詢鍵值
regsetvalueex
設定鍵值
regclosekey
關閉鍵值
主要**如下:
//開啟鍵值
nreg = regopenkeyex(
hkey_local_machine,
m_szregpath,
0, key_all_access,
&hkey);
if(nreg != error_success)
//查詢鍵值
dword dwreadtype;
dword dwreadcount;
tchar szreadbuff[1000] = ;
nreg = regqueryvalueex(hkey,
null,
&dwreadtype,
(byte*)&szreadbuff,
&dwreadcount);
if(nreg != error_success)
//是否dll名稱已經在內容中
tstring strcmpbuff;
strcmpbuff = szreadbuff;
if (!strcmpbuff.find(injectfilepath))
//有字串就加入空格
if (0 != _tcscmp(szreadbuff,_t("")))
_tcscat_s(szreadbuff,injectfilepath);
//把dll路徑設定到登錄檔中
nreg = regsetvalueex(hkey,
0,reg_sz,
(const byte*)szreadbuff,
(_tcslen(szreadbuff)+1)*sizeof(tchar));
當我們完成了登錄檔的注入時,並不是希望所有程式都執行dll裡面的內容,這時我們就需要在dll中過濾視窗名稱,讓指定視窗名稱的exe檔案執行dll裡的執行緒。所需api如下表所示:
createthread
建立執行緒
sleep
睡眠
enumwindows
遍歷視窗
getwindowtext
得到視窗名稱
getcurrentprocessid
得到當前程序id
getwindowthreadprocessid
由hwnd獲得程序id
主要**如下:
bool callback lpenumfunc(hwnd hwnd, lparam lparam)
; //得到視窗名稱
getwindowtext(hwnd,str,sizeof(str));
//是否名稱是計算器
if(0 == _tcscmp(str,_t("計算器")))
}return true;
}dword threadproc(lpvoid lparam)
bool initinstance()
reg注入操作簡單易懂,甚至不用寫程式都可以完成注入操作,但是正是由於他的簡單性,每個exe都被注入,效率低,程式的擴充套件性差。
DLL注入 使用登錄檔進行DLL注入
實驗原理myhack2.dll原始碼 include windows.h include tchar.h define def cmd l c program files internet explorer iexplorer.exe define def addr l define def dst...
登錄檔防注入病毒
登錄檔是windows作業系統中的乙個核心資料庫,其中存放著各種引數,直接控制著windows的啟動 硬體驅動程式的裝載以及一些windows應用程式的執行,從而在整個系統中起著核心作用。這些作用包括了軟 硬體的相關配置和狀態資訊,比如登錄檔中儲存有應用程式和資源管理器外殼的初始條件 首選項和解除安...
注入Hook技術 DLL注入
winnt win2000 winxp中的遠執行緒技術之一 dll注入 什麼是遠執行緒?我們知道用createthread可以在當前程序裡建立乙個執行緒,遠執行緒與此類似,只不過是在其他程序中建立乙個執行緒,用api函式createremotethread。這個遠執行緒建立後就與建立它的程序無關了,...