Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Importierte API Funktionen erweitern... (https://www.delphipraxis.net/51260-importierte-api-funktionen-erweitern.html)

Boombuler 9. Aug 2005 11:33


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

Olli 9. Aug 2005 12:06

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.

Boombuler 9. Aug 2005 13:12

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:
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
Und an den entsprechenden Speicherstellen auf die die Pointer zeigen steht der gleiche wert drin den mir GetProcAddress liefert...

also sollte ich mit folgendem Code hinkommen um mir die Adresse zu suchen:
Delphi-Quellcode:
function GetAddy(ModuleName, ProcName:String):Integer;
var MH:Cardinal;
begin
  MH := LoadLibrary(PChar(ModuleName));
  result := Integer(GetProcAddress(MH,PChar(ProcName)));
  FreeLibrary(MH);
end;
Greetz
Boombuler

Robert Marquardt 9. Aug 2005 13:30

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.

Olli 9. Aug 2005 13:52

Re: Importierte API Funktionen erweitern...
 
Zitat:

Zitat von Boombuler
Delphi bastelt sich so ne art referenz tabelle die ca so aus sieht in ASM:

Ist nichts delphispezifisches. Müßtest du doch aber eigentlich wissen, wenn du mit Assembler rumspielst ;)

Boombuler 9. Aug 2005 13:55

Re: Importierte API Funktionen erweitern...
 
Zitat:

Zitat von Olli
Zitat:

Zitat von Boombuler
Delphi bastelt sich so ne art referenz tabelle die ca so aus sieht in ASM:

Ist nichts delphispezifisches. Müßtest du doch aber eigentlich wissen, wenn du mit Assembler rumspielst ;)

Kommt deswegen weil ich mir das heute erst angesehn hab selber mal API aufrufe zu erstellen die vorher nicht da waren sonst hab ich mir immer einen gesucht der schon da war ^^

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

Olli 9. Aug 2005 14:54

Re: Importierte API Funktionen erweitern...
 
Zitat:

Zitat von Boombuler
Sind die Sprungadressen immer gleich oder unterscheiden die sich je nach Windowsstart und oder Windowsversion ?

Du meinst die der Funktionen einer DLL? Die sind fast immer verschieden. Mit hardcoden ist da nix ;)

Boombuler 9. Aug 2005 15:05

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 :(

Olli 9. Aug 2005 15:59

Re: Importierte API Funktionen erweitern...
 
Zitat:

Zitat von Boombuler
Das verlängert den Asm code ungemein... wo soll ich denn so ne große CodeCave finden ^^

Hängst du halt eine Section an :lol:

Zitat:

Zitat von Boombuler
Hmpf bei meinem Prog ist nicht mal GetProcAddress vorhanden... das wird komisch :(

Weshalb? Ist in 100 Byte erledigt, denke ich mal.
Frag mal Brechi per PN. Ich denke der kann dir das noch besser erklären als ich ;)

brechi 10. Aug 2005 13:57

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 03:34 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz