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

اضافة برنامج في برنامج آخر ؟؟

مغلقرائج
بدأه الاحتراف في 19 نوفمبر 2004 · 52 رد · 4,273 مشاهدة · في لغة Assembly لأنظمة 16, 32, 64 بت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ..

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

الان الموضوع أكثر تعقيد ( قد يكون بسيطاً ) .. حيث انني لدي برنامجين اثنين واريد ان ادمج احدهما في الآخر ، بحيث يتم تنفيذ الاول ومن ثم الانتقال الى الثاني !!

أسئلتي هذه لأنني أعمل على مشروع شخصي لحماية الملفات التنفيذية .. فقط لتفادي سوء الفهم من البعض ;)

يوجد في المرفقات ملفان :

الاول وهو Normal وهو الملف الطبيعي الذي اريد ان ادمج البرنامجي الثاني معه .

الثاني وهو PW وهو الملف الي اريد ان ادمجه مع ملف Normal .

بحيث عند تشغيل البرنامج النهائي ، يبدأ تنفيذ البرنامج PW والذي سيظهر شاشة تطلب كلمة المرور ، فإن ادخل المستخدم كلمة JAAS انتقل الى برنامج Normal وإلا فلن يتم تشغيل البرنامج Normal ..

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

تحياتي ..

Exes.zip

#2

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

في البداية : المشروع الذي تحاول تطويرة فعلا مشروع مثير وهو حماية الملفات التنفيذية ولة مستقبل , ولكن هل إطلعت على أفكار للحماية في برامج أخرى ؟!

لكي تستفيد منها ,,, المهم أني أنصحك بمتابعة هذا الموضوع ولا تيأس لأنة من المواضيع التي تحتاج أعصاب هادئة وصبر ,,

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

والسبب : لكي تكون معلومات البرنامجين في مكان واحد يسهل السيطرة عليهم 100%

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

-

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#3

فعلا اخي هذا موضوع رائع ، وعلى فكرة فأنا أبحث في هذا الموضوع منذ أشهر ، ولكن بطريقة ثانية ... كتالي :

اولا : تشفير البرنامج المراد حمايته بواسطة اي نظام تشفير AES او Rijndael أو ... ، والتشفير يجب أن يكون لمنطقة الكود فقط ، وتخزين اسمه كملف عادي وليس تنفيذي مثل Do.Dat .

ثانياً : تصميم برنامج يعمل كـ Loader وهو الذي يقوم بالتحقق من الملف التنفيذي ومن ثم تحميله للذاكرة عن طريق CreateProcess ولكن نستخدم Create_Suspended وذلك حتى لا يتم تنفيذ البرنامج قبل عملية فك تشفيره في الذاكرة وإلا فستظهر رسالة خطاً في البرنامج .

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

رابعاً : تكلمة تشغيل الملف بعد فك تشفيره بواسطة Resume .

-----------

هذه الطريقة كنت اعمل على تطويرها ، ولكني توقفت عند نقطة الحصول على منطقة الكود من الذاكرة ، وكيفية الحصول على بياناتها ،...

-----------

نقطة اخرى ، وموضوع آخر يطرح للنقاش ولكن بشكل منفصل وهو أن هذه الطريقة لا تحتوي على Anti-Dump .. وعندما بحثت وسألت عن موضوع Anti-Dump قيل انه يقوم فقط بفك تشفير المنطقة المستخدمة من البرنامج واعادة تشفير المناطق غير المستخدمة !!

طبعا السؤال هو : كيف تحديد المناطق المستخدمة من البرنامج ؟؟ وكيف اعادة تشفيرها ؟؟

-----------

على كل هذا الموضوع مهم جدا وبحاجة الى مزيد من التركيز والبحث

ولكني لاحظت انشغال الأخ JAAS خلال اليومين الماضيين فأنا لم اصادفه في المنتدى !

تحياتي ، على أمل مشاركة الجميع

#4

مرحبا ,,,

سنبدأ في موضوعك خطوة ,, خطوة

أولا : ربط البرامج ؟!

هذا الكود عبارة عن برنامج يقوم بكتابة برنامج صغير في مقدمة الملف Normal.exe

