AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Übersetzung von C nach Delphi - Problem: writeprocessmemory
Thema durchsuchen
Ansicht
Themen-Optionen

Übersetzung von C nach Delphi - Problem: writeprocessmemory

Ein Thema von SaraHx · begonnen am 4. Mai 2007 · letzter Beitrag vom 4. Mai 2007
 
SaraHx

Registriert seit: 4. Mai 2007
11 Beiträge
 
#1

Übersetzung von C nach Delphi - Problem: writeprocessmemory

  Alt 4. Mai 2007, 07:57
Hallo, ich verwende seit einiger Zeit Delphi7 für meine Programmentwicklung.
Da ich mich nun langsam in den Bereich der Speichermanipulation wagen möchte habe ich mir ein Programm (bzw Source) angeschaut,
was einen einfachen Replace im Memory durchführt:

Delphi-Quellcode:
#include <iostream>
#include <windows.h>
#include <tlhelp32.h>
#include <conio.h>

using namespace std;

//original: 241D0851 0F84 20040000 JE client.241D0C77
//patched: 241D0851 E9 21040000 JMP client.241D0C77
//base address: 24000000 + 1D0851
BYTE flash0[6] = { 0x0F, 0x84, 0x20, 0x04, 0x00, 0x00 };
BYTE flash1[5] = { 0xE9, 0x21, 0x04, 0x00, 0x00 };

DWORD mpc;

int main()
{   
   
    cout << "patch ;/" << endl << endl << "> waiting for window" << endl;
   
    HWND hwnd = NULL;
    while(!hwnd)
    {
        hwnd = FindWindow(0, "Windowname");
        Sleep(10);
    }

    
    DWORD dwPID;
    GetWindowThreadProcessId(hwnd,&dwPID);
    cout << "> Window found - Process ID: " << dwPID << endl;

    HANDLE hProcess;
    hProcess = OpenProcess(PROCESS_ALL_ACCESS,TRUE,dwPID);

    cout << "> press any key for patching" << endl;
    getch();
    WriteProcessMemory(hProcess,(void*)(0x24000000 + 0x1D0851),&flash1,5,&mpc);
    cout << "> k" << endl << endl;

    cout << "> press any key for patching it back" << endl << endl;
    getch();
    WriteProcessMemory(hProcess,(void*)(0x24000000 + 0x1D0851),&flash0,6,&mpc);
    
    cout << "> k" << endl << "> press any key to close the patch" << endl;
    getch();
    return 0;
}

Das in C geschriebene Funktioniert soweit einwandfrei doch nun habe ich probiert es in Delphi zu übersetzen:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

const
ori = $0F8420040000;
patched = $E921040000;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var _hwnd:HWND;
processID,lala: DWORD;
Process:THANDLE;

begin
_hwnd := 0;

while (_hwnd = 0) do begin
_hwnd := FindWindow(0, 'Windowname');
Sleep(10); //Bringts eh nicht
end;
GetWindowThreadProcessID(_hwnd,processID);
label1.caption := 'ProcessID: ' + FloatToStr(processID);
Process := OpenProcess(PROCESS_ALL_ACCESS,TRUE,processID);

WriteProcessMemory(Process,ptr($24000000 + $1D0851),@patched,sizeof(patched),lala);
Label2.Caption := FloatToStr(lala);
end;

end.
Mein direktes Problem liegt hier in dem Befehl WriteProcessMemory: Delphi spuckt mir nun folgendes aus: "Variable Required" und setzt mir dabei den Cursor auf den Bereich WriteProcessMemory.

Könnte mir jemand erklären bzw. aufzeigen wie ich diesen Fehler beheben kann bzw wie die Übersetzung von C nach Delphi besser und vor allem funktionierender wär?


lg
Sarah
  Mit Zitat antworten Zitat
 


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