AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Importierte API Funktionen erweitern...

Importierte API Funktionen erweitern...

Ein Thema von Boombuler · begonnen am 9. Aug 2005 · letzter Beitrag vom 11. Aug 2005
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#1

Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 12:33
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
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#2

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 13:06
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.
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 14:12
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
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 14:30
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.
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#5

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 14:52
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
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#6

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 14:55
Zitat von Olli:
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
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#7

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 15:54
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
  Mit Zitat antworten Zitat
Benutzerbild von Boombuler
Boombuler

Registriert seit: 14. Mär 2003
Ort: Osnabrück
244 Beiträge
 
Delphi 2009 Professional
 
#8

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 16:05
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
"Look at you, Hacker. A pathetic creature of meat and bone, panting and sweating as you run through my corridors. How can you challenge a perfect, immortal machine?"
SwapIt Highscore:
  Mit Zitat antworten Zitat
Olli
(Gast)

n/a Beiträge
 
#9

Re: Importierte API Funktionen erweitern...

  Alt 9. Aug 2005, 16:59
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

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
  Mit Zitat antworten Zitat
brechi

Registriert seit: 30. Jan 2004
823 Beiträge
 
#10

Re: Importierte API Funktionen erweitern...

  Alt 10. Aug 2005, 14:57
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.
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