工具篇 PEinfo第一講

1,編程思路:文件格式檢查-〉fileheader讀取-〉fileoptionheader讀取-〉數據目錄表讀取-〉區塊表讀取-〉輸出表-〉輸入表

第一步,文件格式檢查

  dos頭,   IMAGE_DOS_HEADER STRUCT

                      {

                          WORD          e_magic

                           ..........

                         DWORD     e_lfanew     //指向pe文件頭+3ch

                       }PIMAGE_DOS_HEADER  ENDS

                        PIMAGE_DOS_HEADER      pDH=NULL;

   

   判斷pDH->e_magic=='MZ'並通過pDH->e_ifanew找到IMAGE_NT_HEADERS

            IMAGE_NT_HEADERS    STRUCT

            {

                     DWORD                                                Signature

                     IMAGE_FILE_HEADER                       FileHeader

                     IMAGE_OPTIONAL_HEADER32       OptionlHeader

              }PIMAGE_NT_HEADERS  ENDS

               PIMAGE_NT_HEADERS   pNTH=NULL;

  檢測:             pNTH->Signature=='PE';

    

 第二部,FileHeader讀取    

                         PIMAGE_NT_HEADERS  GetNtHeaders(LPVOID  ImageBase)

                             {

                                   if(  !IsPEFile(ImageBase)   )

                                          return  NULL;

                              PIMAGE_NT_HEADERS    pNTH;

                               PIM_DOS_HEADERS      pDH;

                               pDH=(PIMAGE_DOS_HEADER)ImageBase;

                               pNTH=(PIMAGE_NT_HEADERS)(   (DWORD)pDH+pDH->e_lfanew     ) ;

                             return   pNTH;

                            }

              

       




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章