PE
PE文件規(guī)定了可執(zhí)行文件的格式,凡是符合此格式的文件都能在windows系統(tǒng)上運(yùn)行。PE文件的格式暫且不談,說一些感染PE文件的幾種途徑。
導(dǎo)入表感染。這個(gè)涉及比較復(fù)雜的操作,首先,要自行寫一個(gè)dll文件,提供程序中對(duì)原dll引用的所有函數(shù),然后增加一個(gè)節(jié)區(qū),修改ImportAddress中的地址,使其指向新增加的節(jié),這樣,程序加載后,只要調(diào)用相關(guān)函數(shù),就會(huì)先執(zhí)行自己寫的dll,執(zhí)行完后,再跳轉(zhuǎn)到原代碼人口處執(zhí)行。
導(dǎo)入地址感染。這個(gè)相對(duì)簡(jiǎn)單些,在PE文件頭部分,IMAGE_OPTION_HEADER中有個(gè)ImportAddress目錄,這個(gè)目錄中只是一些jmp指令,我們可以修改jmp指令跳轉(zhuǎn)的地址,使其指向在PE文件中我們新增加的代碼。這需要在原PE文件中增加代碼,PE文件在硬盤上默認(rèn)200H字節(jié)對(duì)齊,一般存有空隙,如果代碼量小,不用增加新節(jié)就可以插入代碼。
修改入口函數(shù)地址。這個(gè)是最省事的辦法,在原PE文件中新增加一個(gè)節(jié),計(jì)算新節(jié)的RVA,然后修改入口代碼,使其指向新增加的節(jié)。當(dāng)然,如果.text節(jié)空隙足夠大的話,不用添加新節(jié)也可以。
修改快捷方式文件。如果PE文件存在快捷方式,可以先行感染快捷方式,使快捷方式指向自己寫的程序,自寫程序啟動(dòng)后,再執(zhí)行真正的PE文件。這種做法比較猥瑣,而且不可靠。
總結(jié)
- 上一篇: C++获取PE文件的入口点
- 下一篇: PE文件感染和内存驻留