Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Just_a_Test.cpp: определяет точку входа для консольного приложения.
- //
- #include "stdafx.h"
- BOOL FindProcessByName( TCHAR* name, PROCESSENTRY32 &entry )
- {
- entry.dwSize = sizeof( entry );
- HANDLE hTlHelp = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, GetCurrentProcessId() );
- if( Process32First( hTlHelp, &entry ) )
- {
- if( !_tcscmp( entry.szExeFile, name ) )
- {
- return TRUE;
- }
- while( Process32Next( hTlHelp, &entry ) )
- {
- if( !_tcscmp( entry.szExeFile, name ) )
- {
- return TRUE;
- }
- }
- }
- if( hTlHelp != INVALID_HANDLE_VALUE )
- {
- CloseHandle( hTlHelp );
- }
- return FALSE;
- }
- BOOL FindModule( TCHAR* name, DWORD dwProcID, MODULEENTRY32 &entry )
- {
- HANDLE hTlHelp = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcID );
- ZeroMemory( &entry, sizeof( entry ) );
- entry.dwSize = sizeof( MODULEENTRY32 );
- if( Module32First( hTlHelp, &entry ) )
- {
- if( !_tcscmp( entry.szModule, name ) )
- {
- return TRUE;
- }
- while( Module32Next( hTlHelp, &entry ) )
- {
- if( !_tcscmp( entry.szModule, name ) )
- {
- return TRUE;
- }
- }
- }
- if( hTlHelp != INVALID_HANDLE_VALUE )
- {
- CloseHandle( hTlHelp );
- }
- return FALSE;
- }
- enum ConsoleColors
- {
- Color_Blue = 9,
- Color_Green = 10,
- Color_Red = 12,
- Color_Yellow = 14,
- Color_White = 15
- };
- void SetConsoleColor( ConsoleColors color )
- {
- SetConsoleTextAttribute( GetStdHandle( STD_OUTPUT_HANDLE ), color );
- }
- void DrawNewLines( int count )
- {
- if( count > 0 )
- {
- while( count-- )
- {
- std::cout << "\n";
- }
- }
- }
- DWORD FindSignature( UCHAR* chSig, UCHAR* chModule, DWORD dwModuleSize, DWORD dwSigLen )
- {
- UCHAR *chMod = chModule;
- while( chMod < chModule + dwModuleSize - dwSigLen )
- {
- if( memcmp( chMod, chSig, dwSigLen ) == NULL )
- {
- return chMod - chModule;
- }
- chMod++;
- }
- return -1;
- }
- int _tmain(int argc, _TCHAR* argv[])
- {
- /*enum HackTypes { Hack_InfiniteAmmo, Hack_NoAmmo };
- bool bUseHacks = true;
- bool bHacks[sizeof(HackTypes) / sizeof( int )];
- if( bUseHacks )
- {
- bHacks[ Hack_InfiniteAmmo ] = true;
- bHacks[ Hack_NoAmmo ] = true;
- }*/
- bool bUnlimAmmo = true;
- bool bNoAmmo = true;
- SetConsoleColor( Color_Blue );
- std::cout << "Vietcong Hack Status: ";
- PROCESSENTRY32 ProcEntry;
- if( FindProcessByName( L"vietcong.exe", ProcEntry ) )
- {
- HANDLE hProcess = OpenProcess( PROCESS_ALL_ACCESS, FALSE, ProcEntry.th32ProcessID );
- MODULEENTRY32 mEntry;
- if( FindModule( L"game.dll", ProcEntry.th32ProcessID, mEntry ) )
- {
- SetConsoleColor( Color_Green );
- std::wcout << L"[LOADED]";
- UCHAR *iModule = new UCHAR[mEntry.modBaseSize];
- ReadProcessMemory( hProcess, mEntry.modBaseAddr, iModule, mEntry.modBaseSize, NULL);
- UCHAR chSig[] = { 0x81, 0xEC, 0x28, 0x02, 0x00, 0x00, 0x53, 0x55, 0x56, 0x57, 0x68, 0x54 };
- int iIFaceOffset = FindSignature( chSig, (UCHAR*)iModule, mEntry.modBaseSize, sizeof( chSig ) );
- if( iIFaceOffset > 0 )
- {
- UCHAR chUnlimAmmoSig[] = { 0x66, 0x29, 0x5C, 0x7E };
- int iUnlimAmmoOffs = FindSignature( chUnlimAmmoSig, (UCHAR*)(iModule + iIFaceOffset), mEntry.modBaseSize - iIFaceOffset, sizeof( chUnlimAmmoSig ) );
- if( iUnlimAmmoOffs > 0 )
- {
- UCHAR chAmmoPatch[] = { 0x83, 0x6C, 0x7E, 0x3C, 0x00 };
- DWORD dwOldProtect;
- VirtualProtectEx( hProcess, mEntry.modBaseAddr + iIFaceOffset + iUnlimAmmoOffs, sizeof( chAmmoPatch ), PAGE_READWRITE, &dwOldProtect );
- WriteProcessMemory( hProcess, mEntry.modBaseAddr + iIFaceOffset + iUnlimAmmoOffs, chAmmoPatch, sizeof( chAmmoPatch ), NULL );
- }
- else
- {
- SetConsoleColor( Color_Red );
- std::wcout << L"\nCould not find ammo offset!";
- }
- }
- else
- {
- SetConsoleColor( Color_Red );
- std::wcout << L"\nCould not find GAME_SAV_LOAD offset!";
- }
- delete [] iModule;
- }
- else
- {
- SetConsoleColor( Color_Red );
- std::cout << "[MDL NOT DETECTED]";
- }
- }
- else
- {
- SetConsoleColor( Color_Red );
- std::cout << "[NOT DETECTED]";
- }
- getchar();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment