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