DLL劫持內(nèi)存補(bǔ)丁制作工具是一款利用dll劫持技術(shù)制作破解補(bǔ)丁的工具,通過這款軟件用戶可以可以對主程序進(jìn)行補(bǔ)丁。此種方法只對除kernel32.dll, ntdll.dll等核心系統(tǒng)庫以外的DLL有效,如網(wǎng)絡(luò)應(yīng)用程序的ws2_32.dll,游戲程序中的d3d8.dll,還有大部分應(yīng)用程序都調(diào)用的lpk.dll,這些DLL都可被劫持。
DLL劫持技術(shù):
什么是DLL劫持
根據(jù)前面說的Windows資源共享機(jī)制,操作系統(tǒng)加載程序首先從應(yīng)用程序目錄中加載模塊。這一特性在注冊表中也有體現(xiàn):HKLM\System\CurrentControlSet\Control\Session Manager\SafeDllSearchMode,如果為1,搜索的順序?yàn)椋簯?yīng)用程序所在目錄->系統(tǒng)目錄(用GetSystemDirectory獲。->16位系統(tǒng)目錄->Windows目錄(用GetWindowsDirectory獲。->運(yùn)行程序的當(dāng)前目錄->PATH環(huán)境變量,如果為0,搜索順序?yàn)椋簯?yīng)用程序所在目錄->運(yùn)行程序的當(dāng)前目錄->系統(tǒng)目錄(用GetSystemDirectory獲。->16位系統(tǒng)目錄->Windows目錄(用GetWindowsDirectory獲。->PATH環(huán)境變量。Windows Server 2003默認(rèn)值為1,Windows XP/2000默認(rèn)值為0或者沒有這個(gè)鍵值。但是不管是哪種情況,第一個(gè)搜索的肯定是應(yīng)用程序的所在目錄,這樣就有機(jī)會讓應(yīng)用程序去加載我們的DLL。如果這個(gè)DLL和系統(tǒng)目錄下的某個(gè)DLL同名,導(dǎo)出表也相同,功能就是加載系統(tǒng)目錄下的那個(gè)DLL,并且將導(dǎo)出表轉(zhuǎn)發(fā)到那個(gè)真實(shí)的DLL。這時(shí)DLL劫持就發(fā)生了?梢钥闯,構(gòu)造一個(gè)符合上面要求的DLL,再將其放在可執(zhí)行文件的目錄即可輕松實(shí)現(xiàn)DLL劫持了。
DLL劫持的實(shí)現(xiàn)
這一步我們的工作就是通過編程來實(shí)現(xiàn)一個(gè)LPK.DLL文件,它與系統(tǒng)目錄下的LPK.DLL導(dǎo)出表相同,并能加載系統(tǒng)目錄下的LPK.DLL,并且能將導(dǎo)出表轉(zhuǎn)發(fā)到真實(shí)的LPK.DLL。可以看出我們要實(shí)現(xiàn)的這個(gè)DLL需求如下:
1、構(gòu)造一個(gè)與系統(tǒng)目錄下LPK.DLL一樣的導(dǎo)出表;
2、加載系統(tǒng)目錄下的LPK.DLL;
3、將導(dǎo)出函數(shù)轉(zhuǎn)發(fā)到系統(tǒng)目錄下的LPK.DLL上;
4、在初始化函數(shù)中加入我們要執(zhí)行的代碼。
更新日志:
2015.05.16 版本號 1.0.0.19
1.修復(fù)已知BUG
2.語言文件歸類到language文件夾
3.數(shù)據(jù)進(jìn)行簡單加密保存
2014.11-26 版本號 1.0.0.18
1.修改部分API Hook導(dǎo)致崩潰問題
2014.08-30 版本號 1.0.0.17
1.修改繁體系統(tǒng)不能保存/加載配置問題