基礎的東西不想多講,簡單的提一句,具體請問度娘。
Windows的PE加載器會從執行文件目錄下尋找DLL,若是找不到再去其餘地方找。
把咱們特定的DLL假裝成系統DLL,而後放在執行文件目錄下,就能實現DLL劫持。
劫持來幹嗎? 確定是要在被幹程序體內有一席之地,而後想幹什麼就幹什麼。好比劫持ws2_32.dll能夠實現抓包,改包,轉向等。
如何僞造?
固然是僞造導出表啦,導出表是一個DLL最總要的部分。
LPK.dll。 網絡
#pragma comment(linker, "/EXPORT:LpkInitialize=_gamehacker_LpkInitialize,@1") #pragma comment(linker, "/EXPORT:LpkTabbedTextOut=_gamehacker_LpkTabbedTextOut,@2") #pragma comment(linker, "/EXPORT:LpkDllInitialize=_gamehacker_LpkDllInitialize,@3") #pragma comment(linker, "/EXPORT:LpkDrawTextEx=_gamehacker_LpkDrawTextEx,@4") #pragma comment(linker, "/EXPORT:LpkExtTextOut=_gamehacker_LpkExtTextOut,@6") #pragma comment(linker, "/EXPORT:LpkGetCharacterPlacement= _gamehacker_LpkGetCharacterPlacement,@7") #pragma comment(linker, "/EXPORT:LpkGetTextExtentExPoint=_gamehacker_LpkGetTextExtentExPoint,@8") #pragma comment(linker, "/EXPORT:LpkPSMTextOut=_gamehacker_LpkPSMTextOut,@9") #pragma comment(linker, "/EXPORT:LpkUseGDIWidthCache=_gamehacker_LpkUseGDIWidthCache,@10") #pragma comment(linker, "/EXPORT:ftsWordBreak=_gamehacker_ftsWordBreak,@11")
是的,純手寫僞造很麻煩,一下子還得寫轉發代碼~~~。 若是某DLL的導出函數比較多,那真是一個累人的活兒。
在這裏我介紹一款比較好用的自動生成工具:
aheadlib
功能:根據輸入DLL的導出表生成劫持源碼。
把生成的源碼載入vc編譯器是能夠正常編譯的。
選項很簡單,本身摸索,通常默認便可。
在生成的代碼中,你能找到:
AheadLib_ + 原始DLL導出函數名 ()
這樣的函數
好比:函數
ALCDECL AheadLib_gethostbyname(void) { GetAddress("gethostbyname"); __asm JMP EAX; }
你能夠在這個函數中添加你本身的響應代碼。 攔截就直接retn +參數長度。孩子,知道抓包工具該怎麼寫了吧?
下面介紹一個好玩的攔截例子。能夠注入到大部分的企鵝網絡遊戲客戶端。
在system32目錄下有一個 rasadhlp.dll。
企鵝遊戲在啓動的時候會加載rasadhlp.dll,並且仍是在保護機制開啓以前。
因此劫持rasadhlp.dll就能過保護輕鬆注入騰訊遊戲。【今天的LOL至少還能注入 2015.7.12】
使用工具,生成一份rasadhlp.dll的劫持代碼。
而後在DllMain中添加一些代碼。
<ignore_js_op>
添加的代碼:
注意Load() 函數時工具生成的。這個函數用來加載原始DLL。
工具
HMODULE hLoad; char *v; hLoad=LoadLibrary("zr.dll"); if (hLoad==NULL) { MessageBoxA(NULL,"沒法載入 zr.dll",NULL,MB_OK); goto loading; } v=(char *)GetProcAddress(hModule,"TxEntry"); if(!v) { MessageBoxA(NULL,"沒法找到 TXEntry 函數",NULL,MB_OK); goto loading; } CreateThread(NULL,0,(LPTHREAD_START_ROUTINE)v,0,0,NULL); loading: return Load();
這段代碼的目的是加載zr.dll而後調用TxEntry函數。
注入進去後就能夠爲所欲爲的幹一些不和諧的事情。 好比搜索內存/修改內存。
到了如今,就能夠去易語言論壇找一些最新的 無限視距DLL 注入進去試試啦。
<ignore_js_op>
當按下確認按鈕後 TP保護纔開始加載。
相關工具已經打包。spa