![]() |
Importierte API Funktionen erweitern...
Hi Leute,
da ich gerne mal auf Assembler-Basis Code in andere Anwendungen injecte... Sei es zum Cheat schreiben oder sonstigen Spass haben. In Asm auf die bereits Importierten API-Funktionen zugreifen ist kein sonderliches Problem... nur jetzt mal meine Frage: gibt es eine Möglichkeit auf eine nicht Importierte Funktion einer bereits geladenen DLL zu refferenzieren? Also sozusagen die Funktion "nachladen"? Greetz Boombuler |
Re: Importierte API Funktionen erweitern...
Natürlich, wieso nicht?! Du mußt dir nur die Exporttabelle des geladenen Moduls (der DLL also) angucken und dann den gewünschten Export raussuchen. GetProcAddress macht ja nunmal nix anderes. Das Prinzip kriegst du aber auch ohne GetProcAddress mit ein paar billigen Zeilen Code gebacken.
|
Re: Importierte API Funktionen erweitern...
Ah, Ok...
Läuft super! Merke: Delphi bastelt sich so ne art referenz tabelle die ca so aus sieht in ASM:
Code:
Und an den entsprechenden Speicherstellen auf die die Pointer zeigen steht der gleiche wert drin den mir GetProcAddress liefert...
004085BC $-FF25 68779F00 JMP DWORD PTR DS:[<&user32.ReleaseDC>] ; user32.ReleaseDC
004085C2 8BC0 MOV EAX,EAX 004085C4 $-FF25 64779F00 JMP DWORD PTR DS:[<&user32.RemoveMenu>] ; user32.RemoveMenu 004085CA 8BC0 MOV EAX,EAX 004085CC $-FF25 60779F00 JMP DWORD PTR DS:[<&user32.RemovePropA>] ; user32.RemovePropA 004085D2 8BC0 MOV EAX,EAX 004085D4 $-FF25 5C779F00 JMP DWORD PTR DS:[<&user32.ScreenToClien>; user32.ScreenToClient 004085DA 8BC0 MOV EAX,EAX 004085DC $-FF25 58779F00 JMP DWORD PTR DS:[<&user32.ScrollWindow>>; user32.ScrollWindow also sollte ich mit folgendem Code hinkommen um mir die Adresse zu suchen:
Delphi-Quellcode:
Greetz
function GetAddy(ModuleName, ProcName:String):Integer;
var MH:Cardinal; begin MH := LoadLibrary(PChar(ModuleName)); result := Integer(GetProcAddress(MH,PChar(ProcName))); FreeLibrary(MH); end; Boombuler |
Re: Importierte API Funktionen erweitern...
Besser GetModuleHandle statt LoadLibrary.
Der angegebene Code funktioniert nur wenn die DLL schon gelagen ist, da sonst FreeLibrary die DLL entlaedt und ein spaeterer Aufruf der Funktion ins Leere geht. |
Re: Importierte API Funktionen erweitern...
Zitat:
|
Re: Importierte API Funktionen erweitern...
Zitat:
Aber noch mal dazu ne kleine Frage am Rande: Sind die Sprungadressen immer gleich oder unterscheiden die sich je nach Windowsstart und oder Windowsversion ? Greetz Boombuler |
Re: Importierte API Funktionen erweitern...
Zitat:
|
Re: Importierte API Funktionen erweitern...
Auch das noch :| habs mir ja schon fast gedacht...
Das verlängert den Asm code ungemein... wo soll ich denn so ne große CodeCave finden ^^ Greetz Boombuler Edit: Hmpf bei meinem Prog ist nicht mal GetProcAddress vorhanden... das wird komisch :( |
Re: Importierte API Funktionen erweitern...
Zitat:
Zitat:
Frag mal Brechi per PN. Ich denke der kann dir das noch besser erklären als ich ;) |
Re: Importierte API Funktionen erweitern...
1) GetProcAddress nachbauen (das ist wirklich nicht viel code)
2) GetProcAddress mit kleinem crc-namecheck nachbauen um original GetProcAddress zu bekommen 3) einfach ( :) ) die nötigen funktionen zu der ImportTabelle hinzufügen 4) sollte GetProcAddress geladen sein dieses benutzen mit CALL[ImportPointer], optional (für dll sollte es gemacht werden) adresse zur reloaction section hinzufügen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz