delphi4arab منتديات دلفي للعرب

نسخة كاملة : Fake Subsystem
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

تغيير قيمة Subsystem ... Smile او اى شىء اخر تابع ل OptionalHeader
من لديه طريقة اخرى ... تفضل بها . :bye1:

بارك الله فيكم اخوانى .
وعليكم السلام ورحمة الله وبركاته
بارك الله لك أخي Hanipino
هناك مكون PEEditor مفتوح المصدر، مرفق نسخة مع مثال.
شكرا اخى kachwahedSmile
السلام عليكم

اطلعت على المكون ولاحضت ان القيم التابعة الى OptionalHeader تخزن دائما فى موقع (offset) ثابت
بالنسبة ل _lfanew التابع ل DosHeader .

مثلا Subsystem تكون دائما على بعد 92 بايت من _lfanew Smile
وعليه يصبح الكود كالتالى

PHP كود :
function Fake_subsystem(Fichier: String): Boolean;
const
  
Offset_Subsystem = 92;
var
  
EnteteDOS: TImageDosHeader;
  
FStream: TFileStream;
begin
  
try
    
FStream := TFileStream.Create(Fichier, $0002);
    try
      
FStream.ReadBuffer(EnteteDOS, SizeOf(EnteteDOS));
      
FStream.Seek(EnteteDOS._lfanew + Offset_Subsystem, soFromBeginning);
      
FStream.WriteBuffer(Subsystem_NewValue, SizeOf(Subsystem_NewValue));
      
Result := True;
    finally
      
FStream.Free;
    
end;
  
except
    Abort
;
    
Result := False;
  
end;
end; 

... هكدا احسن الاتجاه مباشرتا لموقع Subsystem وتغيير قيمته ... بدلا من كتابة كل قيم
OptionalHeader بعد تعديل قيمة Subsystem Sad

بارك الله فيك اخى kachwahed