AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Wie kann man einen Loader programmierern?
Thema durchsuchen
Ansicht
Themen-Optionen

Wie kann man einen Loader programmierern?

Ein Thema von Uncle Cracker · begonnen am 29. Nov 2003 · letzter Beitrag vom 30. Nov 2003
Antwort Antwort
Seite 2 von 2     12   
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#11

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 02:58
Moin UC,

dann nehme doch strings.
Da kannst Du dann ja z.B. die Werte mit #nn angeben, wenn sie nicht darstellbar sind.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#12

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 13:42
Ich weiß nicht wie du das meinst
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#13

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 13:50
Moin UC,

ich meine, dass Du als Buffer einen String nehmen sollst:

Delphi-Quellcode:
var
  sBuffer : string;

begin
  sBuffer := #$75#$19; // ggf. mehr
  WriteProcessMemory(...,...,@sBuffer[1],2,...);
end;
Beim Lesen muss dann nur die Grösse initialisiert werden.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#14

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 15:30
Ich habe das nochmal versucht so zu machen wie du, doch irgendwie will das nicht so richtig.


Ich würde nämlich gern die Datei von diesen Werten:

Code:
000001f0: 00 00 00 00 00 00 00 00 55 50 58 30 00 00 00 00
00000200: 00 60 03 00 00 10 00 00 00 00 00 00 00 04 00 00
00000210: 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 E0
00000220: 55 50 58 31 00 00 00 00 00 00 02 00 00 70 03 00
00000230: 00 F2 01 00 00 04 00 00 00 00 00 00 00 00 00 00
00000240: 00 00 00 00 40 00 00 E0 2E 72 73 72 63 00 00 00
00000250: 00 10 00 00 00 70 05 00 00 0C 00 00 00 F6 01 00

In diese Wert umpatchen:

Code:
000001f0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00000200: 00 D0 00 00 00 10 00 00 00 00 00 00 00 04 00 00
00000210: 00 00 00 00 00 00 00 00 00 00 00 00 80 00 00 C0
00000220: 00 00 00 00 00 00 00 00 00 80 00 00 00 E0 00 00
00000230: 00 74 00 00 00 04 00 00 00 00 00 00 00 00 00 00
00000240: 00 00 00 00 40 00 00 C0 2E 72 73 72 63 00 00 00
00000250: 00 10 00 00 00 60 01 00 00 04 00 00 00 78 00 00

Aber ich bekomme das einfach nicht hin, denn ich will nicht jeden Wert einzeln eintragen.
Kann mir vielleicht jemand dabei helfen, wie das gehen soll?



Danke UC
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.116 Beiträge
 
Delphi 11 Alexandria
 
#15

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 16:09
Moin UC,

dann erklär mir doch mal bitte, wo Du bei meinem, stilisierten, Beispiel das Problem hast statt 2 eine grössere Anzahl anzugeben.
Das versteh' ich nämlich jetzt nicht.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#16

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 17:08
Danke Christian, deine Methode funktioniert doch, hab's Sie nur am Anfang nicht verstanden. Sieht jetzt so aus:

Delphi-Quellcode:
program loader;

uses
  Windows, Messages;

var
  si : Startupinfo;
  pi : Process_Information;
  Bytesread : DWORD;
  Olddata : array[0..1] of byte;
  sBuffer : string;
  

begin
  sBuffer := #$90#$90;
  IF CreateProcess(nil,'Example.exe',nil,nil,FALSE,
           Create_Suspended,nil,nil,si,pi) = true then

  begin
    ReadProcessMemory(pi.hprocess,Pointer($403CEA),@olddata,2,bytesread);
    if (olddata[0] = $75) and (olddata[1] = $19) then
    begin
      WriteProcessMemory(pi.hProcess, Pointer($403CEA), @sBuffer[1], 2, bytesread);
      ResumeThread(pi.hThread);
      CloseHandle(pi.hProcess);
      CloseHandle(PI.hThread);
    end else
    begin
      Messagebox(0,pchar('Bytes not found! Wrong version?...'),pchar('Error'),mb_iconinformation);
      TerminateProcess(PI.hProcess,0);
      CloseHandle(PI.hProcess);
      CloseHandle(PI.hThread);
    end;
  end;


end.

Man könnte das Olddata auch noch in einen String umwandeln, doch dazu habe ich keine Lust
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#17

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 22:41
Was für einen Vorteil hast du jetzt davon? Was tippt man schneller?
$75,$19 oder #$75#$19 ? Dürfte ziemlich gleich ausfallen, oder?
  Mit Zitat antworten Zitat
Benutzerbild von Uncle Cracker
Uncle Cracker

Registriert seit: 30. Mär 2003
Ort: Freital
694 Beiträge
 
#18

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 22:46
Wenn man jedoch mehere Werte ändern will geht das aber schneller
I wish it was legal to marry software because I'm madly in love with Delphi...
  Mit Zitat antworten Zitat
scp

Registriert seit: 31. Okt 2003
1.120 Beiträge
 
Delphi 7 Personal
 
#19

Re: Wie kann man einen Loader programmierern?

  Alt 30. Nov 2003, 22:51
Wieso? Du brauchst bei meinem Beispiel auch nichts anderes ändern ausser den/die Werte, die du ändern willst. Keine arrays festlegen oder ähnliches.

Und wenn du jetzt sagst, das das bei mir komplexer aufgebaut ist, darf ich ich daran erinnen, das du auch mehrere Offsets haben wolltest, was diesen Aufbau nötig macht.
Das BA([ ]) musst du ja auch nur einmal tippen, egal, ob du 2 oder 80 Bytes eintippts.
  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 12:03 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