وبمجرد تشغيل البرنامج Normal فإنة يقوم بتشغيل PW.exe

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

البرنامج الذي سيقوم بالدمج وهو pCexe وبعد ذلك قم بتشغيل Normal.exe ولاحظ !

الطريقة :

int main(int argc, char* argv[])
{

HANDLE hexe=(HANDLE)-1; 
HMODULE hKerDll=NULL;
DWORD* addr=NULL;
DWORD**  adddt=&addr;
BYTE dataw[MAX_PATH];
BYTE* ppch=dataw;

DWORD cbb=0;

ZeroMemory(dataw,100);

hKerDll=LoadLibrary (_T("Kernel32.dll"));
if(!hKerDll)
return 0;

hexe=CreateFile ("Normal.exe",GENERIC_READ|GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,
  	(LPSECURITY_ATTRIBUTES )NULL,OPEN_EXISTING,0,NULL);

if(hexe==(HANDLE)-1)
{
MessageBox (NULL,"غير موجود  Normal.exe الملف","Error",MB_OK);
return 0;
}

/*
يبدأ البرنامج بالبحث عن عناوين لدوال تشغيل البرنامج
WinExec  : مثل الدالة 
Normal ليتم حقنها في الملف
  */

addr=(DWORD*)GetProcAddress (hKerDll,_T("WinExec"));
if(!addr)
return 0;

/*
Normal الآن سنبدأ في كتابة برنامج صغير في مقدمة الملف 
يقوم البرنامج بإستدعاء برنامج آخر ليقوم بتنفيذة , مثل عمل الفايروسات

  البرنامج الذي سنكتبة بلغة الإسمبلي هو
000002A2   6A 01            PUSH 1;;SW_SHOWNORMAL
000002A4   68 72024000      PUSH 400272;; "PW"

000002A9   B8 C684E677      MOV EAX,77E684C6
000002AE   FFD0             CALL EAX;;WinExec

000002B0   E9 730E0000      JMP 00001128; عودة إلى البرنامج

هذا البرنامج عبارة عن إستخدام الأمر التالي
 WinExec (SW_SHOWNORMAL,"PW.exe");

  */


////// إضافة معلومات الملف

SetFilePointer (hexe,0x272,NULL,FILE_BEGIN);
WriteFile (hexe,_T("PW.exe"),6,&cbb,NULL);

/////////  كتابة الكود في مقدمة الملف
SetFilePointer (hexe,0x2A2,NULL,FILE_BEGIN);
dataw[0]=0x6A;
dataw[1]=0x01;
dataw[2]=0x68;
dataw[3]=0x72;
dataw[4]=0x02;
dataw[5]=0x40;
dataw[6]=0x00;
dataw[7]=0xB8;
ppch=ppch+8;
memcpy(ppch,(void*)(DWORD**)adddt,4); //copy address

dataw[12]=0xFF;
dataw[13]=0xD0;

dataw[14]=0xE9;
dataw[15]=0x73;
dataw[16]=0x0E;
dataw[17]=0x00;
dataw[18]=0x00;

WriteFile (hexe,(LPCVOID)dataw,19,&cbb,NULL);

///// تغيير عنوان بداية البرنامج
ZeroMemory((PVOID)dataw,20);
SetFilePointer (hexe,0xE0,NULL,FILE_BEGIN);

dataw[0]=0xA2;
dataw[1]=0x02;
WriteFile (hexe,(LPCVOID)dataw,2,&cbb,NULL);
////

CloseHandle (hexe);
FreeLibrary (hKerDll);

printf("xxxxxx End xxxxxxx\n");

MessageBox (NULL,"تمت العملية بنجاح !",NULL,MB_OK);
	return 0;
}

وبهذا نكون قد دمجنا البرنامجين ,, ولكن ؟!

قلت أنك تريد البرنامج الأول يتأكد من كلمة المرور إذا كانت صحيحة يقوم بالرجوع للبرنامج

أنا جربت الطريقة , وصارت نكتة !

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

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

بمعنى أنة يلزمنا كتابة في القرص أو الريجستري للتحقق من أن المستخدم قام بإدخال

الكلمة الصحيحة مرة واحدة ,,,

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

