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


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:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz