Einzelnen Beitrag anzeigen

brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#4

Re: import / export tables zweier .dlls vergleichen

  Alt 10. Jul 2005, 22:40
die ImportTabelle ist ne tabelle von mehreren dlls die importiert werden

| | | | addrn | addrf |


die ||symbolisieren dabei einen cardinal

addrn zeigt auf den namen der dll als pchar
addrf zeigt auf ne 2 tabelle mit adressen zu den pchars der einzelnen funktionen

hier mal nen auszug aus meinem crypter:

Delphi-Quellcode:
type TImportStruct = packed record
    res1,res2,res3,dllnameaddr,firstthunkaddr,
    res4,res5,res6,res7,res8: integer;
    f1,f2,f3,f4, f5: integer;
    s1: string[14];
    w1: word;
    s2: string[15];
    w2: word;
    s3: string[13];
    w3: word;
    s4: string[15];
    w4: word;
    s5: string[17];
  end;

function AddImport(p: pointer; mymem: integer): integer;
var ImportStruct: TImportStruct;
begin
  ZeroMemory(@ImportStruct,sizeof(TImportStruct));
  with ImportStruct do
  begin
    s1 := 'kernel32.dll';
    s2 := 'GetProcAddress';
    s3 := 'LoadLibraryA';
    s4 := 'VirtualProtect';
    s5 := 'GetModuleHandleA';
    dllnameaddr := MyVirtualMem+integer(@s1[1])-integer(@ImportStruct);
    firstthunkaddr := MyVirtualMem+integer(@f1)-integer(@ImportStruct);
    f1 := MyVirtualMem+integer(@w1)-integer(@ImportStruct)+1;
    f2 := MyVirtualMem+integer(@w2)-integer(@ImportStruct)+1;
    f3 := MyVirtualMem+integer(@w3)-integer(@ImportStruct)+1;
    f4 := MyVirtualMem+integer(@w4)-integer(@ImportStruct)+1;
  end;
  CopyMemory(p,@ImportStruct,sizeof(TImportStruct));
  result := sizeOf(TImportStruct);
end
vielleicht erkennst daraus den aufbau
ist ahlt nur für die paar funktionen die ich importiere

meine uallCollection hat auch nen "ImportWalker", da kannst sdir ja anschaun wie du da durchegehn musst um die importtabelle zu überprüfen
  Mit Zitat antworten Zitat