وأي مشكلة تتعرض لها إكتبها في المنتدى لمشاركة الأفكار ,,,

المهم أني سأكون متفرغ لهذا الموضوع بعد يومين تقريبا ً ,, لإنشغالي بكتابة بعض المواضيع عن برمجة الأنظمة ,,,

وبالتوفيق ,,

-

pCexe.zip

تم تعديل هذه المشاركة بواسطة jaas في 21 نوفمبر 2004 في 02:03

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#5

شكرا أخي ,,,

لقد قمت بتجربة المثال المرفق ، وأشكرك أخي على اهتمامك ووجدت التالي :

1. مثلما ذكرت أنت ، المطلوب ان يتم تشغيل البرنامج الثاني بعد ادخال كلمة المرور الصحيحة في البرنامج الاول لا ان يعملا سوياً وكأنهما برنامجين منفصلين .

2. هذا المثال يتطلب وجود ملف خارجي اسمه PW.EXE !! أي انك قمت بعمل رابط لتشغيل هذا الملف من الملف Normal.exe ... وسؤالي : هل نستطيع دمجهما في ملف واحد بحيث يحتوي على البرنامجين معاً دون ان نحتاج لوجود ملف آخر ؟؟

على كل ، يا حبذا لو تزودنا انت بأفكارك طالما لديك القدرة لانشاء مثل هذه البرمجيات ;)

بمعنى ، أنني أريد ان قيد تشغيل برنامج معين بتوفر شرط معين ، قد يكون تواجد ملف ، أو قد يكون سيريال ، او وجود سيدي ......

هكذا تكون الصورة اوضح وعلى الجميع المشاركة في تكوين فكرة

نحن بانتظارك أخي JAAS لان هذا المشروع بصراحة بحاجة لمتابعة مستمرة ومكثفة ..

تحياتي

تم تعديل هذه المشاركة بواسطة الاحتراف في 21 نوفمبر 2004 في 12:56

#6

السلام عليكم,

هو حقيقة موضوع مهم .

إذا كنا نهتم فقط بالتطبيق كما جاء هنا يعني نعطي كلمة مرورر قبل أن نفتح أي ملف يمكن أن نقوم بهذا في مجال FileSystem في الحلقة 0 وقد قمت بهذا في وقت ماض في نظام الوندوز 98 والطريقة سهلة في مبدئها.

والطريقة هنا أن نضع Hook ل FileSystem باستعمال الخدمة InstallFileSystemApiHook وفي هذا الهوك نعمل ما نريده مثلا نتأكد إن كان الملف المفتوح من نوع EXE فإذا كان كذلك نطلب كلمة المرور فإذا كانت صحيحة نطلب الخدمة الأصلية التي ستقوم بتشغيل الملف وفي الحالة الأخرى نرجع دون أن يشتغل شيء وفي هذه الحالة ببرنامج واحد يقوم أو يفيد لجميع البرامج .

إلى اللقاء.

#7

السلام عليكم ..

هل من الممكن ان تقدم لنا مثلاً ؟؟

شكراً

#8

السلام عليكم,

سأحاول كتابة مثال وسأضعه هنا غدا أو بعد غد حسب الوقت.

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

إلى اللقاء.

#9

مرحبا ,,,

ما دام chik دخل في الموضوع أعتبرة إنحل !!

توجد طرق كثيرة لجعلة ملف واحد ... منها

أن تضع أحد الملفات في ملف المصادر للبرنامج الآخر < وهذة الفكرة جربتها في برنامج التثبيت لشريط أدوات الموقع ?! وبصراحة حققت نجاح في دمج البرامج

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

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

هذة فكرة وتوجد أفكار أخرى ,,,, سأحاول كتابتها في مثال بالتأكيد تحتاج وقت

المهم أنك تستمر في البحث وتكتب آخر التطورات التي تصل إليها

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#10

السلام عليكم ..

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

فكرة ان توضع ملف ضمن مصادر ملف آخر تبدو فكرة جيدة ...

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

بانتظار امثلتكم وافكاركم .. وسأحاول البحث انا يضاً

تحياتي

#11

السلام عليكم,

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

