![]() |
|
[تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - نسخة قابلة للطباعة +- delphi4arab منتديات دلفي للعرب (https://delphi4arab.net/forum) +-- قسم : منتديات دلفي للعرب التعليمية (https://delphi4arab.net/forum/forumdisplay.php?fid=3) +--- قسم : تمارين دلفي وحلول (https://delphi4arab.net/forum/forumdisplay.php?fid=16) +--- الموضوع : [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به (/showthread.php?tid=425) |
[تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - محمد عبد العزيز - 13-01-2009 بسم الله الرحمن الرحيم نص التمرين (حماية ذاتية) : أظف اجراء لبرنامجك لكي يفحص نفسه عند التنفيذ، فان تم العبث به او اصابه فيروس او عطب يظهر رسالة خطأ ويخرج بعد اسبوع اضع احد الحلول الممكنة والسلام عليكم [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - hanipino - 15-01-2009 ليست لدى ادنى ادنى فكرة عن هذه الامور . مجرد محاولة فقط . [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - Rover - 15-01-2009 Library Code [ Lib.dll ] PHP كود : library Check_File_Hack;Form Code PHP كود : unit Unit1;[تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - STRELiTZIA - 16-01-2009 السلام عليكم و رحمة الله إقتباس :أظف اجراء لبرنامجك لكي يفحص نفسه عند التنفيذ، فان تم العبث به او اصابه فيروس اوعطب يظهر رسالة خطأ و يخرج اليك هذه المحاولة اخي دلتا ![]() الاجراء يعتمد على الفحص بــ CRC32 لـــ Stream ، التطبيق يفحص نفسه بنفسه دون الحاجة الى وسائط خارجية... PHP كود : procedure TMain.CheckItSelf;استدعاء الاجراء في حدث OnCreate PHP كود : procedure TMain.FormCreate(Sender: TObject);المرفق يحتوي على الملفات المصدرية + التطبيق. لتجربة المرفق يجب محاولة العبث به اولا او جعله ضحية لفيروسات الملفات التنفيذية
[تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - محمد عبد العزيز - 16-01-2009 Rover اجراء التحقق ونتيجة CRC32 بالمكتبة DLL حل جميل لكنه غير صحيح حسب نص التمرين لماذا ؟ ان اعتبرت المكتبة جزء من البرنامج يعني التعديل عليها يظهر رسالة الخطأ وهذا لايحدث في محاولتك ان اعتبرت المكتبة ليس جزء من البرنامج فان من يتحقق ليس البرنامح وانما شيئ خارجي hanipino حفظ مسار البرنامج بملف نصي ونسخ البرنامج وتمويهه بلاحقة INI محاولة جميلة ايضا لكن غير متوافقة مع التمرين اضافة الى احتوائها اخطاء STRELiTZIA حل صحيح بيننا نفس الطريقة التي فكرت فيها وقت وضع التمرين والتي كنت ساضعها كاحد الحلول الان علي ان اجد طريقة اخرى واضعها تحياتي لكم جميعا وبانتظار مشاركات اخرى [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - me_delphi - 16-01-2009 هذا التطبق جد بسيط (غير مظم فقط كمثال) ملاحظة لبقية الاخوان لا تعملوا compile أي F9 لكي ل يتغير الهاش [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - sandokhane - 17-01-2009 وهذه محاولة أخرى بسيطة (للتنويع)...باستعمال وحدة md5 من موقع torry's delphi pages حفظ قيمة الهاش يتم في قاعدة السجلات.. -- حساب الهاش : كود : procedure TForm1.Button1Click(Sender: TObject);
var MyStream: TMemoryStream;
begin
MyStream := TMemoryStream.Create;
Try
MyStream.LoadFromFile(Application.ExeName);
Edit1.Text:=MD5DigestToStr(MD5Stream(mystream));
Finally
MyStream.Free
end;
end;-- حفظ الهاش في قاعدة السجلات. كود : procedure TForm1.Button2Click(Sender: TObject);
var registre:TRegistry;
begin
Registre:=Tregistry.Create;
Registre.RootKey:=HKEY_CURRENT_USER;
Try
Registre.OpenKey('Software\Delphi4Arab',true);
Registre.WriteString('MyMd5',Edit1.Text);
Label1.Caption:='HKEY_CURRENT_USER\SOFTWARE\DELPHI4ARAB';
Finally
Registre.Free;
end;
end;-- قراءة الهاش من قاعدة السجلات : كود : procedure TForm1.FormCreate(Sender: TObject);
var registre:TRegistry;
// MyStream: TMemoryStream;
begin
Registre:=Tregistry.Create;
Registre.RootKey:=HKEY_CURRENT_USER;
Try
Registre.OpenKey('Software\Delphi4Arab',true);
Label1.caption:=Registre.ReadString('MyMd5');
Finally
Registre.Free;
end;
Button1Click(Sender);
if Label1.Caption <> Edit1.Text then ShowMessage('MD5 Hash modified') else
Form1.Caption:=Form1.Caption+' -[Md5 Hash OK]';
end;![]() كل شى مع المرفقات..
[تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - محمد عبد العزيز - 17-01-2009 sandokhane استخدام md5 وحفظ النتيجة في Registry فكرة جيدة لكن ليس صحيحة حسب التمرين نفس الملاحظة السابقة ل Rover و Hanipino نقل البرنامج لجهاز اخر لاتوجد به القيمة يجعل البرنامج يظهر رسالة الخطا بالرغم انه لم يتم التعديل عليه [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - sandokhane - 18-01-2009 DeltaAziz كتب :sandokhane ![]() يا أخي...أعرف أن الفكرة بسيطة ...ولكنها قد تشكل نوعا من الحماية الإضافية ...أي أنها فضلا عن منع التعديل على الملف (وهذا نص التمرين) فإنها تمنع كذلك النقل اليدوي للتطبيق من جهاز لآخر بحيث لا يعمل البرنامج إلا عبر المرور ببرنامج التنصيب الذي هو من يكتب قيمة الهاش في قاعدة السجلات أثناء التنصيب...هذا مثال ..بال innoSetup ![]() مع المرفقات تجد مثال برنامج تنصيب .... مفتاح التنصيب : delphi4arab [تمرين] حماية ذاتية : البرنامج معطوب، مصاب بفيروس او تم العبث به - STRELiTZIA - 18-01-2009 السلام عليكم و رحمة الله اخي سندوخان... في البرمجة كل الطرق تؤدي الى روما.... بما يخص الـــ CheckSum لتفاذي عطب الملفات كما تعلم من طرف البرامج الظارة او التحميل من النت... الهدف من التمرين هو حصـــــــر التفكير في كيفية جعل ملف تنفيذي يفحص نفسه بنفسه و يتأكد من الــ CheckSum الخاص به... مثلها مثل وضع تحدي Crackme في منتديات الهندسة العكسية يكسر بسهولة بــ Patching و لكن صاحب التحدي يطلب عمل Keygen و انت ادرى بذلك اخي العزيز ![]() الحل الذي ارفقته في مشاركتي السابقة بسيط ويستعمل كثيرا في ادوات الحماية الــ Protectors الذي تضاف اليه محاولة اخفاء قيمة الهاش و عمل Obfuscation لخوارزمية التحقق من الهاش الكثير استعمال في ادوات الحماية المشهورة... WinRAR ايضا.. بالتوفيق ان شاء الله |