Einzelnen Beitrag anzeigen

Arnulf

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

Re: import / export tables zweier .dlls vergleichen

  Alt 14. Jul 2005, 13:16
Also ich versteh den import struct einfach nicht..
Irgendwie verstehe ich die struktur dahinter nicht.

Ich denk mal so komm ich sicher nicht an den namen der importierten function?...

Delphi-Quellcode:
function CheckImports (phandle : pointer): boolean;
  type timportblock = record
                        Characteristics: cardinal;
                        TimeDateStamp: cardinal;
                        ForwarderChain: cardinal;
                        Name: pchar;
                        FirstThunk: pointer;
                      end;
       pimportblock = ^timportblock;
var IDH1 : PImageDosHeader;
    INH1 : PImageNtHeaders;
    ImpTable1 : pimportblock;
    thunks: ^pointer;
    funcname : pchar;
    old : cardinal;
begin
IDH1 := phandle;
if (IDH1^.e_magic = IMAGE_DOS_SIGNATURE) then
begin
Form1.Memo1.Lines.Add('dll found');
INH1 := pointer(integer(idh1)+integer(IDH1^._lfanew));
impTable1 := pointer(integer(idh1)+integer(inh1^.OptionalHeader.DataDirectory[1].VirtualAddress));

    while (impTable1^.FirstThunk <> nil) do
    begin
      thunks := pointer(integer(impTable1^.FirstThunk)+integer(IDH1));
      while thunks^ <> nil do
      begin
        if VirtualProtect(thunks,4,PAGE_EXECUTE_READWRITE, old) then
        begin
            if impTable1^.Name = pchar('glBegin') then Form1.Memo1.Lines.Add('glbegin import');
            result := true;
          VirtualProtect(thunks,4,old, old);
        end;
        thunks := pointer(integer(thunks)+4);
      end;
      impTable1 := pointer(integer(impTable1)+sizeof(TImportBlock));
    end;
end;
end;
Der teil ist vermutlich völliger unsinn:

if impTable1^.Name = pchar('glBegin') then Form1.Memo1.Lines.Add('glbegin import'); Aber ich hab auch keine idee wie ich da ran kommen soll.
Ich dachte ich mach mal was einfacheres und versuche .dlls nach importierten funktionen zu durchsuchen.
Das ergebnis sieht man

Arnulf
  Mit Zitat antworten Zitat