Einzelnen Beitrag anzeigen

Arnulf

Registriert seit: 28. Okt 2004
Ort: Wien
271 Beiträge
 
#1

import / export tables zweier .dlls vergleichen

  Alt 15. Jun 2005, 23:16
Hi
Ich kämpf mich gerade durch data directorys und wie ein kleines kind spiel ich damit herum
Ich wollte vor allem fragen, ob ich da völligen unsinn gemacht hab, oder ob das im prinzip richtig ist:

INH1 und INH2 sind bereits die pointer zu den ntheaders.

Delphi-Quellcode:
           ////////////////////////
           /// import tables

           ImpTableSize1 := INH1^.OptionalHeader.DataDirectory[1].Size;
           ImpTableSize2 := INH2^.OptionalHeader.DataDirectory[1].Size;

           ImpTable1 := pointer(pointer(integer(INH1)+integer(sizeof(TIMAGEDATADIRECTORY))*sizeof(IMAGE_DIRECTORY_ENTRY_IMPORT)));
           ImpTable2 := pointer(pointer(integer(INH2)+integer(sizeof(TIMAGEDATADIRECTORY))*sizeof(IMAGE_DIRECTORY_ENTRY_IMPORT)));

           if ImpTableSize1 <> ImpTableSize2 then
              MessageBox(0,'imptable size wrong',nil,0)//result := false;
           else if not comparemem(ImpTable1,ImpTable2,ImpTableSize1) then
                              MessageBox(0,'imptable not same',nil,0);//result := false;;

            ///////////////////////
            ///// export table
           ExpTableSize1 := INH1^.OptionalHeader.DataDirectory[0].Size;
           ExpTableSize2 := INH2^.OptionalHeader.DataDirectory[0].Size;

           pExportDirectory1 := pointer(pointer(integer(INH1)+integer(sizeof(TIMAGEDATADIRECTORY))*sizeof(IMAGE_DIRECTORY_ENTRY_EXPORT)));
           pExportDirectory2 := pointer(pointer(integer(INH2)+integer(sizeof(TIMAGEDATADIRECTORY))*sizeof(IMAGE_DIRECTORY_ENTRY_EXPORT)));

           if ExpTableSize1 <> ExpTableSize2 then
              MessageBox(0,'imptable size wrong',nil,0)//result := false;
           else if not comparemem(pExportDirectory1,pExportDirectory2,ExpTableSize1) then
                              MessageBox(0,'exptable not same',nil,0);//result := false;;
Da ich wirklich kompletter Anfänger bin, hoffe ich es sagt mir jemand ob das kompletter unsinn ist oder es nur reines glück ist, daß mir das nicht abstürtzt .

Danke
Arnulf
Edit: bezugnehmend auf diesen thread: http://www.delphipraxis.net/internal...ll+vergleichen
  Mit Zitat antworten Zitat