emS-St1ks

Injector source code in 32 bit

Oct 8th, 2014
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.56 KB | None | 0 0
  1. /*----------------------------------------------------*/
  2. /* St1ks upgrade.*/
  3. /* by: 2014                                         */  
  4. /*----------------------------------------------------*/
  5. #include <iostream>
  6. #include <direct.h>
  7. #include <windows.h>
  8. #include <tlhelp32.h>
  9.  
  10. using namespace std;
  11.  
  12. char* GetCurrentDir()
  13. {
  14.     char* szRet = (char*)malloc(MAX_PATH);
  15.  
  16.     _getcwd(szRet, MAX_PATH);
  17.  
  18.     return szRet;
  19. }
  20.  
  21. LPCTSTR SzToLPCTSTR(char* szString)
  22. {
  23.     LPTSTR lpszRet;
  24.     size_t size = strlen(szString)+1;
  25.  
  26.     lpszRet = (LPTSTR)malloc(MAX_PATH);
  27.     mbstowcs_s(NULL, lpszRet, size, szString, _TRUNCATE);
  28.  
  29.     return lpszRet;
  30. }
  31.  
  32. void WaitForProcessToAppear(LPCTSTR lpczProc, DWORD dwDelay)
  33. {
  34.     HANDLE          hSnap;
  35.     PROCESSENTRY32  peProc;
  36.     BOOL            bAppeared = FALSE;
  37.  
  38.     while(!bAppeared)
  39.     {
  40.         if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HANDLE_VALUE)
  41.         {
  42.             peProc.dwSize = sizeof(PROCESSENTRY32);
  43.             if(Process32First(hSnap, &peProc))
  44.                 while(Process32Next(hSnap, &peProc) && !bAppeared)
  45.                     if(!lstrcmp(lpczProc, peProc.szExeFile))
  46.                         bAppeared = TRUE;
  47.         }
  48.         CloseHandle(hSnap);
  49.         Sleep(dwDelay);
  50.     }
  51. }
  52.  
  53. DWORD GetProcessIdByName(LPCTSTR lpczProc)
  54. {
  55.     HANDLE          hSnap;
  56.     PROCESSENTRY32  peProc;
  57.     DWORD           dwRet = -1;
  58.  
  59.     if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HANDLE_VALUE)
  60.     {
  61.         peProc.dwSize = sizeof(PROCESSENTRY32);
  62.         if(Process32First(hSnap, &peProc))
  63.             while(Process32Next(hSnap, &peProc))
  64.                 if(!lstrcmp(lpczProc, peProc.szExeFile))
  65.                     dwRet = peProc.th32ProcessID;
  66.     }
  67.     CloseHandle(hSnap);
  68.  
  69.     return dwRet;
  70. }
  71.  
  72. BOOL InjectDll(DWORD dwPid, char* szDllPath)
  73. {
  74.     DWORD   dwMemSize;
  75.     HANDLE  hProc;
  76.     LPVOID  lpRemoteMem, lpLoadLibrary;
  77.     BOOL    bRet = FALSE;
  78.  
  79.     if((hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_CREATE_THREAD, FALSE, dwPid)) != NULL)
  80.     {
  81.         dwMemSize = strlen(szDllPath)+1;
  82.         if((lpRemoteMem = VirtualAllocEx(hProc, NULL, dwMemSize, MEM_COMMIT, PAGE_READWRITE)) != NULL)
  83.             if(WriteProcessMemory(hProc, lpRemoteMem, (LPCVOID)szDllPath, dwMemSize, NULL))
  84.             {
  85.                 lpLoadLibrary = GetProcAddress(GetModuleHandleA("Kernel32.dll"), "LoadLibraryA");
  86.                 if(CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)lpLoadLibrary, lpRemoteMem, 0, NULL) != NULL)
  87.                     bRet = TRUE;
  88.             }
  89.     }
  90.     CloseHandle(hProc);
  91.  
  92.     return bRet;
  93. }
  94.  
  95. int main(void)
  96. {
  97.     system("title Injector C++ KssioBr");//Nome do injetor que aparecerá no topo da janela
  98.  
  99.     char    szProc[MAX_PATH];//Variável do tipo caractere para receber o nome do processo no qual será injetado
  100.     char    szDll[MAX_PATH];//Variável do tipo caractere para receber o nome da dll a ser injetada
  101.  
  102.     char*   szDllPath   = (char*)malloc(MAX_PATH);
  103.     LPTSTR  lpszProc    = NULL;
  104.    
  105.     cout << "\n\n\t\t\t-------- Injector C++ oO>Kssio<Oo -------- \n\n";//Titulo do injetor aparece dentro da janela
  106.     //----------------------------------------------------
  107.     cout << "\t\t\t\t\tEntre com o nome do processo: ";
  108.     cin >> szProc;//Ler do teclado e armazena em szProc
  109.  
  110.     cout << "\n\t\t\t\t\tEntre com o nome da dll: ";
  111.     cin >> szDll;//Ler do teclado e armazena em szDll
  112.     //----------------------------------------------------
  113.     szDllPath = GetCurrentDir();
  114.     strcat_s(szDllPath, MAX_PATH, "\\");
  115.     strcat_s(szDllPath, MAX_PATH, szDll);
  116.  
  117.     cout << "\t\n\nAguardando Inicio do Jogo..." << endl;
  118.  
  119.     WaitForProcessToAppear(SzToLPCTSTR(szProc), 100);
  120.  
  121.     if(InjectDll(GetProcessIdByName(SzToLPCTSTR(szProc)), szDllPath))
  122.         cout << "Injetado com Sucesso!" << endl;
  123.     else
  124.         cout << "Falha na injeção!" << endl;
  125.     cout << "\n";
  126.  
  127.     return EXIT_SUCCESS;
  128. }
Advertisement
Add Comment
Please, Sign In to add comment