AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WriteProcessMemory schreibt nicht :(
Thema durchsuchen
Ansicht
Themen-Optionen

WriteProcessMemory schreibt nicht :(

Ein Thema von T3rm1n4T0r · begonnen am 7. Feb 2006 · letzter Beitrag vom 7. Feb 2006
Antwort Antwort
T3rm1n4T0r

Registriert seit: 10. Sep 2004
38 Beiträge
 
Turbo Delphi für Win32
 
#1

WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 13:36
Hi,
ich verwende ich meinem aktuellen Programm WriteProcessMemory. Nur leider funktioniert dies nicht. Es wird einfach nichts geschrieben. Die Anzahl der geschriebenen Bytes ist 0 und auch der Wert (wenn ich ihn danach mit ReadProcessMemory lese) derselbe.
Hier mal mein Source

Vielleicht weiß ja jemand was da los ist.

Gruß T3rm1
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#2

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 14:03
vermutlich ist der Memory-Bereich Read-Only...
siehe MSDN-Library durchsuchenVirtualProtectEx
  Mit Zitat antworten Zitat
T3rm1n4T0r

Registriert seit: 10. Sep 2004
38 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 14:26
Könnte sein. Wie kann ich denn die Rechte ändern?
Hab das so probiert:
tmp := VirtualProtectEx(pi.hProcess,Ptr(baseaddress),1,PAGE_EXECUTE_READWRITE,ptr(oldaccess)); Aber die Funktion schlägt immer fehl. Oldaccess ist dabei ein cardinal.

Edit: Hab jetzt mal versucht bei irgendeinem Programm, dass ich mal erstellt habe im Speicher zu schreiben und auch da funktioniert es nicht.
Es muss also an irgendwas anderem liegen :/
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#4

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 14:53
vermutlich liegt es am Ptr vor baseaddress... das API erwartet dort die Adresse in Form eines Pointers, nicht einen Pointer auf die Adresse..... versuchs mal mit Pointer(baseaddress).... dasselbe übrigens auch bei den Aufrufen von WriteProcessMemory.....
  Mit Zitat antworten Zitat
T3rm1n4T0r

Registriert seit: 10. Sep 2004
38 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 15:00
oO
ptr = pointer
Außerdem kann ich damit genau den Wert auslesen der da steht. Nur nicht schreiben.
  Mit Zitat antworten Zitat
Basilikum

Registriert seit: 9. Aug 2003
389 Beiträge
 
Delphi 7 Professional
 
#6

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 15:05
Zitat von T3rm1n4T0r:
oO
ptr = pointer
Außerdem kann ich damit genau den Wert auslesen der da steht. Nur nicht schreiben.
oke... möglich... ich hatte hier noch die Function Ptr() aus Turbo Pascal im Kopf, die die Adresse der Variable zurückgegeben hat (was in diesem Fall ja nicht erwünscht wäre)...

führe mal nach dem WriteProcessMemory ein RaiseLastOSError() aus... welcher Fehler tritt auf ?
  Mit Zitat antworten Zitat
brechi

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

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 15:09
Der Fehler ist, dass du ein

@origByte brauchst und kein ptr(origByte)
  Mit Zitat antworten Zitat
T3rm1n4T0r

Registriert seit: 10. Sep 2004
38 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 15:37
Ok, geht, danke!
  Mit Zitat antworten Zitat
jbg

Registriert seit: 12. Jun 2002
3.481 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: WriteProcessMemory schreibt nicht :(

  Alt 7. Feb 2006, 17:43
Zitat von Basilikum:
ich hatte hier noch die Function Ptr() aus Turbo Pascal im Kopf, die die Adresse der Variable zurückgegeben hat
Nur liefert Ptr nicht die Adresse der Variable in TurboPascal, sondern konstruiert einen Zeiger aus Segment und Offset: Ptr(Seg, Offset). Die Addr(variable/proc) Funktion, die es auch noch unter Delphi gibt, liefer genau wie @variable/proc die Adresse.
  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 08:56 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