Autor Beitrag
Flamefire
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: Di 02.10.07 16:20 
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:
ausblenden 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
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Di 02.10.07 16:49 
user profile iconFlamefire hat folgendes geschrieben:
Hi
[...]
die funktion sieht so aus:
ausblenden 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.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
Flamefire Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1207
Erhaltene Danke: 31

Win 10
Delphi 2009 Pro, C++ (Visual Studio)
BeitragVerfasst: 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