AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) [DLL Injection] Code in fremden Prozess einschleusen
Thema durchsuchen
Ansicht
Themen-Optionen

[DLL Injection] Code in fremden Prozess einschleusen

Ein Thema von Xerogon · begonnen am 16. Mai 2011 · letzter Beitrag vom 17. Mai 2011
Antwort Antwort
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:04
Hallo,

Sicher dass das VirtualAlloc nötig/richtig ist?
Ich gehe ja mal davon aus, dass du einen vorhandenen (!) Speicherbereich überschreiben willst.
VirtualAlloc reserviert aber NEUEN Speicher.

Wenn an der Stelle die du bei VirtualAlloc angibst schon Speicher reserviert ist, passiert folgendes:

Zitat:
lpAddress
The starting address of the region to allocate. If the memory is being reserved, the specified address is rounded down to the nearest multiple of the allocation granularity. If the memory is already reserved and is being committed, the address is rounded down to the next page boundary. To determine the size of a page and the allocation granularity on the host computer, use the GetSystemInfo function. If this parameter is NULL, the system determines where to allocate the region.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Xerogon

Registriert seit: 28. Jan 2010
27 Beiträge
 
#2

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:07
Zitat:
Es könnte auch der Verdacht aufkommen, daß das Gewünschte nicht immer an der selben Stelle/Adresse rumgammelt.
Das gammelt immer an der Stelle. Hab ich schon untersucht

Hallo,

Sicher dass das VirtualAlloc nötig/richtig ist?
Ich gehe ja mal davon aus, dass du einen vorhandenen (!) Speicherbereich überschreiben willst.
VirtualAlloc reserviert aber NEUEN Speicher.

Wenn an der Stelle die du bei VirtualAlloc angibst schon Speicher reserviert ist, passiert folgendes:

Zitat:
lpAddress
The starting address of the region to allocate. If the memory is being reserved, the specified address is rounded down to the nearest multiple of the allocation granularity. If the memory is already reserved and is being committed, the address is rounded down to the next page boundary. To determine the size of a page and the allocation granularity on the host computer, use the GetSystemInfo function. If this parameter is NULL, the system determines where to allocate the region.
Ok, ich probiere es mal.
  Mit Zitat antworten Zitat
Xerogon

Registriert seit: 28. Jan 2010
27 Beiträge
 
#3

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:09
[QUOTE=Xerogon;1101111]
Zitat:
Es könnte auch der Verdacht aufkommen, daß das Gewünschte nicht immer an der selben Stelle/Adresse rumgammelt.
Das gammelt immer an der Stelle. Hab ich schon untersucht

Hallo,

Sicher dass das VirtualAlloc nötig/richtig ist?
Ich gehe ja mal davon aus, dass du einen vorhandenen (!) Speicherbereich überschreiben willst.
VirtualAlloc reserviert aber NEUEN Speicher.

Wenn an der Stelle die du bei VirtualAlloc angibst schon Speicher reserviert ist, passiert folgendes:

Zitat:
lpAddress
The starting address of the region to allocate. If the memory is being reserved, the specified address is rounded down to the nearest multiple of the allocation granularity. If the memory is already reserved and is being committed, the address is rounded down to the next page boundary. To determine the size of a page and the allocation granularity on the host computer, use the GetSystemInfo function. If this parameter is NULL, the system determines where to allocate the region.
Ok, ich probiere es mal.

Edit: Nein, geht nicht. jetzt habe ich eine Zugriffsverletzung in der DLL
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.396 Beiträge
 
Delphi 12 Athens
 
#4

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:11
Auf kurz und noch weiter gekürtzt, heißt die Antwort von Neutral General, soviel wie
Delphi-Quellcode:
Procedure HackMe; stdcall;
begin
  // Speicher umschreiben
  PWord($0046A4A8)^ := $EB07;
  PWord($0046A589)^ := $EB07;
end;
oder $07EB;


Zitat:
Nein, geht nicht. jetzt habe ich eine Zugriffsverletzung in der DLL
Kann es sein, daß die Zugriffsrechte nicht passen?
Schreibrechte würde man schon für sowas benötigen und diese Rechte ändert man nicht über VirtualAlloc.
VirtualAlloc = neuen virtuellen Speicher resservieren, aber wenn man mal bei MSDN-Library durchsuchenVirtualAlloc ins MSDN guckt und da weiterklickt, dann landet man bei MSDN-Library durchsuchenVirtualProtect
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (16. Mai 2011 um 14:14 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:14
@himitsu: Ich glaube es müsste $07EB sein.. Ist aber immer verwirrend

Wenn das wirklich alles ist, dann würde ich mir den ganzen Mist mit der DLL-Injection sparen und einfach MSDN-Library durchsuchenWriteProcessMemory benutzen

Edit: Ergänzung zu himitsus Beitrag: Rechte ändert man mit MSDN-Library durchsuchenVirtualQuery(Ex) MSDN-Library durchsuchenVirtualProtect
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (16. Mai 2011 um 14:19 Uhr)
  Mit Zitat antworten Zitat
Xerogon

Registriert seit: 28. Jan 2010
27 Beiträge
 
#6

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:16
Ja, Daten aus einer Anwendung mit WriteProcessMemory umschreiben kann ich. Es sollte nur mal als Übung dienen.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.396 Beiträge
 
Delphi 12 Athens
 
#7

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:17
Alloc = reservieren
Query = Infos abfragen
Protect = Zugriff anpassen
...
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Xerogon

Registriert seit: 28. Jan 2010
27 Beiträge
 
#8

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:23
So, mal schnell als Win32 Anwendung gemacht. Da geht alles

Delphi-Quellcode:
var
  Form1: TForm1;
  ThreadID, ProcessID: Integer;
  WindowHandle: THandle;
  wnd: HWnd;
  write: Cardinal;
  Data: Array[0..1] of Byte;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin;

end;
procedure TForm1.Button1Click(Sender: TObject);
begin

  Data[0] := $EB;
  Data[1] := $07;

  wnd := FindWindow(nil, PChar('Ferby-Speed'));
  ThreadID := GetWindowThreadProcessID(wnd, @ProcessID);
  WindowHandle := Openprocess(PROCESS_ALL_ACCESS, false, processID);

  WriteProcessMemory(WindowHandle, Ptr($0046A4A8), @Data, SizeOf(Date), write);
  CloseHandle(WindowHandle);
end;
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:30
Wie kommt denn die DLL in den fremden Prozess?
Kannst du mal etwas Code zeigen?

PS: WindowHandle ist in deinem Beispiel kein guter Variablen-Name. Dein "WindowHandle" ist ein Prozess-Handle
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Xerogon

Registriert seit: 28. Jan 2010
27 Beiträge
 
#10

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 14:32
Ich benutze den Injector "Winject". http://www.cheat-project.com/cheats-...2/WinJect-1.7/

Mit dem Var Name: Das Programm habe ich auf die Schnelle gemacht.
Da Achte ich nicht auf Bezeichnungen.
  Mit Zitat antworten Zitat
Antwort Antwort


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 07:52 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