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

[ تمت الإجابة ]كيفية حماية برنامجي من برامج الديبغر؟؟

مغلق
بدأه الاخير زمانه في 29 أغسطس 2009 · 15 رد · 3,541 مشاهدة · في أرشيف قسم Windows APIs
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

اريد حماية برنامجي من برامج الديبغر ،

وجدت بعض المصادر في النت ، في الكود بروجكت وغيره.

قرأت هناك عدة طرق ،

مثلا طريقة IsDebuggerPresent

هذا الكود الخاص بها

if (IsDebuggerPresent()) {
MessageBox(NULL, L"Debugger Detected Via
IsDebuggerPresent", L"Debugger Detected", MB_OK);
} else {
MessageBox(NULL, L"No Debugger Detected", L"No
Debugger", MB_OK);
}

الذي لم افهمه الان ،، اين اكتب هذا الجزء من الكود ،،

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

الكود الذي في الاعلى في أي جزء اكتبه في برنامجي لكي يتنفذ عند تحميل برنامجي الى احد برامج الهندسة العكسية؟

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#2

بشكل عام لا يمكن حماية اى برنامج من الـ Debugging. :blush:

و لكن لتجرب ذلك الكود فقط ضعه فى اول الداله الـ Entry-Point الخاصه بالبرنامج.

و الله ولى التوفيق

مدونتي: C++ Tips and Tricks

#3

شكرا اخي على الرد ،، جزاك الله خيرا.

نفذت الامر ضمن لغات الدوت نت و نجح الامر ،،

لكن مع ال VS6 ظهر لي خطأ ،

من ال msdn

اقتباس
To compile an application that uses this function, define the _WIN32_WINNT macro as 0x0400 or later

صراحة لا اعرف كيف افعل هذا الامر!!

اذا كانت لديك معلومات اخي ،، ما هي افضل الطرق بما انه لا توجد طريقة ناجحة 100% وجميعها يمكن تجاوزها ،،

ما هي افضل طريقة و اقواها؟؟

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#4

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

طريقة أخرى :

post-51148-1251619739_thumb.png

لكن أي Anti-Virus يستخدم أي من طرق Heuristics سوف يصرخ كالأطفال :P

post-51148-1251619768_thumb.png

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

اقتباس
To compile an application that uses this function, define the _WIN32_WINNT macro as 0x0400 or later

عرف الثابت _WIN32_WINNT في بداية البرنامج ،، في سي++ تكون :

#define _WIN32_WINNT 0x0400

سأحاول أن أجرب طريقة NtQueryInformationProcess في اضافة Phant0m في Olly ،، ربما تفلح :) ..

بالتوفيق ،

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#5

شكرا لك اخي وجدي

عذرا لكني لم افهم هذه

اقتباس
سأحاول أن أجرب طريقة NtQueryInformationProcess في اضافة Phant0m في Olly ،، ربما تفلح

جزاك الله خيرا على الرد

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#6

طيب ماذا لو اردت ان اطول البرنامج ،،

يعني الكود الذي في الاعلى اكتبه داخل برنامجي للحماية،،

ماذا لو كان البرنامج بالشكل التالي،،

يقوم المستخدم بأختيار اي ملف exe لتتم حمايته بواحدة من الطرق التي في الاعلى،،

يعني يتوجب علي كتابة الكود الذي في الاعلى داخل البرنامج المختار.

هل من افكار؟

لا اعرف هنا دالة CreateRemoteThread تفي بالغرض؟

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#7

:ty:

#8

طرق الAnti-Debugging كثيرة ومنها ما هو مخصص لمنقح معين ومنها ما هو عام ،، أغلب دوال الAPI مثل IsDebuggerPresent تفحص عدة بايتات في الProcess Environment Block ويمكنك أن تقوم بذلك بشكل مباشر ،، كما المثال التالي :

post-51148-1251761696_thumb.png

بعد عمل ترجمة للمثال وتشغيله تحت أي منقح وليكن OllyDbg سوف يتم كشف المنقح والخروج مباشره من المنقح :

post-51148-1251761812_thumb.png

هذه أبسط طرق للكشف عن التنقيح ، وبالمقابل استخدم المنقح نفسه طرق معينة لتجاهل الخروج من البرنامج يعني Anti-anti debugging :) .. مثلا شاهد هذه النسخة من Olly تحتوي على العديد من الPlugins ولكل منها وظائف مختلفة .

