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