【正文】
_symboli=symbol(bar)。intint下面是一個例子:一個帶有/不帶有聲明__declspec(dllimport)的調(diào)用如下:源程序:為所有引入的符號產(chǎn)生STUB,每個由一個跳轉(zhuǎn)指令構(gòu)成,STUB是真正的調(diào)用目標,這些跳轉(zhuǎn)指令真正跳到一個從地址表內(nèi)取出的地址。數(shù)組找出輸出函數(shù)的的RVA或者是一個指向轉(zhuǎn)發(fā)串。RVA,找到指向包含輸出名字的RVAs的數(shù)組,其中每個RVA指向一個名字。RVA找到輸出數(shù)組,用索引定位輸出符號RVA所在元素。NumberOfNames39。exporttofortoexportto|AddressOfNameOrdinals+39。with39。exported//帶有序號的輸出函數(shù)的RVA39。exportedv序數(shù)=BASE+INDEX。AddressOfNames39。所以39。AddressOfNameOrdinals39。=1,意思是第一個輸出的序號為1,第二個是2。這樣就使用另一個文件內(nèi)的被指向的輸出。每個成員是輸出函數(shù)或變量的RVA。但一個項目可能有多個名字,或者沒有名字,這種情況只能夠以序號來訪問,不贊成只以序號輸出,帶來維護問題。.除了序數(shù)外,也可能以名字輸出。然后是32位的39。,輸出表創(chuàng)建的時間,并非總是有效的,有些鏈接器置0。Characteristics39。ENDS輸出表結(jié)構(gòu)(39。AddressOfNameOrdinalsDWORDAddressOfNamesDWORDAddressOfFunctionsDWORD?nNameWORD?STRUCT該節(jié)必須是初始化數(shù)據(jù)和可讀的。IMAGE_DIRECTORY_ENTRY_EXPORT39。的段。該串不是必須的,可以被舍棄。Hugendubelapplication,.版權(quán)copyright開始于一個簡單的目錄39。有的節(jié)數(shù)據(jù)沒有被數(shù)據(jù)目錄指向,其內(nèi)容和結(jié)果被編譯器支持,不是被鏈接器支持。.bss39。這意味著有節(jié)頭,但沒有節(jié)在文件內(nèi),該節(jié)被加載器創(chuàng)建,并且包含全0字節(jié)。PointerToRawData39。section還有未初始化的數(shù)據(jù),例如static,.data39。BaseOfData39。如果部分數(shù)據(jù)是共享的,或者有其他特性的話,節(jié)將包含更多的特征位集。IMAGE_SCN_MEM_READ39。5。static.code,BaseOfCode39。的集合,并且“可選頭”的成員39。IMAGE_SCN_MEM_EXECUTE39。section本節(jié)至少含有一個標志位39。SizeOfRawData39。PointerToRawData39。對齊,F(xiàn)ileAlignment39。section||+data||||||||||headers||||目錄在節(jié)內(nèi)的相對地址||into|||||+||optionalfileheader|++(節(jié)頭哪里去了?此段有問題!?。㏄ointerToRawData39。即在可選頭和每個節(jié)的后面將添加0。(IMAGE_SCN_MEM_WRITE)置1,進程得到“寫入”訪問節(jié)內(nèi)存。(IMAGE_SCN_MEM_READ)(IMAGE_SCN_MEM_EXECUTE)(IMAGE_SCN_MEM_SHARED)置1,節(jié)的數(shù)據(jù)不得緩存。bitbit24to(IMAGE_SCN_MEM_PRELOAD)置1,(IMAGE_SCN_MEM_LOCKED)(IMAGE_SCN_MEM_PURGEABLE)(IMAGE_SCN_MEM_FARDATA)(IMAGE_SCN_LNK_COMDAT)(IMAGE_SCN_LNK_REMOVE)置1,節(jié)內(nèi)不包含映象數(shù)據(jù)除了注釋,描述或者其他文檔外,是一個目標文件的一部分,可能是針對鏈接器的信息。置1,本節(jié)包含未初始化的數(shù)據(jù),執(zhí)行前即將被初始化為0。(IMAGE_SCN_CNT_INITIALIZED_DATA)置1,節(jié)內(nèi)包含的數(shù)據(jù)在執(zhí)行前是確定的。5最后一個是32位的39。NumberOfRelocations39。PointerToRelocations39。PointerToRawData39。SizeOfRawData39。下一個成員是39。VirtualSize39。不要依賴名字,不要假定節(jié)的原始數(shù)據(jù)起始于節(jié)的開始。.注意名字不全部跟節(jié)內(nèi)容有關(guān)。沒有必要前導39。?IMAGE_SECTION_HEADERdwddSizeOfRawData?VirtualAddressends?IMAGE_SIZEOF_SHORT_NAME在數(shù)據(jù)目錄之后,我們看到一個具有NumberOfSections個節(jié)頭成員的數(shù)組,按RVA排序。0x10000+0x12000,版權(quán)字數(shù)為33。Address(11)BoundIMAGE_DIRECTORY_ENTRY_LOAD_CONFIGstorage目錄IMAGE_DIRECTORY_ENTRY_GLOBALPTR(7)描述版權(quán)串IMAGE_DIRECTORY_ENTRY_SECURITY(3)異常目錄IMAGE_DIRECTORY_ENTRY_EXPORTbit,各個成員索引如下(括號內(nèi)為索引值):bitsDWORD下面是具有IMAGE_NUMBEROF_DIRECTORY_ENTRIES(16)個成員的IMAGE_DATA_DIRECTORYs結(jié)構(gòu)數(shù)組.IMAGE_DATA_DIRECTORY下面是32位的LoaderFlags,該堆在這里是主要堆,默認堆。.預留數(shù)量是地址空間不是真實的RAM,程序啟動時,提交的數(shù)量是真正的分配的內(nèi)存。,預留的堆的大小39。位預留堆棧大小39。位2置1,DLL被通知線程結(jié)合。95可執(zhí)行文件總是使用Win32(5)映像是OS/2IMAGE_SUBSYSTEM_WINDOWS_GUI對于其他可執(zhí)行文件類型,不必提供這個碼,可能為0。.它也是才文件開始到第一節(jié)的偏移量。它是給加載器的線索,需要多少頁加載映像。大部分情況下是0。這個必須是Win32版本或者POSIX版本。.下面2個16位的字是期望的可執(zhí)行文件版本,39。和FileAlignment39。下面2個32位是當映像文件加載后,PE文件的節(jié)在內(nèi)存內(nèi)的對齊,39。參見39。如果另一個映像已經(jīng)被加載到那個地址,則優(yōu)先地址不可使用。非初始化數(shù)據(jù)沒有RVA。)和初始化數(shù)據(jù)(39。AddressOfEntryPoint39。,所謂的bss所謂的數(shù)據(jù)段dataSizeOfCode39。MinorLinkerVersion39。Magic39。IMAGE_DATA_DIRECTORYNumberOfRvaAndSizesDWORD?WORDDllCharacteristics?CheckSumDWORDSizeOfImageDWORDWORDWORD?SectionAlignmentDWORDAddressOfEntryPointDWORDSizeOfInitializedDataDWORDSizeOfCode?Magic從上到下介紹成員。+0x51d00x5000=0x49d0處發(fā)現(xiàn)。你發(fā)現(xiàn)優(yōu)先加載地址是0x100000,于是我們處理RVA要找到文件內(nèi)的地址,你必須找出在RAM內(nèi)的按照4096對齊的節(jié),.code節(jié)自內(nèi)存RVA于是為了找到一個特殊的RVA指向的信息,你必須計算偏移量好象文件被加載一樣。39。參看39。例如:假如可執(zhí)行文件加載到0x400000,可執(zhí)行文件的RVA是0x1560.AddressesPE格式使用所謂的RVA。(IMAGE_FILE_UP_SYSTEM_ONLY)13(IMAGE_FILE_SYSTEM)如果不能夠才網(wǎng)絡(luò)運行,置1。操作系統(tǒng)建議拷貝文件到交換文件然后執(zhí)行。BitBitBit74(IMAGE_FILE_LOCAL_SYMS_STRIPPED)2(IMAGE_FILE_EXECUTABLE_IMAGE)不用于可執(zhí)行文件,可執(zhí)行文件的重定位信息在后面提到的base0一般都是0。時間戳用于綁定輸入目錄,后面講到。PC處理器第2:NumberOfSections,16位值,它是跟隨于頭后面的節(jié)數(shù)。Alpha(0x168)R10000IMAGE_FILE_MACHINE_R4000(MIPS)處理器R30000x014d第1:Machine,e_lfanew39。PointerToSymbolTable?WORD?WORDIMAGE_NT_HEADERS?Signature其值0x00004550由IMAGE_NT_SIGNATUREe_lfanew39。windowsSTUB的概念在16位WINDOWS可執(zhí)行文件內(nèi)就已經(jīng)被熟知了,STUB是用于OS/2可執(zhí)行文件,自解壓文檔和其他程序。section|++|||section|++|||directories+||++|(節(jié)是物理意義上的內(nèi)容組織,目錄是邏輯意義上的內(nèi)容組織,兩者互相配合才能找到需要的東西。在頭的后面是節(jié)頭,實際上,節(jié)的內(nèi)容就是真正需要運行一個程序所需要的東西,所有的頭和目錄成員就是幫你找到它。一個有趣的部分是尾巴上的數(shù)組數(shù)據(jù)目錄data接著,我們看到一個可選文件頭optional它是NT的一部分,但文檔很少。包括一個頭文件包括對PE格式的定義。fileWat,interface驅(qū)動程序也是這個格式。andNT, 標 題: 【原創(chuàng)】For菜鳥文章:PE文件格式,qduwg翻譯作 者: qduwg時 間: 20051221,15:50:04鏈 接: PE文件格式(翻譯:QduWg,原作LUEVELSMEYER)說明:希望本文能夠?qū)Τ跫壢腴TCRACKER有一定幫助,翻譯存在疏漏或者不準確,希望來信指出。同時也要注意填詞的順序,建議在第一遍放音時先填5等奇數(shù)空格,第二遍時再填6等偶數(shù)空格。通過預讀,我們就可以預測所要聽寫的詞匯,推測這些詞匯的詞性。使用適合自己的速記方法,如使用一些簡單的符號或者字母縮寫來及時記下所聽到的內(nèi)容。這需要考生多寫、多練、多記、多背,以打好基本功。復合式聽寫的題材主要涉及英、美國家的文化教育、人文環(huán)境、科普知識以及任務(wù)、故事等。(6)聽清問題,避免“答非所問”四、復合式聽寫復合式聽寫的短文篇幅在200詞左右,題材、體裁和難度與聽力理解部分的短文相似。(2)抓住題句,理解短文核心,速記要點這一點在聽長對話部分已作了講解,請大家參考。短文在給出論點后,會用說理、舉例、羅列、反證等手段來論證論點的成立,這些細節(jié)信息都是論據(jù),對他們的描述都是針對論點、與論點有關(guān)聯(lián)的。(3)議論文議論短文的內(nèi)容不是按照時間、地點順序安排的,也不是順著情節(jié)展開的。這類聽力文章敘述簡明、結(jié)構(gòu)清晰、有條有理,要求我們準確抓住其主題。這類短文常常介紹有關(guān)人物的姓名、出生年月、地點、重要事件及發(fā)生年代和相關(guān)評價等。其中時間、地點、人物的信息比較直觀,容易出現(xiàn)問題的地方是對情節(jié)的理解,而抓住了情節(jié)的發(fā)展,有關(guān)整個故事的各種問題也就迎刃而解了。此外,問題的出現(xiàn)常常與短文敘述的先后保持一致,對此考生可采取邊聽錄音邊看答案、邊聽邊預選的辦法,從而避免“聽到的沒記住,記住的沒有考”的現(xiàn)象。預測時所依賴的詞和短語的特征越大,預測的正確性也就越高,理解程度也就越深。在解答短文聽力理解題時要注意以下幾點。在實際考試中,推理題所占的比例時多時少,少則1~2題,多則4~5題。短文理解考查題型一般可以有細節(jié)題、推理判斷題和主旨題三大類。首先,由于每篇文章的3~4個考題都是相互聯(lián)系的,并且每篇短文的篇幅遠比對話長,所以相對于每一道試題來說,有較豐富的上下文信息,參照性強,提示多,便于理解和答題。四級聽力短文的體裁主要有記敘文、說明文和議論文。筆記主要記下長對話中的關(guān)鍵詞和關(guān)鍵信息。,速記要點由于篇幅的增加,短時間內(nèi)記住這么多的內(nèi)容難度非常大?!镜湫屠}】(2006年6月)) She’s worried about the seminar.B) The man keeps interrupt