PE文件規定了可執行文件的格式,凡是符合此格式的文件都能在windows系統上運行。PE文件的格式暫且不談,說一些感染PE文件的幾種途徑。
導入表感染。這個涉及比較復雜的操作,首先,要自行寫一個dll文件,提供程序中對原dll引用的所有函數,然后增加一個節區,修改ImportAddress中的地址,使其指向新增加的節,這樣,程序加載后,只要調用相關函數,就會先執行自己寫的dll,執行完后,再跳轉到原代碼人口處執行。
導入地址感染。這個相對簡單些,在PE文件頭部分,IMAGE_OPTION_HEADER中有個ImportAddress目錄,這個目錄中只是一些jmp指令,我們可以修改jmp指令跳轉的地址,使其指向在PE文件中我們新增加的代碼。這需要在原PE文件中增加代碼,PE文件在硬盤上默認200H字節對齊,一般存有空隙,如果代碼量小,不用增加新節就可以插入代碼。
修改入口函數地址。這個是最省事的辦法,在原PE文件中新增加一個節,計算新節的RVA,然后修改入口代碼,使其指向新增加的節。當然,如果.text節空隙足夠大的話,不用添加新節也可以。
修改快捷方式文件。如果PE文件存在快捷方式,可以先行感染快捷方式,使快捷方式指向自己寫的程序,自寫程序啟動后,再執行真正的PE文件。這種做法比較猥瑣,而且不可靠。