Entwickler-Ecke

Windows API - API aus injecteter DLL aufrufen


Flamefire - Di 02.10.07 16:20
Titel: API aus injecteter DLL aufrufen
Hi
ich möchte eine dll injecten, welche eine codecave schreibt
in dieser soll die API-Funktion GetAdaptersInfo aufgerufen werden
die parameter wurden schon gepusht und ich kann (vermutlich) keine register verändern
die gettickcount z.b. kann ich aber ohne probleme aufrufen

die funktion sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure go() assembler;
asm
  call   GetAdaptersInfo
  call  GetTickCount
  mov   edi, $00A7D521
  jmp   edi
end;


die funktion wird ohne call angesprungen
wie krieg ich die GetAdaptersInfo zum laufen?


BenBE - Di 02.10.07 16:49
Titel: Re: API aus injecteter DLL aufrufen
user profile iconFlamefire hat folgendes geschrieben:
Hi
[...]
die funktion sieht so aus:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
procedure go() assembler;
asm
  call   GetAdaptersInfo
  call  GetTickCount
  mov   edi, $00A7D521
  jmp   edi
end;


die funktion wird ohne call angesprungen
wie krieg ich die GetAdaptersInfo zum laufen?


Wie sieht der Aufruf der Funktion GetAdapterInfo aus (Deklaration)?

Außerdem: Ziel-Sprung-Adressen codiert man NIE fest.
Merkt Dir lieber beim patchen die Original-Adresse.


Flamefire - Di 02.10.07 16:58

hm...also beim ich ersetze einen "call GetAdaptersInfo" mit "jmp @go()"

deklaration:DWORD GetAdaptersInfo(__out PIP_ADAPTER_INFO pAdapterInfo, __in_out PULONG pOutBufLen);
aber gibts in delphi nicht...

geht nicht ein direkter call?
vl beim programmstart ne variable machen mit der adresse der funktion und dann die variable callen?
hab das aber och nie gemacht...bräuchte also code