新聞中心
本人介紹下注入VS2003代碼到PE,文件格式的Import Table(導入表,也有譯為“引入表”)技術(shù),其也被稱為API重定向技術(shù),這些都是通過平時的學習和實踐中得出的結(jié)果。

目前累計服務客戶上千多家,積累了豐富的產(chǎn)品開發(fā)及服務經(jīng)驗。以網(wǎng)站設計水平和技術(shù)實力,樹立企業(yè)形象,為客戶提供做網(wǎng)站、網(wǎng)站設計、網(wǎng)站策劃、網(wǎng)頁設計、網(wǎng)絡營銷、VI設計、網(wǎng)站改版、漏洞修補等服務。成都創(chuàng)新互聯(lián)公司始終以務實、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設計的研究、對客戶形象的視覺傳遞、對應用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進步。
讓我們想像一下:如果我們可以通過操作導入表thunks將導入函數(shù)的入口點(thoroughfare)重定向到我們的指定的例程,用我們的例程過濾導入(消息)就成為可能。此外,我#t#們可以通過這個功能實現(xiàn)安排給我們適當?shù)睦?,VS2003代碼專業(yè)的Portable Executable (PE) Protectors正是這么來做的,另外一些種類的rootkits使用這個方法通過一個特洛伊木馬嵌入其惡意代碼到受害者。在反向工程世界里,我們稱之為:API重定向技術(shù),然而我不準備通過源代碼描述這個領(lǐng)域的所有觀點,本文只是通過一個簡單代碼介紹一下這個技術(shù)的概況。我將描述這個源代碼中沒有的其他一些問題;我不能公開這些代碼,原因是其關(guān)系到一些商業(yè)項目或可能會被懷有惡意者利用,然而我想本文可以被用來作為一個關(guān)于該主題的入門。
進入導入表
PE文件格式包括:MS-DOS header、NT headers、Sections headers和Section images(譯注:正如很多技術(shù)讀物上一樣,其實header可以譯為“頭”,image可譯為“映像”,但本文正文在不影響理解的前提下盡量保留原文術(shù)語,以免誤解。)正如你在下圖中所看到的。MS-DOS header是自DOS時代到Windows時代在所有微軟可執(zhí)行文件格式(executable file format)公有的。NT headers的思想來源于UNIX系統(tǒng)的Executable and Linkable Format (ELF),當然Portable Executable (PE)格式是Linux Executable and Linkable Format (ELF)的姐妹。PE 格式包括"PE" Signature、Common Object File Format (COFF) header、Portable Executable Optimal header和Section headers。
Portable Executable文件格式結(jié)構(gòu)
在Portable Executable Optional header,有一些數(shù)據(jù)目錄(data directories)描述了當前進程在虛擬內(nèi)存中主信息表(the principal information tables)的相對位置和大小。這些表可以有關(guān)于VS2003代碼資源的信息、import(導入)、export(導出)、relocation(重定位)、Debug(調(diào)試)、thread local storage(線程本地存儲)和COM運行時。沒有導入表想要找到一個PE可執(zhí)行文件是不可能的;
該表包含DLL的名稱和Functions(函數(shù))名稱,這些是當程序意圖通過它們的虛地址來請求(調(diào)用)它們時所必需的。在Console executable files(控制臺可執(zhí)行文件)中沒有發(fā)現(xiàn)資源表(resource table);然而它是擁有Graphic User Interface (GUI)的Windows可執(zhí)行文件的至關(guān)重要的部分。導出表(export table)在一個動態(tài)鏈接庫想要導出它的函數(shù)到外界時是必需的,并且它也在OLE Active-X容器中。Dot NET虛擬機在沒有COM+ runtime header下時不能被執(zhí)行。正如你看到的VS2003代碼,在PE格式中每個表都有特定的委派任務。
Data Directories(數(shù)據(jù)目錄)
- PIMAGE_NT_HEADERS pimage_nt_headers = ImageNtHeader(pImageBase);
- DWORD it_voffset = pimage_nt_headers->OptionalHeader.
- DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress;
- PIMAGE_DOS_HEADER pimage_dos_header = PIMAGE_DOS_HEADER(pImageBase);
- PIMAGE_NT_HEADERS pimage_nt_headers = (PIMAGE_NT_HEADERS)
- (pImageBase + pimage_dos_header->e_lfanew);
- DWORD it_voffset = pimage_nt_headers->OptionalHeader.
- DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress
分享題目:都是自己編的VS2003代碼格式歡迎大家指點改正
當前地址:http://www.5511xx.com/article/dphocip.html


咨詢
建站咨詢
