Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*----------------------------------------------------*/
- /* St1ks upgrade.*/
- /* by: 2014 */
- /*----------------------------------------------------*/
- #include <iostream>
- #include <direct.h>
- #include <windows.h>
- #include <tlhelp32.h>
- using namespace std;
- char* GetCurrentDir()
- {
- char* szRet = (char*)malloc(MAX_PATH);
- _getcwd(szRet, MAX_PATH);
- return szRet;
- }
- LPCTSTR SzToLPCTSTR(char* szString)
- {
- LPTSTR lpszRet;
- size_t size = strlen(szString)+1;
- lpszRet = (LPTSTR)malloc(MAX_PATH);
- mbstowcs_s(NULL, lpszRet, size, szString, _TRUNCATE);
- return lpszRet;
- }
- void WaitForProcessToAppear(LPCTSTR lpczProc, DWORD dwDelay)
- {
- HANDLE hSnap;
- PROCESSENTRY32 peProc;
- BOOL bAppeared = FALSE;
- while(!bAppeared)
- {
- if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HANDLE_VALUE)
- {
- peProc.dwSize = sizeof(PROCESSENTRY32);
- if(Process32First(hSnap, &peProc))
- while(Process32Next(hSnap, &peProc) && !bAppeared)
- if(!lstrcmp(lpczProc, peProc.szExeFile))
- bAppeared = TRUE;
- }
- CloseHandle(hSnap);
- Sleep(dwDelay);
- }
- }
- DWORD GetProcessIdByName(LPCTSTR lpczProc)
- {
- HANDLE hSnap;
- PROCESSENTRY32 peProc;
- DWORD dwRet = -1;
- if((hSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)) != INVALID_HANDLE_VALUE)
- {
- peProc.dwSize = sizeof(PROCESSENTRY32);
- if(Process32First(hSnap, &peProc))
- while(Process32Next(hSnap, &peProc))
- if(!lstrcmp(lpczProc, peProc.szExeFile))
- dwRet = peProc.th32ProcessID;
- }
- CloseHandle(hSnap);
- return dwRet;
- }
- BOOL InjectDll(DWORD dwPid, char* szDllPath)
- {
- DWORD dwMemSize;
- HANDLE hProc;
- LPVOID lpRemoteMem, lpLoadLibrary;
- BOOL bRet = FALSE;
- if((hProc = OpenProcess(PROCESS_VM_OPERATION | PROCESS_VM_WRITE | PROCESS_CREATE_THREAD, FALSE, dwPid)) != NULL)
- {
- dwMemSize = strlen(szDllPath)+1;
- if((lpRemoteMem = VirtualAllocEx(hProc, NULL, dwMemSize, MEM_COMMIT, PAGE_READWRITE)) != NULL)
- if(WriteProcessMemory(hProc, lpRemoteMem, (LPCVOID)szDllPath, dwMemSize, NULL))
- {
- lpLoadLibrary = GetProcAddress(GetModuleHandleA("Kernel32.dll"), "LoadLibraryA");
- if(CreateRemoteThread(hProc, NULL, 0, (LPTHREAD_START_ROUTINE)lpLoadLibrary, lpRemoteMem, 0, NULL) != NULL)
- bRet = TRUE;
- }
- }
- CloseHandle(hProc);
- return bRet;
- }
- int main(void)
- {
- system("title Injector C++ KssioBr");//Nome do injetor que aparecerá no topo da janela
- char szProc[MAX_PATH];//Variável do tipo caractere para receber o nome do processo no qual será injetado
- char szDll[MAX_PATH];//Variável do tipo caractere para receber o nome da dll a ser injetada
- char* szDllPath = (char*)malloc(MAX_PATH);
- LPTSTR lpszProc = NULL;
- cout << "\n\n\t\t\t-------- Injector C++ oO>Kssio<Oo -------- \n\n";//Titulo do injetor aparece dentro da janela
- //----------------------------------------------------
- cout << "\t\t\t\t\tEntre com o nome do processo: ";
- cin >> szProc;//Ler do teclado e armazena em szProc
- cout << "\n\t\t\t\t\tEntre com o nome da dll: ";
- cin >> szDll;//Ler do teclado e armazena em szDll
- //----------------------------------------------------
- szDllPath = GetCurrentDir();
- strcat_s(szDllPath, MAX_PATH, "\\");
- strcat_s(szDllPath, MAX_PATH, szDll);
- cout << "\t\n\nAguardando Inicio do Jogo..." << endl;
- WaitForProcessToAppear(SzToLPCTSTR(szProc), 100);
- if(InjectDll(GetProcessIdByName(SzToLPCTSTR(szProc)), szDllPath))
- cout << "Injetado com Sucesso!" << endl;
- else
- cout << "Falha na injeção!" << endl;
- cout << "\n";
- return EXIT_SUCCESS;
- }
Advertisement
Add Comment
Please, Sign In to add comment