post-51148-1251761981_thumb.png

الأن هناك Plugins قوي اسمه Phant0m قرأت عنها انها تكشف عن أغلب طرق كشف المنقح ،، لذلك ذكرت سأجرب طريقة NtQueryInformationProcess في هذا الPlugins والى الأن لم أجرب ذلك :) ..

بالنسبة للمثال في مشاركتي الأولى استخدام الدالة CheckRemoteDebuggerPresent وهي تقوم باستدعاء الدالة الNtQueryInformationProcess ، لذلك يمكنك استخدام هذه الدالة مباشره :

post-51148-1251762190_thumb.png

الطريف بالأمر أن الanti-vir لم يصرخ بعد استخدام تلك الدالة مع أنها هي التي تقوم بالفحص وليست CheckRemoteDebuggerPresent ..

بالتوفيق :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#9

اشكرك اخي وجدي على تواصلك.

اولا انا يظهر لي خطأ عند العمل على VC6

هذا هو الخطأ

error C2065: 'CheckRemoteDebuggerPresent' : undeclared identifier

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

#define _WIN32_WINNT 0x0400

عذرا اخي لكن ما هي النسخة التي تعمل عليها؟

سأجرب الامثلة التي ذكرتها بارك الله فيك.

انا لم اعمل كثيرا على Olly ولم اكن اعلم بأمر هذه الاضافات.

اريد ان اسألك اذا كانت لديك معلومات،،

ما هي اهم دالة تعتمد عليها برامج ال debuger في عمل هندسة عكسية و الحصول على الكود للبرنامج؟

انا اتتني فكرة انه لو عملت في برنامجي Hook على هذه الدالة و جعلتها تفشل ، بالنتيجة لن يستطيع برنامج الديبغر عمل هندسة عكسية لبرنامجي،،

حتى افكر في عمل kernel hook لكي يكون الامر اكثر حماية ،،

منطقيا اظن ان الفكرة ستنجح ، ربما :lol:

لكن المشكلة لا اعرف ما هي اهم الدوال التي يستعملها برنامج الديبغر لعمل هندسة عكسية؟

ربما يجب عمل هندسة عكسية لبرامج الهندسة العكسية :happy:

اشكرك مرة اخرى اخي وجدي

تم تعديل هذه المشاركة بواسطة الاخير زمانه في 1 سبتمبر 2009 في 04:47

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#10

أعتقد المشكلة في أن الثابت غير صحيح ،، غيره الى :

#define _WIN32_WINNT 0x0501

لكي يعمل في أنظمه 2000 وما فوق ،،

اذا أردت أن تتأكد من ذلك أذهب لملف الرأس Winbase.h في مسار الSDK وإبحث عن الدالة وستجد قبلها Conditional Macro يتحقق من أن القيمة المعينة معرفة أو لا قبل ان تستخدم الدالة ..

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

هذه الدوال :

CreateProcess

GetStartupInfo

ReadProcessMemory

WriteProcessMemory

WaitForDebugEvent

ContinueDebugEvent

CloseHandle

GetOpenFileNameA

ZeroMemory

GetThreadContext

SetThreadContext

DebugActiveProcess

وهي موجود في موضوع للأخ مراد في كتاب الهندسه العكسية الطبعة الثانية ، أول موضوع في الكتاب .

بالتوفيق أخي الكريم :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#11

اكرر شكري لك اخي الكريم ،، بارك الله فيك.

سأتأكد من تعريف المتغير،

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

فقط اخي لم تخبرني ما هي النسخة التي تستخدمها في الصور التي ارفقتها؟

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#12

