匯入表結構

來源:互聯網
上載者:User

學PE結構很長時間了,開始是從加密與解密的書上學到的,後來又看了一些其他的書,對PE的結構已經基本的瞭解了。但是因為很少用,所以也經常忘,尤其是匯入表與匯出表,裡面的具體結構經常混淆。

PE格式:

1。DOS Header

2.NT Header

3.Section Table

4.Section

DOS Header的最後一個標誌e_lfanew指示了NT Header的位置

NT Header結構

1.Signature

2.File Header

3.Optional Header

在Optional Header中又有三十幾項

其中最後一項是Data Directry,即資料目錄表,該項有十六項,每一項是一個IMAGE_DATA_DIRECTORY結構

IMAGE_DATA_DIRECTORY STRUCT
  VirtualAddress dd ?
  isize dd ?
IMAGE_DATA_DIRECTORY ENDS

資料目錄表的第一項指示了匯出表,第二項指示了匯入表

在第二項的VirtualAddress指向了IMAGE_IMPORT_DIRECPTOR數組的RVA

IMAGE_IMPORT_DESCRIPTOR STRUCT
  union
    Characteristics dd ?
    OriginalFirstThunk dd ?
  ends
  TimeDateStamp dd ?
  ForwarderChain dd ?
  Name1 dd ?
  FirstThunk dd ?
IMAGE_IMPORT_DESCRIPTOR ENDS

 其中OriginalFirstThunk中儲存的是一個IMAGE_THUNK_DATA數組的RVA,每個IMAGE_THUNK_DATA又指向IMAGE_IMPORT_BY_NAME

IMAGE_IMPORT_BY_NAME STRUCT
  Hint dw ?
  Name1 db ?
IMAGE_IMPORT_BY_NAME ENDS

Hint指示本函數在其所駐留DLL的引出表中的索引號。該域被PE裝載器用來在DLL的引出表裡快速查詢函數。該值不是必須的,一些連接器將此值設為0。
Name1含有引入函數的函數名。函數名是一個ASCIIZ字串。注意這裡雖然將Name1的大小定義成位元組,其實它是可變尺寸域,只不過我們沒有更好方法來表示結構中的可變尺寸域。

在IMAGE_IMPORT_DIRECPTOR結構中的FirstThunk項,與OrignalFirstThunk類似,它也是一組IMAGE_THUNK_DATA的RVA,不過該項所指的內容可以改變,並且該項指示的是函數的地址(開始的時候並不指向函數地址,而是OrignalFirstThunk所指的IMAGE_THUNK_DATA中的值與FirstThunk所指的IMAGE_THUNK_DATA相同,在PE裝載時,改變的,每個IMAGE_THUNK_DATA是一個函數的地址

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.