5 Haziran 2016 Pazar

How to replace byte(s) in file via Delphi - Delphi ile dosya hex içeriğini değiştirme



Delphi üzerinden dosya içindeki istediğimiz Offset aralığındaki (adresler arası) byte değişikiliği nasıl yapıp kaydederiz sorusuna yanıt bulmaya çalışıyoruz.



Resimde bir hex editörü ile açılmış Project4.exe dosyasının 0x1c8f4c adresinden başlamak üzere ilk 12 byte içeriğini unicode olarak kodlanmış olan emarti yazısının yine unicode olarak kodlamak üzere ###### string dizisine yada 0x23 0x00 olmak üzere 6 unicode karakterine dönüşmüş halini görmektesiniz.

Örnekteki proje4.exe uygulamasına tanımlı button.onclick event içeriğine ShowMessage ile 'Merhaba emarti' yazdırmıştım ama bunu 'Merhaba ######' haline derlemeden nasıl çeviririz onu dosya içinden byte değişikliği yaparak görelim.








Kendi belirlediğiniz herhangi dosyanın değiştirilmesini istediğiniz adreslerdeki byte'ları tespit etmek için hex editörü ile açınız. Ben google araştırması ile şu linkteki editörü kullandım. Link: http://frhed.sourceforge.net/ 

Şimdi projemizi oluşturmak için aşağıdakine benzer bir VCL form ve nesnelerini oluşturun.


Kodumuza ait unit ve açıklamaları aşağıdadır.

unit Unit4; interface uses Winapi.Windows, Winapi.Messages, 
System.SysUtils, System.Variants, 
System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, 
Vcl.Dialogs, Vcl.StdCtrls; type TForm4 = class(TForm) OpenDialog1: TOpenDialog; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; implementation {$R *.dfm} procedure TForm4.Button1Click(Sender: TObject); const Buff: array [1..12] of byte = (35,0,35,0,35,0,35,0,35,0,35,0); var fs: TFileStream; AFileName: string; begin if OpenDialog1.Execute then begin AFileName:= OpenDialog1.FileName; fs := TFileStream.Create(AFileName, fmOpenWrite); try fs.Position := $1c8f4c; fs.Write(Buff, Length(Buff)); finally fs.Free; end; end; end; end.


Buff byte dizisi ilgili dosyanın Stream posizyonu olan offset karşılığına yerleştirilir.

1 yorum:

  1. The most popular games from popular casino games from - DrmCD
    The most 안동 출장안마 popular games from popular 광주광역 출장마사지 casino games from popular casino games from popular casino games from popular casino 울산광역 출장샵 games from popular casino games from popular casino 광주 출장마사지 games 청주 출장샵 from

    YanıtlaSil