المشروع يحتوي على برنامجين . المجلد ChangeRegistry Psw هذا سيتكلف بتغيير المفتاح في الرجستر وهناك أيضا Restore لكي نعيد حالة الرجستر إلى حالتها الأصلية. حين ننقر على Set Registry البرنامج سيغير مفتاح الرجستر ليدل على برنامجنا والموجود في المجلد Reg Psw فبما أنني لم أعط المسار الكامل للبرنامج فيجب إذن وضعه مثلا في مسار الوندوز أو أي مسار يكون في Path والسهل نقله في مسار الوندوز. وهكذا حين نريد تشغيل أي EXE سيشتغل البرنامج RegPsw وسيطلب منا كلمة المرور وهي CHIK بالأحرف الكبيرة وستلاحظون كيف يشتغل البرنامج.

إذا كانت فيه أي ملاحظات المرجو نقلها هنا.

المفتاح الذي نغيره في الرجستري يمكن التعرف عليه وسط كود البرنامج.

فيما يخص الطريقة الأخرى والتي تعتمد على طريقة VXD في الوندوز 98 سأقوم إن شاء الله بعمل مثال لذلك في أقرب الأوقات ونطلب الله أن يعيننا.

إلى اللقاء.

Exe_Psw.zip

#12

السلام عليكم ..

لقد جربت برنامجك .. ولولا رحمة ربك لما استطعت تشغيل أي شيء ..

الاختلاف قد يكون ان ويندوز 98 به تعليمة خاصة بالـ Path في ملف الـ Autoexec .. اي ان المسار معروف .. بينما في الويندوز اكس بي لم اجد الدليل المناسب .. قمت بوضعه في مجلد Windows و System32 و مجلد الداتا .. ومع ذلك لم ينجح .. والمشكلة انه صار يعطيني خلل عند تشغيل اي ملف exe حتى الملف الذي يقوم باعادة الاعدادات والريجستري لم يعمل :( ...

وأثناء بحثي في الانترنت عن حل ، تبين أن هنالك فايروسات عديدة تستخدم هذا الاسلوب :) .. فقمت بتحميل ملف يعيد الاعدادات الي ما كانت عليه ...

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

طبعا أشكر لك اهتمامك .. ولي هنا تعليق :

ما يهمنا هو حماية ملف EXE بعينه وليس جميع الملفات التشغيلية ، كما انه يجب ان ندمج ملف التحقق بالملف التنفيذي لا أن نبقيه مستقلا ..

اشكرك أخي لاهتمام .. وبانتظار افكارك وامثلتك

تحياتي

#13

السلام عليكم,

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

ولتغيير المسار في الرجستري إما أن نغير في الكود ويجب في هذه الحالة أن لا ننسى %1 - الواحد على اليمين - لأن هذا هو الذي يعطينا Command Line .فمثلا لو نفترض أن الملف RegPsw.exe موجود في المسار C:\MyDir\RegPsw.exe فيجب أن نكتب المسار كما يلي :

C:\MyDir\RegPsw.exe %1

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

"%1" %*

وإذا انقلبت الكتاب فهي كما يلي من اليسار لإلى اليمين :

شرطتان علامة النسبة المئوية واحد شرطتان فراغ نسبة مئوية نجمة.

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

إلى اللقاء.

#14

السلام عليكم ..

عمل جميل أخي .. هي فعلا عملت معي ولكن لم تعثر على الملف لعدم وجود الدليل الكامل للملف ..

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

لتبسيط الامور وجعل الامر مباشر :

أريد التالي ان أمكن :

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

لقد ذكر الاخ JAAS في شروحاته مكان وجود هذه العناوين في تروسية الملف التنفيذي ولكن للأسف لم تنجح معي عملية الوصول اليها ..

ومن ثم سأحاول انا ان اتابع موضوع الحماية عن طريق Loader ...

شاكراً لكم الاهتمام

#15

السلام عليكم,

كما قلت مسبقا يكفي أن نعطي المسار الكامل للبرنامج في الرجستري ونزيد في آخره 1 % ويمكن أن ندخل هذا يدويا في برنامج Regedit .

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

/index.ph...pic=50027&st=15

