AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Patcher

Ein Thema von N47R0N · begonnen am 17. Sep 2005 · letzter Beitrag vom 17. Sep 2005
Antwort Antwort
Seite 3 von 3     123   
Phistev
(Gast)

n/a Beiträge
 
#21

Re: Patcher

  Alt 17. Sep 2005, 23:11
Step doch mal durch dein Programm, um festzustellen, ob alles auch ausgeführt wird, welche Werte die Variablen haben...
  Mit Zitat antworten Zitat
N47R0N

Registriert seit: 26. Mai 2005
117 Beiträge
 
#22

Re: Patcher

  Alt 17. Sep 2005, 23:22
das hab ich jetzt nicht so richtig verstanden die adressen in meinem Programm sind richtig
  Mit Zitat antworten Zitat
Phistev
(Gast)

n/a Beiträge
 
#23

Re: Patcher

  Alt 17. Sep 2005, 23:24
Es geht nicht nur um die Adressen. Wenn die Größe nicht stimmt, kann's schon ein Problem geben usw.
  Mit Zitat antworten Zitat
N47R0N

Registriert seit: 26. Mai 2005
117 Beiträge
 
#24

Re: Patcher

  Alt 17. Sep 2005, 23:31
ich habe die anfrage über die größe entfernt und es nochmal gemacht funkt immer noch nicht
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#25

Re: Patcher

  Alt 17. Sep 2005, 23:33
Delphi-Quellcode:
program Patch;

{$APPTYPE CONSOLE}

uses
  Windows;

procedure PatchOffset(Handle: Cardinal; Offset: LongInt; NewCode: LongInt);
var
  Buffer: Pointer;
  FileSizeA: Cardinal;
begin
  FileSizeA := GetFileSize(Handle, nil);
  Buffer := Pointer(LocalAlloc(0, FileSizeA));
  _lread(Handle, Buffer, FileSizeA);
  _llseek(Handle, 0, FILE_BEGIN);
  PByte(Cardinal(Buffer) + Offset)^ := NewCode;
  _lwrite(Handle, Buffer, FileSizeA);
end;

var
  h: Cardinal;
begin
  h := _lopen(PChar(ParamStr(1)), OF_READWRITE);
  if h <> INVALID_HANDLE_VALUE then
  begin
    PatchOffset(h, $1, $90);
  end;
  _lclose(h);
end.
  Mit Zitat antworten Zitat
N47R0N

Registriert seit: 26. Mai 2005
117 Beiträge
 
#26

Re: Patcher

  Alt 17. Sep 2005, 23:41
kannste das ma ein bischen komentieren bin noch neu
  Mit Zitat antworten Zitat
Benutzerbild von ErazerZ
ErazerZ

Registriert seit: 27. Mai 2005
Ort: Baden
315 Beiträge
 
Delphi 2007 Enterprise
 
#27

Re: Patcher

  Alt 17. Sep 2005, 23:47
Zitat von ErazerZ:
Delphi-Quellcode:
program Patch;

{$APPTYPE CONSOLE}

uses
  Windows; // brauchst nur windows unit wegen den winapi's

// handle = handle des modules, offset = welchen offset es patchen sollte, newcode = der neue code in integer, eg. jle = 0F8E
procedure PatchOffset(Handle: Cardinal; Offset: LongInt; NewCode: LongInt);
var
  Buffer: Pointer; // .. der zeiger zu den daten
  FileSizeA: Cardinal; // hier wird die dateigröße gespeichert
begin
  FileSizeA := GetFileSize(Handle, nil); // dateigröße auslesen ..
  Buffer := Pointer(LocalAlloc(0, FileSizeA)); // speicher reservieren oder wie auch immer
  _lread(Handle, Buffer, FileSizeA); // auslesen
  _llseek(Handle, 0, FILE_BEGIN); // den zeiger auf den offset setzen ..
  PByte(Cardinal(Buffer) + Offset)^ := NewCode; // den offset patchen in der memory
  _lwrite(Handle, Buffer, FileSizeA); // den geänderten speicher schreiben ..
end;

var
  h: Cardinal; // hier speichert man den dateihandle
begin
  h := _lopen(PChar(ParamStr(1)), OF_READWRITE); // datei öffnen (paramstr(1) = c:\bla\bla.exe <paramstr1>)
  if h <> INVALID_HANDLE_VALUE then // wenn handle nicht ungültig ist ..
  begin
    PatchOffset(h, $1, $90); // patche module h, beim offset 1, mit nem nop
  end;
  _lclose(h); // module schließen ..
end. // ende ..
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 17:39 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