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