CodeBlock (مجرد IDE بدون مترجم) ويجب ربطه مع أحد المترجمات مثل GCC أو Borland أو MS-VS++ ، قمت بربطه مع مترجم مايكرسوفت الذي يأتي مع الSDK (اصدار Windows Server 2008 وهو متوافق مع XP ) .

بالتوفيق :) .

http://informatic-ar.com منصة تعليمية عربية في علوم الحاسب والبرمجة

https://moalfat.com  للكتب الالكترونية والكورسات التعليمية

Everything we see now is just an engineering solution based on old science

#13
اقتباس
CodeBlock (مجرد IDE بدون مترجم) ويجب ربطه مع أحد المترجمات مثل GCC أو Borland أو MS-VS++ ، قمت بربطه مع مترجم مايكرسوفت الذي يأتي مع الSDK (اصدار Windows Server 2008 وهو متوافق مع XP ) .

لم اسمع بهذا الامر من قبل :blink:

اقتباس
وهي موجود في موضوع للأخ مراد في كتاب الهندسه العكسية الطبعة الثانية ، أول موضوع في الكتاب .

الله يبارك فيكك لا تعلم كم فادني هذا السطر ،، للتو انتهيت من قراءة الموضوع و لقد استفدت منه كثيرا ،، شكرا لك.

سؤال جديد واتمنى اني لا ازعجك،،

بما انك متعامل جيدا مع ال Olly على ما يبدو و لديك اطلاع على الاضافات في هذا البرنامج ،،

هو يجد شيء بخصوص دالة CreateProcess ؟؟

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

لكن الشيء الغريب اني خلال بحثي في النت عن طرق ال anti-debugger لم اجد شيء عن هذا الامر ،،

اخشى ان تكون الطريقة فاشلة :(

لكن في جميع الاحوال انا سأحاول ان اجربها خلال اليومين الجايين بأذن الله ،، يارب تنجح.

بالمناسبة لقد اعدت تعريف الثابت وتأكدت من الاسم من داخل الملف وللأسف نفس النتيجة ،،

سأجرب الامر من حاسبة ثانية ،، ربما هناك خلل ما في حاسبتي.

شكرا لك

اقتباس
CodeBlock (مجرد IDE بدون مترجم) ويجب ربطه مع أحد المترجمات مثل GCC أو Borland أو MS-VS++ ، قمت بربطه مع مترجم مايكرسوفت الذي يأتي مع الSDK (اصدار Windows Server 2008 وهو متوافق مع XP ) .

لم اسمع بهذا الامر من قبل :blink:

اقتباس
وهي موجود في موضوع للأخ مراد في كتاب الهندسه العكسية الطبعة الثانية ، أول موضوع في الكتاب .

الله يبارك فيكك لا تعلم كم فادني هذا السطر ،، للتو انتهيت من قراءة الموضوع و لقد استفدت منه كثيرا ،، شكرا لك.

سؤال جديد واتمنى اني لا ازعجك،،

بما انك متعامل جيدا مع ال Olly على ما يبدو و لديك اطلاع على الاضافات في هذا البرنامج ،،

هو يجد شيء بخصوص دالة CreateProcess ؟؟

اظن لو اني نجحت في عمل hook على هذه الدالة %E

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#14

اخي الاخير زمانه, لا تتعب نفسك كثيراً في هذا الأمر ففي النهاية هناك Plug-in في برنامج Olly يتخطى كل هذه الحمايات إطلع على الموضوعين التاليين:

كشف وجود المنقح بالدالة ZwQuerySystemInformation

Windows Anti-Debug Reference

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

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

#15

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

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

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

#16

اخي وجدي ،،

ممكن ترفع لي نسخة ال olly التي وضعت صورتها في احد ردودك و التي تحوي على ال Plug-in

/index.php/topic/264448-%D8%A7%D9%84%D8%A8%D8%AF%D8%A7%D9%8A%D8%A9-%D9%85%D8%B9-%D8%A7%D9%84%D8%A7%D9%86%D8%AF%D8%B1%D9%88%D9%8A%D8%AF/

 

اني وان كنت الاخير زمانه ---- لأتِ بما لم تستطعه الاوائلُ

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

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