السلام عليكم
فقط كإضافة جعل كود الحماية في برنامج خارجي متعب كل مرة تقوم بكومبايل للكود تقوم بتكرار نفس الامر اضافة الـ CRC32 الى البرنامج
او تقوم بالعملية مرة واحدة عند الإنتهاء من البرنامج...
قمت بتغيير بسيط لكود إظافة CRC بحيث يأخذ مسار البرنامج المراد إضافة الـ CRC له كبرامتر و إستدعائه بإستخدام Build Events
يتم وضع البرنامج المسئول عن اضافة crc الى جانب البرنامج المراد حمايته ثم يتم استدعائه باستخدام Build Events مع تمرير مسار البرنامج
![[صورة: attachment.php?aid=4714]](https://delphi4arab.net/forum/attachment.php?aid=4714)
بهذه الطريقة الحماية تكون اوتوماتيكية ..
فقط كإضافة جعل كود الحماية في برنامج خارجي متعب كل مرة تقوم بكومبايل للكود تقوم بتكرار نفس الامر اضافة الـ CRC32 الى البرنامج
او تقوم بالعملية مرة واحدة عند الإنتهاء من البرنامج...
قمت بتغيير بسيط لكود إظافة CRC بحيث يأخذ مسار البرنامج المراد إضافة الـ CRC له كبرامتر و إستدعائه بإستخدام Build Events
PHP كود :
procedure AddCrc;
const Rec_SIZE = SizeOf(UInt32);
var
FS:TStream;
idCrc:TIdHashCRC32;
C:UInt32;
ExeFile:string;
begin
ExeFile := ParamStr(1);// تغيير بسيط
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;
يتم وضع البرنامج المسئول عن اضافة crc الى جانب البرنامج المراد حمايته ثم يتم استدعائه باستخدام Build Events مع تمرير مسار البرنامج
بهذه الطريقة الحماية تكون اوتوماتيكية ..
و لرب نازلة يضيق لها الفتى ذرعا و عند الله منها المخرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج
ضاقت فلما استحكمت حلقاتها فرجت و كنت اضنها لا تفرج


![[-]](https://delphi4arab.net/forum/D4A2020/collapse.png)