[تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به
#16
العملية تتم على مرحلتين الاولى اضافة CRC الى نهاية البرنامج و هذا يتم بواسطة برنامج خارجي...

كود :
uses idHashcrc; procedure AddCrc(); const Rec_SIZE  = SizeOf(UInt32); var   FS:TStream;   idCrc:TIdHashCRC32;   C:UInt32;   ExeFile:string; begin   if not PromptForFilename(ExeFile,'Applications |*.exe') then       Exit;   FS := TFileStream.Create(ExeFile, fmOpenReadWrite);   try       FS.Position := FS.Size - Rec_SIZE * 2;       if (FS.Read(C,Rec_SIZE) = Rec_SIZE) and (C = FS.Size) then // previously done         FS.Size :=  FS.Size - Rec_SIZE * 2; // trunc crc slot     FS.Position := FS.Size;     C := FS.Size + Rec_SIZE * 2;     FS.Writebuffer(C, Rec_SIZE);     FS.Position := 0;     idCrc:=TIdHashCRC32.Create;     C := StrToInt('$'+ idCrc.HashStreamAsHex(FS));     idCrc.Free;     C := C xor $FFFFFFFF;     FS.Writebuffer(C,Rec_SIZE);// add crc     Showmessage('Done');   finally     FS.Free;   end; end;

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

كود :
uses idHashcrc; procedure CheckItSelf; const Rec_SIZE  = SizeOf(UInt32); var   FS:TStream;   idCrc:TIdHashCRC32;   C:UInt32; begin   FS := TBufferedFileStream.Create(Application.ExeName, fmOpenRead or fmShareDenyWrite);   try       FS.Position := FS.Size - Rec_SIZE * 2;       if (FS.Read(C, Rec_SIZE) = Rec_SIZE) and (C = FS.Size) then       begin         FS.Position := 0;         idCrc:=TIdHashCRC32.Create;         C := StrToInt('$'+ idCrc.HashStreamAsHex(FS));         idCrc.Free;         if Int32(C) = -1 then // valid crc             Exit;       end;       raise Exception.Create('Crc check error');   finally     FS.Free;   end; end;



هذه الطريقة ذات فعالية محدودة لان الفيروس اذا دخل البرنامج يقوم بتغيير عنوان كود الدخول ليتسنى له التنفيذ اولا معناه قبل ان يقوم البرنامج من التحقق يكون الفيروس قد اشتغل على حد علمي..

هناك بعض الطرق ربما أكثر فعالية كنت استخدمها ..
كنت عملت برنامج تقوم بفتح قائمة من الملفات التنفذية -البرامج التي اريد حمايتها-و تركها مفتوحة لمنع اي محاولة لعبث فيها هذا البرنامج يشغل اليا مع انطلاق الوندوز ...

هناك طريقة اخرى و هي وضع الملف التنفيذي في ملف مضغود zip. rar و باستعمال سكريبت او bat تقوم بستخراج نسخة و تنفيذها في كل مرة ..
[-] كل من 1 user says قال شكرا ل Ndagor على المشاركة المفيدة
  • S.FATEH
الرد


الردود في هذا الموضوع
RE: [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - بواسطة Ndagor - 08-12-2022, 02:28 PM
بخصوص [تمرين] حماية ذاتية - بواسطة I3CT - 28-06-2022, 12:47 PM
RE: بخصوص [تمرين] حماية ذاتية - بواسطة Delphi4Us - 28-06-2022, 01:10 PM

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


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