كيف عن قيمة هيكس في ملف bin ثم استبدالها ؟
#1
السلام عليكم
عندي ملف اريد ان ابحث  داخله عن قيمة معية هي بالهكس مثلا: BF0300E0008C
بعد ايجادها اريد تحديد الاوفسات الخاص بها وتغييرها بقيمة اخرى
بحثت سابقا  كثيرا ولم اجد حلا الى الان
ان شاء الله اجد حلا هنا
وشكرا لكم
الرد
#2
(08-05-2016, 09:46 PM)salah07230 كتب : السلام عليكم
عندي ملف اريد ان ابحث  داخله عن قيمة معية هي بالهكس مثلا: BF0300E0008C
بعد ايجادها اريد تحديد الاوفسات الخاص بها وتغييرها بقيمة اخرى
بحثت سابقا  كثيرا ولم اجد حلا الى الان
ان شاء الله اجد حلا هنا
وشكرا لكم



تفضل اخى على باضافة مكون MPHexEditor1 فى المشروع

كود :
procedure TForm1.Button1Click(Sender: TObject); begin If OpenDialog1.Execute then begin caption := ExtractFileName(OpenDialog1.FileName); MPHexEditor1.LoadFromFile(OpenDialog1.FileName); MPHexEditor1.SelStart := 259477 ; MPHexEditor1.SelEnd   := 259504 ; EDit1.text := MPHexEditor1.SelectionAsText ; end; end; procedure TForm1.Button2Click(Sender: TObject); begin MPHexEditor1.SelStart := 259477 ; MPHexEditor1.SelEnd   := 259504 ; MPHexEditor1.SelectionAsText := EDit1.Text ; MPHexEditor1.SaveToFile(OpenDialog1.FileName); Showmessage('Save Ok !'); end;
الرد
#3
مشكور اخي محمد على ردك
وحشتني كثير
ان شاء الله تكون بالف خير وعافية
تحياتي لك
جاري التجريب
[-] كل من 1 user says قال شكرا ل salah07230 على المشاركة المفيدة
  • sathex
الرد
#4
تفضل اخى

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, ComCtrls, XPMan;
type a = array [0..1000000] of char;
type
TForm1 = class(TForm)
Button1: TButton;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
Edit3: TEdit;
Timer1: TTimer;
ProgressBar1: TProgressBar;
Edit1: TEdit;
Button3: TButton;
Button2: TButton;
Edit2: TEdit;
XPManifest1: TXPManifest;
Label1: TLabel;
Label2: TLabel;
StatusBar1: TStatusBar;
procedure Button1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);

private
{ Private declarations }
public
f:file of a;
s:file of a;
d: a;

{ Public declarations }
end;

var
Form1: TForm1;

implementation

uses Unit2;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
i : integer ;
begin
if OpenDialog1.Execute then
begin
Button1.Enabled:=false;
Button3.Enabled := True;
Edit1.Text := Edit1.Text + ' ' + ExtractFileName(OpenDialog1.FileName);
AssignFile (f, OpenDialog1.FileName);
reset(f);
Read(f, d);
for i := 0 to 15 do
begin
Edit3.Text := Edit3.Text + IntToHex(Ord(d[I]),2);
end;
end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
progressbar1.Position := 0;
caption := caption[Length(caption)] + Copy(caption, 1,Length(caption) - 1);
end;
procedure TForm1.Button3Click(Sender: TObject);
var sTemp,fTemp,aTemp,bTemp,cTemp,dTemp : string;
var soft,soft1,soft2,soft3,soft4,soft5: char;
begin
if Edit1.Text='File Name' then
MessageBeep($00000040);
Messagedlg('Ok Ali Extractor File',mtInformation,[mbOk],0);


sTemp:=edit3.Text;


if length(sTemp)<>32 then
begin
MessageDlg('Invalid Key', mtError,[mbOk], 0);
exit;
end;



begin
copyFile(pchar(opendialog1.filename),pchar(opendialog1.filename + '.BAK'),true);
AssignFile (F, OpenDialog1.FileName);
reset(f);
soft:=chr(strtoint('$' + copy(sTemp,1,2)));
d[4]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,3,2)));
d[5]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,5,2)));
d[6]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,7,2)));
d[7]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,9,2)));
d[8]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,11,2)));
d[9]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,13,2)));
d[10]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,15,2)));
d[11]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,17,2)));
d[12]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,19,2)));
d[13]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,21,2)));
d[14]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,23,2)));
d[15]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,25,2)));
d[16]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,27,2)));
d[17]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,29,2)));
d[18]:=soft;
soft:=chr(strtoint('$' + copy(sTemp,31,2)));
d[19]:=soft;
if length(fTemp)<>32 then
begin

Write(f,d);
CloseFile(f);
Edit1.Text:='File Name';
begin


end;
//end;
//end;
//end;
//end;
//end;
begin
timer1.Enabled := True;
progressbar1.Position := progressbar1.Position + 100 ;

end;
if progressbar1.Position = progressbar1.Max then
begin
timer1.Enabled := True;
end;

end;


end;

Button1.Enabled:=true;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;

end.
[-] كل من 1 user says قال شكرا ل محمدعلى على المشاركة المفيدة
  • sathex
الرد
#5
مشكور اخي محمد اتعبتك معي ساحاول التعديل على المثال الاول
[-] كل من 1 user says قال شكرا ل salah07230 على المشاركة المفيدة
  • sathex
الرد
#6
تفضل اخى الملف


الملفات المرفقة
.rar   HEX_Search_Replace_Delphi_Example.rar (الحجم : 3.48 ك ب / التحميلات : 25)
[-] كل من 1 user says قال شكرا ل محمدعلى على المشاركة المفيدة
  • sathex
الرد
#7
مشكور اخي محمد وبارك الله فيك
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم