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

كيفية حماية البيانات داخل الملف التنفيذي

بدأه Wael Dalloul في 19 سبتمبر 2006 · 18 رد · 5,244 مشاهدة · في لغة Delphi
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

بما انه لا يوجد منتدى للحماية, و بما أنّ اخوكم صفر في الحماية إن لم يكن -1 فسوف اضع سؤالي هنا

السؤال على الشكل التالي:

في بعض الاحيان يحتاج البعض لتخزين بيانات معينة في برنامجه ككلمة سر معينة يتم استخدامه في مكان ما مثلا

فيقوم بتعريف هذه الكلمة في قسم ال const مثلا على الشكل التالي

const Pass = 'sdfk dfk3458sdfjk'

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

بشكل سهل لا اتذكر اسم البرنامج الذي يتم استخدامه لفعل هذا.

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

const pass = #67#89#59#67#56#99#90#76

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

بعد هذا قد يفكر البعض بعمل عدة توابع تقوم بمجملها ارجاع قيمة كلمة السر حيث يتم جمع اكثر من string لارجاع كلمة السر و بالتالي يكون من الاصعب الحصول

على كلمة السر و معرفتها

بعد هذه المقدمة البسيطة: اريد ان اسأل السؤال التالي

كيف يمكن حماية نص داخل التطبيق بشكل مثالي بحيث لا يتمكن احد من الوصول اليه باي طريقة كانت؟

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

و هل هذه البرامج تقوم بالغرض الذي سألت عنه, إن كان كذلك ارجوا اعطائي روابط لبعض البرامج التي استخدمتموها في هذا الغرض

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#2

في موضوع حلو للأخ عروة

/index.ph...mp;#entry464422

#3

مشكور اخي على لفت الانتباه

اقتباس
-خزن كلمات المرور في أماكن غير معتادة .

بالتأكيد لن تخزن كلمة مرورك في ملف نصي بالإسم Password.txt في نفس مجلد البرنامج ؟؟؟؟

بإمكانك تخزينها في أحد حقول قاعدة البيانات المستخدمة , أو خزنها بملف وأعطة إمتداد DLL وضعة في مجلد النظام SYSTEM32 مثلا , وليكن إسمة RDC123.dll على سبيل المثال .....

-إذا أردت إستخدام رسائل توضيحية للمستخدم , لا تستخدم سلاسل محرفية مخزنة .

إن أول شيء سيحاول الهاكر البحث عنة هو الرسائل النصية لإنة يستطيع بواستطها تحديد أجزاء الكود المختلفة ومعرفة المكان الذي يجب العمل فية , فسيعرف الجزء الخاص بإختبار كلمة المرور مثلا من رسالة : "شكرا لتسجيل الدخول"

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

هذا ما قاله الاخ عروة في مقالته حول ما طرحت و انا قرأت كامل المشاركة هذه قبل وضع هذه المشاركة

و على ما اعتقد ان الهاكر يستطيع بسهولة معرفة Dll التي يتعامل معها البرنامج و يستطيع ان يصل الى ملف DLL المطلوب و بعد ذلك تحريره بماذا؟ لا اعرف؟

و لكن متأكد انه يوجد شيئ ما لفعل ذلك.

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#4

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

بالنسبة لـ

const pass = #67#89#59#67#56#99#90#76

=

const Pass2 = 'CY;C8cZL';

الناتج في النهاية هو نفسه جرب الطريقتين ثم انظر الناتج بعد Disassembling ...

"First they ignore you, then they laugh at you, then they attack you, then you win"

===

اقتباس

حُكَّامُـنَا إِنْ تَصَـدّوا لِلْحِمَــى اقْتَحَمُـوا ***** وَإِنْ تَصَدَّى لَـهُ المُسْتَعْمِـرُ انْسَحَبُـوا

هُمْ يَفْرشـُونَ لِجَيْـشِ الغَــزْوِ أَعْيُنَـهُـمْ ***** وَيَدَّعُــونَ وُثُـوبَـاً قَـبْـلَ أَنْ يَثِـبُــوا

الحَاكِمُـونَ و«وَاشُنْـطُـنْ» حُكُومَتُـهُـمْ ***** وَاللامِعُــونَ وَمَـا شَعَّـوا وَلا غَرَبُــوا

القَاتِلُـــونَ نُبُــوغَ الشَّـعْــبِ تَرْضِـيَـــةً ***** لِلْمُعْتَدِيــنَ وَمَـا أَجْـدَتْـهُـمُ الـقُــرَبُ

لَهُمْ شُمُـوخُ «المُثَنَّـى» ظَاهِـرَاً وَلَهُـمْ ***** هَـوَىً إِلَـى بَابَـك الخَرْمِـيّ يُنْتَسَـبُ

البردوني "أبو تمام وعروبة اليوم" 1971

===

اقتباس
عبيد الهوى يحكمون البـلاد ***** ويحكمهــم كلّهـــم درهــــــم

و تقتـادهـم شهـوة لا تنــام ***** وهـــم فـي جـهالتهــم نــــوّم

ففــي كـــلّ ناحيــة ظـالـــم ***** غبــــــيّ يسـلـّطــــه أظلـــم

أيا من شبعتم على جوعــنا ***** وجـــوع بنينـا ألـم تتخمـــوا ؟

ألم تفهموا غضبة الكادحين ***** على الظلـم ؟ لا بدّ أن تفهموا

البردوني "نحن و الحاكمون "

#5

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

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

ايضا, كشف الاجرائيات سيؤدي الى كشف النصوص.. لذا تعتبر مسالة حماية الملف بالكامل وليس النصوص باستخدام برنامج حماية تجاري افضل حل, على الاقل.

السلام عليكم, المحاضرة بعد 5 دقائق :P

.

Do as I say, not as I do

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

#6

السلام عليكم

لا تضع كلمة السر داخل التطبيق.

ضعها في مكان اخر وحاول ان تبدع...

هل التطبيق يعمل في جهاز به اتصال دائم بالانترنت ؟ ان نعم ضعه في موقعك...

هل تستحدم Dongle ؟ ان نعم ضعه داخله

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

لا تبني تطبيقك على كلمة سر واحدة و ان امكن اجعل لكلمة السر علاقة بالوفت

حاول استخدام الرياضيات في التشفير، ابحث عن خواريزميات مثل Rijndael

-

البرنامج يكسر ان وقع في يد شخص خبير وملم بعمل نظام التشغيل مهما كانت قوة حمايته لكن،

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

وللحديث بقية...

d4baa0.gif
#7

في تعقيب بسيط انو الكراكر بيعتمدو على رسائل الأخطاء

يعني اذا عنا برنامج لما ندخل كلمة سر خطأ بيعطينا رسالة ERROR

فهون الكراكر بيبحث عن هذه الرسالة عن طريق شيفرة الأسمبلي وبعدها بغير الأمر الموجود بالرسالة من not إلى ok

وهيك بيصير أي كلمة سر خاطئة رح يقبلها البرنامج على انها صحيحية

وهون بيجي دور الإبداع بعدم وضع رسالة خطأ عند ادخال كلمة مرور غير صحيحة

يعني نكتفي بإجراء

Edit1.cleartext;

#8
اقتباس
اعلم انه هناك برامج تقوم بتشفير كود البرنامج بحيث لا يمكن احد الاستفادة منه, هل لهذه البرامج برامج معاكسة تقوم بعكس عملية التشفير

و هل هذه البرامج تقوم بالغرض الذي سألت عنه, إن كان كذلك ارجوا اعطائي روابط لبعض البرامج التي استخدمتموها في هذا الغرض

تقوم هذه البرامج بتشفير وضغط التطبيق وتدعى PEPackers أو PEEncoders

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

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

وهناك العديد من برامج ضغط وتشفير التطبيقات منها:

TELOCK

Yoda's Crypter

UPX

PE-CRYPT

وهي مجانية ويمكنك البحث عنها أو البحث عن ExeEncoders أو ExePackers وستجد العديد

طبعا كون هذه البرامج مجانية وبعضها متوفر مع Source Code فهذا يعني أن فك تشفيرها أسهل من حالة استخدامك لبرامج تشفير تجارية أو صناعة برنامج تشفير خاص بك

#9

الحل الوحيدهو زي ماذكر fh_feras تشفير النصوص ثم تشفير كامل التطبيق

يعني برنامج packer يكون خاص لك وفيه تعديلات خاصه تكتبها بنفسك

واذا حصل وتم فك التشفير بسبب الضغط راح يبقى كود التشفير نفسه اللى يحمي البيانات

على الأقل راح تضمن فتره معينه برنامجك فيها يكون محمي

عندي مثال لمشروع برنامج packer في الدلفي واضح وشغل مرتب من موقع روسي

يستخدم aPlib ولو أمكن تضيف بنفسك شوية شغلات عشان يكون packer و protector

بكذا يكون عال العال

#10
اقتباس
عندي مثال لمشروع برنامج packer في الدلفي واضح وشغل مرتب من موقع روسي

هو بأي لغة معمول؟ هل بأمكانك اعطائي رابط تحميل له :^)

عذراً لانني لم اتابع الموضوع, فانا اقرأ ردودكم و الله يعطيكم الف عافية

سوف اتابع نقاشكم عندما اجد الوقت لذلك فلدي الكثير من الاسئلة و الاستفسارات!!!

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#11
waeldalol كتب:
هو بأي لغة معمول؟ هل بأمكانك اعطائي رابط تحميل له :^) !!!

Delphi + Assembly

d4baa0.gif
#12

أكيد Delphi + Assembly

انا مو فاهم حاجه فيه أشياء كثيره مو قادر أستوعبها

أكواد asm والتعامل مع section إجراءات لـImportTable أشياء كثيره

المثال فيه Packing only first section مش كل الأقسام

من فتره كان عندي وحاولت أتعامل معاه عشان يضغط كل الأقسام

وبكذا أصبح فيه أخطاء بالمشروع راح أحاول أبحث عن موقعه وأرسله لك

#13

اولا: اسف لتأخري في الرد فقد كنت مشغول في امور اخرى,,,و نسيت هذا الموضوع الهام

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

cipher كتب:
const Pass2 = 'CY;C8cZL';

الناتج في النهاية هو نفسه جرب الطريقتين ثم انظر الناتج بعد Disassembling ...

صحيح كلامك اخي cipher و لكن في البرنامج W32DSM مثلاً هناك خيار في ال refs>String Data Referncing يقوم بعرض النصوص و عند عملها بالطريقة التي كتبتها لا يظهر النص, حيث انني عندما طرحت هذا السؤال لم اكن اعرف شيئ عن dissasm :D و الان اصبح الامر افضل قليلا

فعلا الناتج عند عمل disassembling تظهر الكلمة مثل ما هي في كلا الطريقتين :huh:

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

انا لا ابحث عن حماية مطلقة لانه لا يوجد شيئ مستحيل و اذا الواحد صمم انو يكسر برنامج بدو يكسروا في النهاية و لكن سوف يتكلف الكثير من الوقت و هذا ما ابحث عنه, و هو تصعيب الحماية قدر الامكان

كما تلاحظ في النهاية سوف تستند الى كلمة سر في تشفير نصوص معينة

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

هذا الامر قمت بعمله و لكن لا اره يؤخر كثيرا الحماية فمن السهل تتبع الاجرائيات التي قامت بانشاء متحول معين, ولا يصعب كثيرا عملية كسر البرنامج

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

برامج الحماية التجارية لن استخدمها ما في $, و برامج الحماية الغير مجانية سوف يتم فك تشفيرها بسهولة, هل اذا قمنا بتشفير البرنامج باكثر من برنامج تشفير

يصعب العملية ام نفس الشيئ

اقتباس
لا تضع كلمة السر داخل التطبيق.

ضعها في مكان اخر وحاول ان تبدع...

اين اضعها, اذا وضعتها داخل التطبيق يمكن الحصول عليها, واذا وضعتها خارج التطبيق يمكن كشف مكانه و بالتالي الحصول عليها

اقتباس
هل التطبيق يعمل في جهاز به اتصال دائم بالانترنت ؟ ان نعم ضعه في موقعك...

هل تستحدم Dongle ؟ ان نعم ضعه داخله

اغلب التطبيقات التي اقوم بعملها ليس لها علاقة بالانترنت,

Dongle لكي تدخل عليه تحتاج الى username,password و بالتالي لا فائدة من وضع كلمة السر بداخله :) اذا لم استطع حماية كلمة السر التي تؤدي الى دخوله

اقتباس
لا تبني تطبيقك على كلمة سر واحدة و ان امكن اجعل لكلمة السر علاقة بالوقت

حاول استخدام الرياضيات في التشفير، ابحث عن خواريزميات مثل Rijndae

لم افهم عليك هل لديك مثال يشرح لي كيف عمل كلمة سر لها علاقة بالوقت :blink:

انا استخدم خوارزمية تشفير من عملي يعني صنع محلي عملت عليها قليلاً, هل ابقى استخدمها ام استخدم خوارزميات جاهزة مثل خوارزميات تشفير windows التي تم تغليفها من JEDI

سوف ابحث عن خوارزمية التشفير التي ذكرت,,,,

شكرا fh لبرامج التشفير و الضغط التي اشرت اليه, سوف اقوم بالبحث عنها و تحميلها

اقتباس
الحل الوحيدهو زي ماذكر fh_feras تشفير النصوص ثم تشفير كامل التطبيق

هذا الحل تم الاشارة اليه في مشاركة الاخ x, و كما قال تشفير النصوص يحتاج الى خورزمية للتشفير و خوارزمية التشفير تعتمد على key في الاغلب و اذا لم تعتمد على key فهي سهلة الكسر,,,,,

كملخص لماسبق الامور التي تم اقتراحها هي كالتالي:

1- تشفير النصوص بخوارزمية تشفير معينة

2- كلمة السر لهذه الخوارزمية يتم الحصول عليها من عدة توابع

3- تشفير و ضغط التطبيق ببرامج سواء كانت تجارية او غير تجارية

هل هذا يضمن عدم كسر التطبيق خلال مدة 6 اشهر؟؟

رب اجعلني مقيم الصلاة ومن ذريتي ربنا وتقبل دعاء.

لا تنسى: "العقل مثل العضلة كلما استخدمته أكثر كلما ازدادت قوته"

#14
اقتباس
هل هذا يضمن عدم كسر التطبيق خلال مدة 6 اشهر؟
كم ساعة باليوم؟ :D

أقصد حسب الاهتمام بكسر البرنامج, فإذا وصل الاهتمام لمرحلة طلب كسر البرنامج من cracker هاوي أو مختص فعندها كل شيء ممكن, ولكن لماذا 6 أشهر؟

#15
fh_feras كتب:
ولكن لماذا 6 أشهر؟

هناك من قال:

يمكنني ان احمي تطبيقك لكن ليس مجانا

واضمن ان تطبيقك لن يكسر لمدة 6 اشهر

و الضمان انني لن اتقاض شيئ خلال 6 اشهر

ولا اضمن التطبيق يوم بعد ذلك :D

1
d4baa0.gif
#16

إذا كان ذلك صحيح فهذا ممتاز, ولكن مرة أخرى لماذا 6 أشهر؟

#17

لا تدقق كثير بالكلام -_-

6 شهور يعني نصف السنه يعني خير الامور اوسطها يعني اخلي مسؤوليتي بالوقت هذا احسن يعني وقت كافي لمبتدئ يعمل بالبرنامج يمين ويسار لحد يرجعه لوضعه الطبيعي يعني ويعني انت راح تدفع $ مقابل شغله مثل هذي

عن نفسي اول مره اشوف مبرمج عربي يدفع $ لحماية برنامجه

الكل شغال على المجاني فقط

#18
اقتباس
عن نفسي اول مره اشوف مبرمج عربي يدفع $ لحماية برنامجه
صحيح!

إلا أنني أعرف مبرمج عربي دفع $ مقابل IconSet

وشخصيا أنا أفضل التخصص «أعطي الخباز خبزه ولو أكل نصه»

#19

سلام عليكم ......... شكرا لكل من شارك في هذا الموضوع

قاطعوا البضائع الأمريكية والدنمركية لنصرة قضية شعبنا المضطهد

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…