إلى اللقاء.

#16

بالعكس أخي ( الإحتراف ) قرائة ترويسة الملف التنفيذي و إستخراج المعلومات

مثل قرائة ملف نصي وإستخراج الكلمات ,,, الشغلة بسيطة

إقرأ أول 512 بايت من الملف التنفيذي ,, وبعد ذلك إبحث عن الحرفين PE

وعندما تجد الحرفين ,, إستخرج كل المعلومات وبنفس الترتيب الموضح في موضوع

برمجة المترجمات ,,, سؤحاول كتابتها في مثال

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#17

شكرا لكم

بانتظار مثالك أخي JAAS .

أخي chik ، فلم يعمل الرابط !!

تحياتي

#18

السلام عليكم,

أولا لا أعلم لماذا لا يشتغل الرابط فحين وضعته في ذلك الوقت كان شغالا والآن لا أنتذكر الموقع الأول وسأحاول البحث عنه رغم أن التذكير صعب شيئ ما.

في الأول كنت أضن أننا نريد أن نعمل كلمة المرور على كل الملفات ولكن الآن فهمت أن المقصود هو عمل حماية مثل الحمايات التي توجد في الأسواق.

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

والطريقة البدائية تكون في غالب الأحيان كما يلي ويكفي نطويرها حسب الحماية. نقرأ المعلومات من الترويسة حتى نعرف ما هو طول البرنامج في الذاكرة وكم عدد القطاعات Sections وما إلى ذلك. وبعد هذا نقوم بحماية الملف وهنا تبقى حسب كل واحد طريقة أو ألغوريثم الحماية التي يريدها وبعد هذا نضيف قطعة Section إلى البرنامج وفي هذه القطعة طبعا سنكتب الكود الذي سيفك حماية البرنامج وبعد ما ينتهي يذهب |إلى نقطة بداية البرنامج الأصلية. وبالطبع حين نزيد مقاطعتنا يجب أن نغير ما يلزم تغييره في الترويسة مثل عدد المقاطعات وطول البرنامج في الذاكرة ونقطة بداية البرنامج وغير ذلك.

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

في الأوفسيت 3C - الأرقام كلها هيكس - سيكون عندنا أوفسيت Pe Header . وحين ننتقل إلى هذا الأوفسيت سيكون هو البداية وهو يحتوي على توقيع معرف بالأحرف PE . ولنعتبر هذا الأوفسيت قيمته س فبعض المعطيات تكون كما يلي :

عدد القطاعات تكون في س+6

نقطة بداية البرنامج تكون في س+28

Image Base أو بداية الذاكرة التي يبأ فيها البرنامج في س+34

القطاعات تبدأ في س+ F8 ونعلم أن طول كل مقاطعة هو 28

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

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

وللإضافة هناك أيضا ترويسات فيما يخص الملفات الأخرى مثل ملف الصور أو الفيديو أو الموسيقى أو غيرها وهذه كل مرة تعطينا كل ما يلزم للتعرف على الملف.

إلى اللقاء.

#19

مرحبا ,,,,,,,,

هذا المثال لدمج البرنامجين في ملف المصادر ,, وهو قابل للتطوير

-

ResEXE.zip

http://www.jaascois.com

*************************************************

مجموعة مواضيع - إحتراف البرمجة -

ّ~~~~~~~~~~~~~~~~~~~~~~

البرمجة المتقدمة & الهندسة العكسية & برمجة وأمن الأنظمة

/index.php?showtopic=45002

آخر المواضيع :

+- تحليل جرائم الكمبيوتر -+

أنظمة اليونكس(Solaris,HP, AIX,SCO)وانواع المعالجات

ثغرة SMS لأجهزة الجوال Siemens 3568i !

أخطاء وثغرات البرامج العربية !!!

سلسلة مواضيع - أمن وحماية مواقع الويب -

E البرمجة المتقدمة X للملفات التنفيذية E

سلسلة مواضيع ثغرات الأنظمة وإختراق الأجهزة

**************************************************

<span style='font-size:14pt;line-height:100%'>الإرادة تحـــقق السيـــادة</span>

**************************************************

#20

