AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi EXE Patchen -- Error: verletzt untere Grenzen
Thema durchsuchen
Ansicht
Themen-Optionen

EXE Patchen -- Error: verletzt untere Grenzen

Ein Thema von hedie · begonnen am 31. Dez 2007 · letzter Beitrag vom 1. Jan 2008
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#11

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 11:08
Zitat von hedie:
Was muss ich dann in meinem Delphi Programm eintragen, ...
Den Ansatz hat Dir SirThornberry gegeben:
Zitat von SirThornberry:
Bei 32bit kann die Speichereadresse auch nur 32bit sein was einem DWORD entspricht. Dementsprechend ist dein Offset-Wert definitiv falsch. Du kannst nicht eine Stelle bei 32bit patchen welche 32bit überschreitet.
Du arbeitest mit Cardinal = 32bit. Du benötigst aber Int64 = 64bit.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#12

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 12:01
Also meinst dz dami, das das hier

Zitat von hedie:

004452A8 |. C605 24214B00 01 MOV BYTE PTR DS:[4B2124],1

Das blaue, soll nach dem Programm aufruf in Adresse 004452A8 stehen.
64 Bit Programm Code ist?

Wenn ja, stimmt nicht. Ich habe 32 Bit Windows und das Programm is auch 32 Bit

Noch ne andere Frage... es bestünde auch die Möglichkeit die stelle einfach zu Noopen (also mit NOP's zu füllen)

Dazu müsste ich AB! Adresse 004452A8 7 NOP's einfügen...

Ich hab das mal so versucht

Delphi-Quellcode:
    dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8);
    UpdateOffset(lpBuffer, dwFileOffset, $90909090);


    //LoadFile(opendialog1.FileName, lpBuffer, dwFileSize);
    dwFileOffset := RvaToFileOffset(lpBuffer, $004452AC);
    UpdateOffset(lpBuffer, dwFileOffset , $909090);
Ich dachte mir, anstelle alles kompliziert in einem schritt einzutragen, mache ich das einfach hintereinander

Wenn ich den code schlussendlich ausführe, werden zwar die NOP's eingetragen ABER!

a) nur 5 stat 7
b) der unetere Code wird entfernt also alles ab der einfüge Adresse verschwindet... was bei OllyDBG nicht der fall ist

Ich bin echt ratlos...
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#13

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 13:04
Ich merke gerade, SirThornberry's Einwurf war nicht ganz korrekt. Die Speicheradresse ist DWord nur der Wert eben nicht.

Zitat von hedie:
64 Bit Programm Code ist?
Nein, der bleibt bei 32bit. Es ging um den Datentyp.

Zitat von hedie:
Delphi-Quellcode:
procedure UpdateOffset(var lpBuffer: Pointer; dwFileOffset: Cardinal; Value: DWORD); overload;
begin
  PDWORD(Cardinal(lpBuffer) + dwFileOffset)^ := Value;
end;
UpdateOffset(lpBuffer, dwFileOffset, $01004B212405C6);
Deine Procedure nimmt maximal DWord, Du übergibst aber Int64.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#14

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 13:27
Also muss ich die Procedure für Int64 abändern richtig?

Würde das so funktionieren?

Delphi-Quellcode:
procedure UpdateOffset(var lpBuffer: Pointer; dwFileOffset: Cardinal; Value: Int64); overload;
begin
  PDWORD(Cardinal(lpBuffer) + dwFileOffset)^ := Value;
end;
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#15

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 13:30
Du musst dann aber entsprechend nach PInt64 statt nach PDWORD casten.
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#16

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 13:31
Ooops stimmt

also so??

Delphi-Quellcode:
procedure UpdateOffset(var lpBuffer: Pointer; dwFileOffset: Cardinal; Value: Int64); overload;
begin
  PInt64(Cardinal(lpBuffer) + dwFileOffset)^ := Value;
end;
/////////////Edit

Ich hab den code mal an die anderen Proceduren angehängt (also unten drunter)

Danach habe ich mit diesem Code eingelesen

Delphi-Quellcode:
    dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8); // Adresse einlesen
      UpdateOffset(lpBuffer, dwFileOffset, $01004B212405C6); // Neues Offset
Jedoch hat es nur teilweise geklappt:

Die bytes wurden richtig eingetragen sprich an der richtigen stelle
aber es hat sonst irgendwas verschoben...

Aber seht selbst

Oben im bild vorher unten nachher

Es sollte ja nur die zeile bei adresse 004452A8 updaten, statdessen hat es sonst was gemacht

ich hoffe ihr seht den fehler den ich gemacht habe...
Miniaturansicht angehängter Grafiken
olly_679.jpg  
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#17

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 14:19
Dieses Bild und das aus dem ersten Beitrag zeigen dasselbe!?
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#18

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 14:20
Ja grunsätzlich schon

aber diesmal hab ich es noch n bisschen besser markiert....

Aber ich kann mir nicht erklären wo der fehler liegt...

Habt ihr ne idee?
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.335 Beiträge
 
Delphi XE5 Professional
 
#19

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 14:47


Jetzt ist es Int64 = 64bit = 8 Byte

Zitat von hedie:
Delphi-Quellcode:
    dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8); // Adresse einlesen
      UpdateOffset(lpBuffer, dwFileOffset, $01004B212405C6); // Neues Offset


01 00 4B 21 24 05 C6 - Das sind nur 7 Byte. Eventuell aufteilen in 4, 2 und 1 Byte?
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
hedie

Registriert seit: 12. Dez 2005
Ort: Schweiz
1.024 Beiträge
 
Delphi XE6 Starter
 
#20

Re: EXE Patchen -- Error: verletzt untere Grenzen

  Alt 1. Jan 2008, 14:51
Ich weiss nicht wie ich das aufteilen soll....

Bin in diesem gebiet noch totaler anfänger

Oder wird so aufgeteilt?

Delphi-Quellcode:
   dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8);
      UpdateOffset(lpBuffer, dwFileOffset, $C6);

dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8);
      UpdateOffset(lpBuffer, dwFileOffset, $2405);

dwFileOffset := RvaToFileOffset(lpBuffer, $004452A8);
      UpdateOffset(lpBuffer, dwFileOffset, $01004B21);
Claudio
Tu was du nicht lassen kannst
- http://endasmedia.ch
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 23:28 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