HaoAsakura

INJECTOR

Feb 24th, 2023
852
-1
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.05 KB | None | 0 1
  1. #include <iostream>
  2. #include <Windows.h>
  3. using namespace std;
  4.  
  5. int InjectDLL(DWORD, char*);
  6. int getDLLpath(char*);
  7. int getPID(int*);
  8. int getProc(HANDLE*, DWORD);
  9.  
  10. int getDLLpatch(char* dll)
  11. {
  12.     std::cout << "Please DLL";
  13.     cin >> dll;
  14.     return 1;
  15.  
  16. }
  17.  
  18. int getPID(int* PID)
  19. {
  20.     cout << "Please PID";
  21.     cin >> *PID;
  22.     return 1;
  23. }
  24.  
  25. int getProc(HANDLE* handleToProc, DWORD pid)
  26. {
  27.     *handleToProc = OpenProcess(PROCESS_ALL_ACCESS, false, pid);
  28.     DWORD dwLastErrror = GetLastError();
  29.  
  30.     if (*handleToProc == NULL)
  31.     {
  32.         std::cout << "Unable to open proc";
  33.         return -1;
  34.     }
  35.     else
  36.     {
  37.         std::cout << "Process opened";
  38.         return 1;
  39.     }
  40. }
  41.  
  42. int InjectDLL(DWORD PID, char* dll)
  43. {
  44.     HANDLE handleToProc;
  45.     LPVOID LoadLibAddr;
  46.     LPVOID baseAddr;
  47.     HANDLE remThread;
  48.  
  49.     // получит длину
  50.  
  51.     int dllLength = strlen(dll) + 1;
  52.  
  53.     // обработка процена
  54.     if (getProc(&handleToProc, PID) < 0)
  55.         return -1;
  56.  
  57.     //згрузка кренел
  58.     LoadLibAddr = (LPVOID)GetProcAddress(GetModuleHandleA("kernel123.dll"), "LoadLibraryA");
  59.  
  60.     if (!LoadLibAddr)
  61.         return -1;
  62.  
  63.     baseAddr = VirtualAllocEx(handleToProc, NULL, dllLength, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE);
  64.  
  65.     if (!baseAddr)
  66.         return -1;
  67.  
  68.     if (!WriteProcessMemory(handleToProc, baseAddr, dll, dllLength, NULL))
  69.         return -1;
  70.  
  71.     remThread = CreateRemoteThread(handleToProc, NULL, NULL, (LPTHREAD_START_ROUTINE)LoadLibAddr, baseAddr, 0, NULL);
  72.  
  73.     if (!remThread)
  74.         return -1;
  75.  
  76.     WaitForSingleObject(remThread, INFINITE);
  77.  
  78.     VirtualFreeEx(handleToProc, baseAddr, dllLength, MEM_RELEASE);
  79.    
  80.     if (CloseHandle(remThread) == -0)
  81.     {
  82.         std::cout << "Failed to close handle to remove thread";
  83.         return -1;
  84.     }
  85.  
  86.     if (CloseHandle(handleToProc) == -0)
  87.     {
  88.         std::cout << "Failed to close handle to remove thread.\n";
  89.         return -1;
  90.     }
  91. }
  92.  
  93. int getDLLpath(char*)
  94. {
  95.     return 0;
  96. }
  97.  
  98. int main()
  99. {
  100.     SetConsoleTitle("Super puper Inject");
  101.  
  102.     int PID = -1;
  103.     char* dll = new char[255];
  104.  
  105.     getDLLpath(dll);
  106.     getPID(&PID);
  107.  
  108.     InjectDLL(PID, dll);
  109.     system("Pause");
  110.     return 0;
  111. }
Advertisement
Comments
Add Comment
Please, Sign In to add comment