Advertisement
Guest User

unCoder - Api Hooking

a guest
Oct 27th, 2012
368
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.36 KB | None | 0 0
  1. #include <windows.h>
  2. #include <TlHelp32.h>
  3.  
  4. typedef HINSTANCE (*fpLoadLibrary)(char*);
  5.  
  6. int main()
  7. {
  8.  
  9.  
  10.    
  11.     HANDLE hProc; // سيحمل هاندل العملية
  12.     LPVOID paramAddr; // سيحمل بآرميتر الدالة المحقونة أي [ إسم المكتبة ]
  13.     HINSTANCE hDll; // سيحمل ادرس المكتبة اللتي تحتوي على الدالة
  14.     DWORD id; // سيحمل معرف العملية
  15.  
  16.  
  17.              
  18.     HANDLE hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS,0); // ننشئ سنىب شوت من العمليات اللتي تعمل بالجهاز
  19.  
  20.     PROCESSENTRY32 PE32;
  21.     PE32.dwSize = sizeof(PROCESSENTRY32);
  22.  
  23.     if(!Process32First(hSnapShot,&PE32)) // نتحقق من صحة السناب شوت
  24.         return 0;
  25.  
  26.     while(Process32Next(hSnapShot,&PE32)) // حلقة يتم فيهآ في كل دورة ادخال معلومات العملية التالية في PE32
  27.     {
  28.  
  29.         if (strcmp("Vic.exe",PE32.szExeFile)==0) // التحقق من إذآ كان اسم العملية الحالية = العملية المطلوب الحقن فيها
  30.         {
  31.  
  32.     id = PE32.th32ProcessID; // وضع معرف العملية في المتغير
  33.  
  34.  
  35.     hDll = LoadLibrary("KERNEL32");  // وضع ادرس المكتبة في المتغير
  36.  
  37.     fpLoadLibrary LoadLibraryAddr = (fpLoadLibrary)GetProcAddress(hDll, "LoadLibraryA"); // جلب ادرس دالة تحميل مكتبة لكي نحقنه في العملية المطلوبة
  38.  
  39.     char* dll_path = "C:\\InjMe.dll"; // مسار المكتبة وهو البارميتر لدالة تحميل مكتبة
  40.  
  41.     hProc = OpenProcess(PROCESS_ALL_ACCESS, false, id); // جلب مقبض العملية
  42.  
  43.         // عمل مساحة في ذآكرة العملية لكي نكتب فيها البارميتر أي مسار المكتبة      
  44.     paramAddr = VirtualAllocEx(hProc, 0, strlen(dll_path)+1, MEM_COMMIT, PAGE_READWRITE); // يرجع لنا ادرس بداية المساحة
  45.  
  46.     // نكتب البارميتر في المساحة المفرغة
  47.     WriteProcessMemory(hProc, paramAddr, dll_path, strlen(dll_path)+1, NULL);
  48.  
  49.     // حقن دالة تحميل مكتبة في العملية المطلوبة
  50.     CreateRemoteThread(hProc, 0, 0, (LPTHREAD_START_ROUTINE)LoadLibraryAddr, paramAddr, 0, 0);
  51.  
  52.     // نغلق مقبض العملية
  53.     CloseHandle(hProc);
  54.         }
  55.  
  56.     }
  57.  
  58.     return 0;
  59.  
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement