الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حماية البرنامج عن طريق Check Sum ؟

مغلق
بدأه Swift في 25 أغسطس 2006 · 27 رد · 6,088 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاتة

إن شاء الله لقد تم تسجيلى بالمنتدى وهذه تعتبر ثانى زيارة لى إن شاء الله أكون ما أثقلت عليكم

---------------

لقد تعرضت الى أن أتعلم لغة اللدلفى الجميلة والسهلة وهذا حدث من يومين وبحمد لله قد تمكنت من بعض الأشياء

سؤالى هو : أحد الزملاء تكلمت معه بالنسبة للحماية فأرشدنى الى هذة الطريقة وليس اعرف اذا كانت تنفع مع دلفى او لأ

هى طريقة Check Sum

توضيح لأداة : كل file فى الكمبيوتر عندك ليه Check Sum

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

كيف يمكننى تطبيق ذلك الامر علماً بانى مبتدئ دلفى :unsure:

Comming Soon

#2

شرفت المنتدى وبانتظار مشاركات أكثر :)

اقتباس
هذه الأداة اوالكود تمكنك والله أعلم من وضع كود ببرنامجك مكون هذا الكود من 31 رقم وحرف

مافهمت ايش معنى هذا الكود اذا كان ChSum يتغير مع كل compile للبرنامج

#3

يمكن تحديد مكان التحقق من الـ checksum وتعطيل الخوارزمية الخاصة به.

لو ان الخوارزمية فعالة لتم استخدامها في جميع التطبيقات التجارية المقرصنة ومنها الدلفي الذي قد تستخدمه انت.

حاليا استخدام checksum ينتشر فقط بشكل فعال في نقل رزم البيانات عبر الشبكات لتحديد اذا ما كانت احدى الرزم Packets معطوبة اثناء النقل.

السلام عليكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#4

Xacker

بكذا الموضوع يتقفل نهائي :)

خلينا نتكلم قبل تحديد مكان التحقق من الـ chsum وتعطيل الخوارزمية الخاصة به.

نتكلم عن كيفية اضافة الخوارزميه للتطبيق بعد الـ compile

نحفظ فيها md5 chsum الأصلي

ونجلعها تتأكد مع كل تشغيل للتطبيق بين md5 chsum الأصلي والحالي

فقط للإستفاده لاغير

#5

السلام عليكم ورحمة الله وبركاتة

بارك الله فيكم وجعلها فى ميزان حسناتكم

الأن وضحت الفكرة بالنسبالى يعنى لابد من اضافة

اقتباس
نتكلم عن كيفية اضافة الخوارزميه للتطبيق بعد الـ compile

نحفظ فيها md5 chsum الأصلي

ونجلعها تتأكد مع كل تشغيل للتطبيق بين md5 chsum الأصلي والحالي

أشكركم وان شاء الله أنا هذا الأيام أعمل بكل جد لإلمام هذه اللغة وابتدأت بالحماية لانها هلى اهم شئ

مشكوووووووووووووووووووووووورين وإن اتيحت الفرصة للتكلم على اضافة الخوارزمية أكون منوووووووووووووون

Comming Soon

#6

ابسط طريقة ل CheckSum

هي ان تجمع كل byte من برنامجك

d4baa0.gif
#7

فكرة CRC هي في تدقيق البيانات, تماما كما ذكر الأخ محمد.. ابسط طريقة جميع قيم الـ hex للبايتات. تغيير اي بايت سيغير قيمته لكن يمكن تجاوزها بزيادة قيمة بايت وانقاص آخر او اضافة بايت بقيمة اقل لتقوم بالتعديل لتعيد القيمة الصحيحة دوما :)

انا اتعامل مع الاسمبلي, لذا اترككم لتطبقوا خوارزميتها تحت دلفي.. الموضوع رياضي اكثر منه برمجي.

السلام عليكم

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#8

السلام عليكم ورحمة الله وبركاتة

-----------------------

أول شئ بقول مشكووووووووووووورين وجزاكم الله خير على هذا المجهود الرائع

اقتباس
ابسط طريقة ل CheckSum

هي ان تجمع كل byte من برنامجك

والله يا أخى دعنى اقولك انى مبتدا فى الدلفى لكنى انطلق مثلما ينطلق الصاروخ من القاعدة فإن اتيجت الطريقة بمثال واضح

اقتباس
انا اتعامل مع الاسمبلي, لذا اترككم لتطبقوا خوارزميتها تحت دلفي.. الموضوع رياضي اكثر منه برمجي.

مشكووووووور اخى على المشاركة الطيبة

Comming Soon

#9

هل تريد عمل CheckSum للملف التنفيذي باكمله ؟

ام فقط لجزء Code في ملفك التنفيذي ؟

d4baa0.gif
#10

السلام عليكم ورحمة الله وبركاتة

------------------

جزاكم الله خيراً ... كثرت اسئلتى واستملونى ان شاء الله

انا أريد عمل CheckSum على التطبيق بأكملة ( البرنامج كلة ) طبعاً اى حد هيلعب فى اى منطقة من جماعة الهاكر فى الملف التنفيذى ميش هيشتغل معاه البرنامج

وكدة ان شاء الله هيبقى البرنامج محمى 100%

أنا خايف ليكون رقم CheckSum ينفع يتغير لكى يطابق الأصلى بعد التعديل بس انا بعتقدش :unsure:

Comming Soon

#11

كل التطبيق!

حسنا، و اين تحفظ قيمة CheckSum ؟

لا تقل لي داخل التطبيق، لانها لوكانت داخل التطبيق تتغير كلما غيرنا حرف

d4baa0.gif
#12

السلام عليكم ورحمة الله وبركاتة

---------------------

دعنى اوضح الفكرة لتكون ملم بها وواضحة بالنسبة لأعضاء المنتدى

الفكرة أنى واضع امامى فكرة تنفيذ برنامج شات

الكلينت : طبعاً هذه هو البرنامج اللى عايز احط فيه CheckSum

لماذا ؟ لانى سوف اقوم ان شاء الله بوضع خواص بهذا الكلينت Client لا تظهر لاى مستخدم , تظهر فقط للــ Admins علشان من هذه الادوات سوف يقوم المدير بالتحكم بكامل البرنامج وقاعدة البيانات وسوف اقوم باخفاء هذه الادوات False ,, لكى لا يستخدمها الأعضاء لانى سوف اقوم ببرمجة قاعدة البيانات على اساس مستويات Admin & user

فأذا كان اللمستخدم Level بيتاعة Admin سوف تظر له هذه الاداة ولتكن مثل Manu : File >> Admin Full control

فأذا كان المستخدم يوزر Normal لا تظهر له هذه الاداة

لماذا فكرت انا فى اضافة الــ Check Sum ؟ لأن فى ظل الايام اللتى نعيشها يوجد أكثر من برنامج لكسر البرنامج وتغيير هذه الاداة الى True وبهاذا قد يستطيع الدخول على التحكم الكامل بالبرنامج

أنا فكرتى هى عند كسرة لهذه الأداة سوف يتغير رقم CheckSum ولا يكون مطابق للرقم اللى أنا واضعة

انا حاسس انى الرقم بتاع الCheckSum ميش هينضاف فى الClient هينضاف فى السيرفر :s

أنا ميش عارف اعمل ايه انا تعبك معايا واعزرنى لانى مبتداً فى الدلفى

Comming Soon

#13

انا ساقول لك كلمتين "غير جيد" لانه كما قلت يمكن ازالته بسهولة وعندها تعرض بياناتك الحساسة للخطر.

Do as I say, not as I do

We are Anonymous. We are Legion. We don't forgive. We don't forget

#14

السلام عليكم ورحمة الله وبركاتة

--------------------

مشكورين شباب .. جزاكم الله كل خير

أنا حاسس إنى الموضوع صعب بالنسبة لى لانى مبتدئ لكن يمكن وضعة لكى يستفيد منه الأعضاء وانا هحاول أفهمة

ممكن أكون وصعت نفسى فى مأزق لانى مبتدئ وببص لشئ أعلى منى :unsure:

Comming Soon

#15

السلام عليكم ورحمة الله وبركاتة

-----------------------

اقتباس
ولا يهم ان كنت مبتداء، كلنا نتعلم،

المهم ان تكون ارادتك قوية

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

مشكووووووووورين شباب مناقشة جميلة جزاكم الله جميعاً كل خير

الأستاذ / محمد عبد العزيز .. المثال اللذى ارفقتة أكثر من جميل لأنة وضح لى الفكرة وجعلها أمام أعينى ... فى المثال المرفق الملف EXE لا يشتغل طبعاً لأنة معتمد على أخذ القيمة من الملف الاخر AddCRC.exe

كويس انك وضحت انة يمكن كسرة بسهولة , لأننا لو حذفنا الملف AddCRC.exe كدة ممكن نقول الحمايه انقطعت

سؤال أخر بسيط جداً على هذا المثال , على ماذا يعتمد EXE فى أخذ القيمة من الملف AddCRC.exe

Repeat
	 BlockRead(EXe,Buff,Sizeof(Buff),rBytes);
	 //if rBytes<Sizeof(Buff) then rBytes:=rBytes-4;
	 for i:=0 to rBytes-5 do CRC := CRC + Buff;
  Until (rBytes<Sizeof(buff));
  BlockWrite(EXE,CRC,4,rBytes);
  CloseFile(EXE);

ممكن يكون هذه الكود اللى يعتمد علية بس ميش فاهمة إطلاقاً

- وهل يمكننا وضع البرنامج AddCRC.exe داخل الملف EXE لكى لا ندع أحد ان يحذفة وبكدة البرنامج سوف يكون محمى ان شاء الله :unsure:

مشكووووووووووووووووووين شباب وبالتوفيق

Comming Soon

#16

على ما يبدو التواصل مفقود مع الأخ Swift

تم تعديل هذه المشاركة بواسطة fh_feras في 4 سبتمبر 2006 في 06:25

#17

السلام عليكم

اقتباس
سؤال أخر بسيط جداً على هذا المثال , على ماذا يعتمد EXE فى أخذ القيمة من الملف AddCRC.exe

لم تفهم

EXE هو برنامجك الخاص مثلا

AddCRC يستخدم مرة واحدة فقط، عند تنفيذه يقوم بحساب CRC الملف EXE قم يكتب الناتج في نهاية الملف التنفيذي EXE

اي يضيف 4 bytes لحجم الملف الأول EXE وهنا انتهى دور AddCRC ولا نحتاجه بعدها

الملف ُEXE عند تنفيذه يقراء 4 bytes من نهايته ثم يحسب CRC بنفس الطريقة ويقارن النتيجة بما قرائه

في حال كان اختلاف يخرج مباشرة

فهمت ؟

fh_feras كتب:
على ما يبدو التواصل مفقود مع الأخ Swift

ما ذا تقصد ؟

d4baa0.gif
#18

السلام عليكم ورحمة الله وبركاتة

------------------

مشكووووووووووور اخى الكريم

اقتباس
على ما يبدو التواصل مفقود مع الأخ Swift

ميش فاهم عليك

اقتباس
فهمت ؟

محرج منك والله اخى الكريم محمد ومحرج ارد :wacko:

حاولت بشتى المحاولات ولكن ؟ لم أفهم

البرنامج EXE لا يعمل اطلاقاً عندما اقوم بتشغيل الملف AddCRC.exe

إزاى ميش شغال وانا لما أغير حرفاً فى الملف EXE التنفيذى

المفروص : أن البرنامج سوف يعمل بكفائة فأذا غيرنا أى شئ بالملف EXE سوف لا يعمل البرنامج

لان وظيفة CheckSUM اختبار الملف التشغيلى إذا كان احد قد غير به شيئاً او لا

والله أنا حاسس انى على خطأ ,, شباب لو الموضوع صعب بالنسبة لواحد مبتدئ مثلى مفيش مشاكل أخرجونى منه :unsure:

تم تعديل هذه المشاركة بواسطة Swift في 4 سبتمبر 2006 في 11:05

Comming Soon

#19

لم يعمل لانني نفذت AddCRC قبلك

تنفيذ AddCRC مرتين يعدل بالبرنامخ مرة ثانية وبالتالي لا يعمل

اعد تحميل المرفق وجرب EXE سيعمل

لا تنفذ AddCRC الا اذا اعدت Compile الملف الأول EXE

d4baa0.gif
#20

السلام عليكم ورحمة الله وبركاتة

-----------------------

الان فهمت على المثال اللى وضعته جزاك الله خيراً

أكثثثثثثثثثثثثثثثثثثثثثثثثثثثثثثثثثر من رائع

شغلت البرنامج ;) واشتغل تمام وبعد كدة عملت له تغير على أحد برامج Extract Exe File وبعد كدة لم يعمل :lol:

وهو المطلوب اثباتة حقاً بارك الله فيك وبارك الله فى جميع من شارك فى هذا الموضوع الرائع

شكراً وبالتوفيق ان شاء الله

تم تعديل هذه المشاركة بواسطة Swift في 4 سبتمبر 2006 في 11:57

Comming Soon

#21

السلام عليكم إخوتي في الله ...

يمكن تحديد ( قيمة مجهولة ) يتم المقارنة بها لتدلل على مجموع الأحرف للبرنامج أو أي علاقة رياضية أو منطقية لحروف البرنامج....ومن ثم وبعد ترجمة الكود لصيغة تنفيذية وحساب ما تريد من علاقة رياضية أو منطقية على حروف البرنامج وذلك لإيجاد قيمة يتم الاستدلال بها على بصمة لبرنامجك التنفيذي أن.....تقوم بإدراج تلك القيمة بأي Hex Editor....

داخل الملف التنفيذي وإذا ما أراد أي من الــ Crackers أن يصدع برنامجك ويكسر حمايته ( وذلك بتغيير بعض القيم أو أي شيء فيه ) ستكون النتيجة فشل في التنفيذ ...وهذا نموذج من الحماية لا يجب أن يكون منفرداً بل يجب أن يكون معه أكثر من أسلوب...وأنصح المهتمين بالحماية بالبحث عن ....

Anti Debug Techniques....

وعلى

Self Modifing Code

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

تم تعديل هذه المشاركة بواسطة kingbode في 11 سبتمبر 2006 في 08:48

#22

السلام عليكم

kingbode كتب:
ومن ثم وبعد ترجمة الكود لصيغة تنفيذية

ما ذا تقصد بالتحديد بهذه الجملة ؟

kingbode كتب:
Self Modifing Code

مسالة SMC معقدة نوعا ما

واستخدامها Triger مضاد الفيروسات

d4baa0.gif
#23

الصيغة التنفيذية هو الملف التنفيذي الـــ EXE file

الممثل للكود الذي كتبته...وهذا ما أقصده...

بالنسبة لـــ Self Modifing Code..

أي أنك تقوم بتغيير البرنامج وقت التنفيذ وذلك بعمل Patching للملف التنفيذي بقيم جديدة قد بنيت لها احتمالات وجمل شرطية في برنامجك وذلك للحماية مثلاً...

وأعطيك مثال يوضح ما أقول...

1- انت مثلا قمت بكتابة كود لمشروع معين وأردت أن تحميه من أن يتم التعديل فيه بأي طريقة كما يفع الـ Crackers الذين يكسرون الحماية التي قام بها المبرمج ليحمي برنامجه من النسخ والتداول ...كأن يقوم المبرمج بمقارنة متغير معين بقيم يستجلبها من اماكن اخرى ...فيدخل الكراكر بالـ Hex editor والـ Disassembler

ويقوم بعمل طمس لهذه الخطوة ومن ثم سيتغير الكود وجزء الحماية لن يكون فاعلاً ولو أنك قمت بمقارنة الـ CRC للبرنامج بعد ترجمته لصيغة تنفيذية ( After Compiling ) ووضعت القيمة الجديدة للـ CRC المعبرة عن برنامجك وذلك بعد الترجمة وذلك كما وضح البعض او باستخدام الـ Hex Editor في مكان ما داخل البرنامج الخاص بك ( مكان أنت تركته خصيصا لذلك ) ففي هذه الحالة يمكنك منع عملية الكراك له لا سيما إذا استخدمت برامج الضغط...وتقنيات الـ Anti Debug Techiques ...

أكيد أنت فاهمني يا محمد..

وكنت قد أقترحت في موضوع تاني ان نخصص قسم لطرق الحماية للدلفي أو للغات البرمجة الأخرى..

معذرة لاستخدام بعض المصطلحات العربية التي يصعب فهما ومطابقتها بما تعودنا عليه من مصطلحات أجنبية في البرمجة..

لو ما زال كلامي مبهماً سأشرحة بطريقة كتابة الكود التالية ( ولكنه ليس كود )

1- write your Code.
2- but this code in your Project
 asm

NOP
NOP
NOP
NOP
NOP

end;

3- build your code to get exe file 

4- measure your application CRC or size or any formula u want

5- open your exe using hex editor and using win disassembler

6- search for your NOP's

7- and using Hex Editor Change your Nops to the Code ( Assembly ) you want to add after this save and exit

 8- now you changed your code as crackers do but you did that to protect your code 

9- after this you can compress your code by any way

وطبعاً في أمثلة كثيرة لاستخدام هذه الفكرة وليست للحماية فقط ومنها الـــ Self Modifing Code

وان شاء الله أجيب مثال عملي عليه قريباً..

طبعا الموضوع ده محتاج دراية بلغة التجميع + الدلفي طبعاً..

وأرجو التصحيح لو في حاجة مبهمة ..وشرفت جدا بانضمامي لمنتداكم...

تم تعديل هذه المشاركة بواسطة kingbode في 11 سبتمبر 2006 في 14:11

#24
اقتباس
أي أنك تقوم بتغيير البرنامج وقت التنفيذ وذلك بعمل Patching للملف التنفيذي بقيم جديدة قد بنيت لها احتمالات وجمل شرطية في برنامجك وذلك للحماية مثلاً...

هههه...فهمت

كنت تقصد Self Patching...

اما انا فكنت اظن انك تقصد Self Modifing Polymorphic Code

اي الكود يغير نفسه عند كل تنفيذ :)

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

d4baa0.gif
#25

ليش حذفته محمد أنا هنا ماتعديت قسم الدلفي مااتذكر هذا الموضوع :)

kingbode

تحياتي لك وياهلا فيك بالقسم

كلامك واضح ورائع لكن بالنسبه لي وخاصه لما يكون فيه لغة التجميع بحاجه لتوضيح أكثر

ننتظر بدايتك بالموضوع هذا مع الأمثله وياليت يكون بموضوع مستقل وألف شكررر

هذا الموضوع مغلق.

مواضيع مشابهة