فعلاً عاجز عن شكركما ...

سأحول تطبيق الدروس واخباركم بالنتائج ..

المهم ، اذا حصلتم على اي افكار او طرق تساهم في ايجاد طريقة جيدة .. فلا تبخلوا علينا .. :)

تحياتي

#21

السلام عليكم,

ربما الآن أكون قد فهمت المقصود وسأعطي هنا مثالا لحماية برنامج EXE على طريقة بعض البرامج مثل Asprotect المذكور هنا. فالطريقة الذي أعطيتها هنا قد تكون مثل البرنامج المذكور ويبقى فقط أن نغير ألغوريثم الحماية وربما زيادة الضغط عليه لأني في المثال قد استعملت أبسط التشفير وهو عمل NOT على كل بايت في قطعة Text.

وطريقة هذا المثال كما يلي :

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

عندما نشغل البرنامج ExeProtect ستفتح لنا نافذة فتح الملفات وسنختار البرنامج المستهدف مثلا Notepad.exe وسيقوم البرنامج بخلق ملف جديد يحمل نفس الإسم زائد Chik مثل Notepad_Chik.exe والبرنامج الأصلي سيبقى بدون تغيير .وكما ذكرت فإن قطعة text هنا ستكون مشفرة ب NOT . ويمكن دائما أن نلاحظ الفرق بين الملفين في برنامج هيكس أو نلاحظ مثلا الفرق بين البرنامجين باستعمال برامج تعطينا تعاريف عن PeHeader وسنلاحظ مثلا الفرق في أن الثاني فيه قطعة زائدة ونقطة بداية البرنامج قد تغيرت.

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

لقد جربت البرنامج على عديد من الملفات واشتغل بنسبة أكثر من 95 ميه ولم يشتغل على بعض الملفات المحمية مسبقا أو التي تقوم بفحص CheckSum وهذا طبيعي لأننا قمنا بتغييرات فيه وعلى برنامج الآلة الحاسبة وقد تكون لنا رجعة في هذه الحالات لأني كتبت البرنامج بعجالة وحتى الكود يمكن أن ننقيه من أجل Optimization كبيرة لكن هذا ليس إلا التجربة الأولى.

ملاحظة : عندما نشغل برنامجا نتيجة هذا وإذا كان لدينا برنامج لحماية الفايروسات قد يأخذ البرنامج شيء من الوقت قبل الإشتغال لأن برنامج حماية الفايروس قد يشكك في هذه الوضعية ويحاول فك التشفير ليراقبه كما يقع مع الملفات المحمية بواسطة البرامج التجارية.

هذه مبادرة أولى والموضوع مفتوح للنقاش.

إلى اللقاء.

ExeProtect.zip

#22

:) :) :)

ما شاء الله

روعة أخي .. والله سرني جدا مثالك ;)

لقد جربته ونجح عندي 100% على جميع البرامج التي جربتها عليه .

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

شكرا أخي على هذا المجهود

تحياتي

#23

السلام عليكم ..

ممكن طلب صغير !!

هل من الممكن أن تكتب هذا المثال بلغة السي حتى استطيع فهمه بشكل أكبر ؟؟

وارفاق السورس طبعا ;)

وشكراً .. اعلم اني اثقلت عليكم بطلباتي .. سامحوني

تحياتي

#24

السلام عليكم,

سأحاول ترجمة البرنامج إلى لغة س++ . وكما دكرت ليشتغل البرنامج يجب على البرنامج المستهدف أن يحتوي على قطعة Imported Functiions وأن لا يكون لها دخلا في قطعة الكود لأن هدا الأخير سنقوم بتغييره وطبعا إدا كان شيء ما من Imported في هده القطعة سيتم تغييرها مما يِدي لعدم شغل البرنامج. وبعد فحص برنامج الآلة الحاسبة لوندوز اتضح أن المشكل هو من هدا القبيل.

في انتضار أي ملاحضات ومن يريد تطوير ألغوريثم للتشفير.

إلى اللقاء.

#25

السلام عليكم,

أقدم لكم ترجمة البرنامج السابق إلى لغة س++.

إلى اللقاء.

ExeProtect_Cpp.ZIP

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

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