Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <windows.h>
- #include <TlHelp32.h>
- typedef HINSTANCE (*fpLoadLibrary)(char*);
- int main()
- {
- HANDLE hProc; // سيحمل هاندل العملية
- LPVOID paramAddr; // سيحمل بآرميتر الدالة المحقونة أي [ إسم المكتبة ]
- HINSTANCE hDll; // سيحمل ادرس المكتبة اللتي تحتوي على الدالة
- DWORD id; // سيحمل معرف العملية
- HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); // ننشئ سنىب شوت من العمليات اللتي تعمل بالجهاز
- PROCESSENTRY32 PE32;
- PE32.dwSize = sizeof(PROCESSENTRY32);
- if(!Process32First(hSnapShot,&PE32)) // نتحقق من صحة السناب شوت
- return 0;
- while(Process32Next(hSnapShot,&PE32)) // حلقة يتم فيهآ في كل دورة ادخال معلومات العملية التالية في PE32
- {
- if (strcmp("Vic.exe",PE32.szExeFile)==0) // التحقق من إذآ كان اسم العملية الحالية = العملية المطلوب الحقن فيها
- {
- id = PE32.th32ProcessID; // وضع معرف العملية في المتغير
- hDll = LoadLibrary("KERNEL32"); // وضع ادرس المكتبة في المتغير
- fpLoadLibrary LoadLibraryAddr = (fpLoadLibrary)GetProcAddress(hDll, "LoadLibraryA"); // جلب ادرس دالة تحميل مكتبة لكي نحقنه في العملية المطلوبة
- char* dll_path = "C:\\InjMe.dll"; // مسار المكتبة وهو البارميتر لدالة تحميل مكتبة
- hProc = OpenProcess(PROCESS_ALL_ACCESS, false, id); // جلب مقبض العملية
- // عمل مساحة في ذآكرة العملية لكي نكتب فيها البارميتر أي مسار المكتبة
- paramAddr = VirtualAllocEx(hProc, 0, strlen(dll_path)+1, MEM_COMMIT, PAGE_READWRITE); // يرجع لنا ادرس بداية المساحة
- // نكتب البارميتر في المساحة المفرغة
- WriteProcessMemory(hProc, paramAddr, dll_path, strlen(dll_path)+1, NULL);
- // حقن دالة تحميل مكتبة في العملية المطلوبة
- CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryAddr, paramAddr, 0, 0);
- // نغلق مقبض العملية
- CloseHandle(hProc);
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement