使用AheadLib生成DLL劫持代码
程序加載DLL會(huì)有一個(gè)優(yōu)先級(jí)順序,其中,最先加載的是同一目錄下的DLL,DLL劫持的原理是在程序的同目錄下放一個(gè)自己寫(xiě)的DLL,讓程序?qū)⑽覀儌卧斓腄LL加載進(jìn)去,然后在我們的DLL里調(diào)用真正DLL的函數(shù)。
借助 AheadLib 工具我們可以很方便的偽造DLL。比如,我們想劫持user32.dll,只需將user32.dll的路徑填入,然后生成CPP代碼。
看一下生成的代碼,由于user32.dll里面函數(shù)很多,有1213個(gè),所以代碼非常長(zhǎng)。
接下來(lái),創(chuàng)建一個(gè)DLL項(xiàng)目,將代碼放進(jìn)去編譯,設(shè)置項(xiàng)目編碼為多字節(jié)字符集,關(guān)閉預(yù)編譯選項(xiàng),即生成了一個(gè)偽造的user32.dll。
我們可以在DllMain里添加想要的功能。
注意,如果我們的程序是32位,則要拿SysWOW64下的winspool.drv,并對(duì)Load函數(shù)代碼做如下修改:
先判斷當(dāng)前進(jìn)程32位還是64位,然后獲取相應(yīng)的目錄。32位程序調(diào)用GetSystemDirectory,得到的是system32目錄,那么HOOK就會(huì)失敗。
總結(jié)
以上是生活随笔為你收集整理的使用AheadLib生成DLL劫持代码的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 检测代码区校验和实现简易反调试
- 下一篇: 多线程inline hook