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
Seite 2 von 2     12   
Benutzerbild von himitsu
himitsu
Online

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

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 15:17
Alloc = reservieren
Query = Infos abfragen
Protect = Zugriff anpassen
...
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Xerogon

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

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 15: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
 
#13

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 15: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
 
#14

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 15: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
Benutzerbild von Neutral General
Neutral General

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

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 15:38
Hallo,

Also davon ausgegangen, dass dieses Programm die DLL richtig in den fremden Prozess lädt.... hab ich keine Ahnung.

Aber per Inline-Assembler würde es wahrscheinlich auch einfach so gehen:
Delphi-Quellcode:
procedure HackMe; stdcall;
asm
  mov word [$0046A4A8], $07EB
  mov word [$0046A589], $07EB
end;
Ich weiß halt nicht, ob man in dem Prozess standardmäßig diese Pages beschreiben kann.
Ggf musst du halt noch MSDN-Library durchsuchenVirtualProtect benutzen. Ansonsten wüsste ich nicht woran es noch liegen könnte.
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
 
#16

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 16. Mai 2011, 19:41
Problem gelöst

Wenn jemand die Lösung braucht:
Delphi-Quellcode:

library testdll;

uses
  SysUtils,
  Windows,
  Classes;

VAR
    dwOldDestProt: DWord = 0; // Alter Protected Mode
    Data: Array[0..1] of Byte; // Zu schreibende Opcodes

{$R *.res}

Procedure MemSet; stdcall;
begin
  Data[0] := $EB;
  Data[1] := $07;


  // Protected Mode umstellen und alten Sichern
  VirtualProtect(Ptr($0046A4A8), SizeOf(Byte)*2, PAGE_EXECUTE_READWRITE, @dwOldDestProt);
  CopyMemory(Ptr($0046A4A8), @Data, SizeOf(Byte)*2);

  // Alten Modus wiederherstellen
  VirtualProtect(Ptr($0046A4A8), SizeOf(Byte)*2, dwOldDestProt, nil);


end;

exports MemSet;

begin
  MemSet;
end.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#17

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 17. Mai 2011, 02:09
Ganz generell vielleicht noch zum "Memory Hacking". Hier zwar nicht so wichtig, weil der Code direkt in der EXE liegt, aber wenn du mal eine Anwendung hast, die DLLs nachläd und du in diese DLLs schreiben willst, dann immer relative Adressen der Form:

ImageBase + Offset

verwenden. Achso und wenn du wirklich nur einzelne Opcodes ändern willst, ist anstelle von CopyMemory der direkte Zugriff ganz hilfreich:

Delphi-Quellcode:
if VirtualProtect(Pointer($0046A4A8), 2, PAGE_EXECUTE_READWRITE, @dwOldDestProtect) then
try
  PByte($0046A4A8 + $00)^ := $EB;
  PByte($0046A4A8 + $01)^ := $07;
finally
  VirtualProtect(Pointer($0046A4A8), 2, dwOldDestProtect, nil);
end;
Dann musst du nicht groß mit Arrays rumbasteln und kannst bei eigenen Records sogar ganze Datenstrukturen bequem schreiben. Ich hatte vor einiger Zeit mal ein kleines Tutorial zum Thema verfasst:
http://opcodez.wordpress.com/2010/09...king-teil-1-5/
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Xerogon

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

AW: [DLL Injection] Code in fremden Prozess einschleusen

  Alt 17. Mai 2011, 06:54
Danke, das Tutorial werde ich mir mal durchlesen
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


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