Pushok

Trigger Bot v2 HotKey

Feb 19th, 2012
584
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.58 KB | None | 0 0
  1. #include <iostream>
  2. #include <Windows.h>
  3. #include <TlHelp32.h>
  4. #include <tchar.h>
  5. #include <string>
  6.  
  7. #define CLIENT_MODULE "client.dll"
  8. #define ENGINE_MODULE "engine.dll"
  9.  
  10. #define AIM_TARG_OFFS_1 0x00744FF4
  11. #define AIM_TARG_OFFS_2 0x14
  12. #define AIM_TARG_OFFS_3 0x14
  13. #define AIM_TARG_OFFS_4 0x470 // not needed
  14. #define AIM_TARG_OFFS_5 0x470 // unknown
  15.  
  16. #define AIM_OFFSET 0x3EFCBC
  17. #define LOCAL_NAME_OFFSET 0x003CE3AC
  18.  
  19. #define TRIGGERBOT_MAX_LENGTH 1700.0
  20.  
  21. #define STRUCT_OFFSET 0x007390A8
  22. #define STRUCT_SIZE 0x140
  23. #define MIN_ID 0
  24. #define MAX_ID 64
  25.  
  26. #define ORIGIN_OFFSET 0x60
  27. #define TEAM_OFFSET 0x58
  28. #define NAME_OFFSET 0x38
  29. #define HEALTH_OFFSET 0x5C
  30. #define INGAME_OFFSET 0x28 //Useless but maybe needed ;)
  31.  
  32. #define PLAYER_TRUE_WIDTH 26
  33. #define PLAYER_TRUE_HEIGHT 72
  34.  
  35. #define PLAYER_HEIGHT ( PLAYER_TRUE_HEIGHT + 5 )
  36. #define PLAYER_WIDTH ( PLAYER_TRUE_WIDTH - 8 )
  37.  
  38. struct PlayerProfile
  39. {
  40.  
  41.     DWORD TorseHeight;
  42.     DWORD NeckHeight;
  43.  
  44.     DWORD HeadTop;
  45.  
  46.     DWORD TorseWidth;
  47.     DWORD HeadWidth;
  48.  
  49. } ppStand = { PLAYER_TRUE_HEIGHT - 5, PLAYER_HEIGHT - ( PLAYER_TRUE_HEIGHT - 5 ), PLAYER_HEIGHT, 16, 8 };
  50.  
  51. BOOL FindProcessByName( TCHAR* ProcessName, PROCESSENTRY32* processEntry )
  52. {
  53.     HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, NULL );
  54.      
  55.     if( Process32First( hSnapshot, processEntry ) )
  56.     {
  57.         do
  58.         {
  59.             if( !_tcscmp( processEntry->szExeFile, ProcessName ) )
  60.             {
  61.                 CloseHandle( hSnapshot );
  62.                 return TRUE;
  63.             }
  64.         } while ( Process32Next( hSnapshot, processEntry ) );
  65.     }
  66.  
  67.     CloseHandle( hSnapshot );
  68.     return FALSE;
  69. }
  70.  
  71. BOOL FindModuleByName( TCHAR* ModuleName, MODULEENTRY32* moduleEntry, DWORD dwProcessId )
  72. {
  73.     HANDLE hSnapshot = CreateToolhelp32Snapshot( TH32CS_SNAPMODULE, dwProcessId );
  74.  
  75.     if( hSnapshot == INVALID_HANDLE_VALUE )
  76.     {
  77.         std::wcout << L"Something went wrong with ToolHelp func. Code: " << GetLastError( ) << L"\n";
  78.         return FALSE;
  79.     }
  80.  
  81.     if( Module32First( hSnapshot, moduleEntry ) )
  82.     {
  83.         do
  84.         {
  85.             if( !_tcscmp( moduleEntry->szModule, ModuleName ) )
  86.             {
  87.                 return TRUE;
  88.             }
  89.         } while( Module32Next( hSnapshot, moduleEntry ) );
  90.     }
  91.     else
  92.     {
  93.         std::wcout << L"Could not find first module. " <<  GetLastError() << "\n";
  94.     }
  95.  
  96.     CloseHandle( hSnapshot );
  97.     return FALSE;
  98. }
  99.  
  100. inline float DegToRad( float fAng )
  101. {
  102.     return fAng * 3.14159265 / 180;
  103. }
  104.  
  105. inline float VecDist( float* fVec1, float* fVec2 )
  106. {
  107.     return sqrt( pow( fVec1[0] - fVec2[0] , 2 ) + pow( fVec1[1] - fVec2[1] , 2 ) + pow( fVec1[2] - fVec2[2] , 2 ) );
  108. }
  109.  
  110. inline bool IsInBox( float* fPoint, float* fCubeCenter, float fHeight, float fWidth )
  111. {
  112.     if( ( fPoint[0] < fCubeCenter[0] + fWidth / 2 ) && ( fPoint[0] > fCubeCenter[0] - fWidth / 2 ) &&
  113.         ( fPoint[1] < fCubeCenter[1] + fWidth / 2 ) && ( fPoint[1] > fCubeCenter[1] - fWidth / 2 ) &&
  114.         ( fPoint[2] < fCubeCenter[2] + fHeight / 2 ) && ( fPoint[2] > fCubeCenter[2] - fHeight / 2 ) )
  115.     {
  116.         return true;
  117.     }
  118.  
  119.     return false;
  120. }
  121.  
  122. int main( )
  123. {
  124.     PROCESSENTRY32 processEntry;
  125.     MODULEENTRY32 clientModule;
  126.     MODULEENTRY32 engineModule;
  127.  
  128.     processEntry.dwSize = sizeof( PROCESSENTRY32 );
  129.     clientModule.dwSize = sizeof( MODULEENTRY32 );
  130.     engineModule.dwSize = sizeof( MODULEENTRY32 );
  131.  
  132.     if( FindProcessByName( _T( "hl2.exe" ), &processEntry ) )
  133.     {
  134.         HANDLE hProcess = OpenProcess( PROCESS_VM_READ, FALSE, processEntry.th32ProcessID );
  135.  
  136.         if( hProcess != INVALID_HANDLE_VALUE )
  137.         {
  138.             if( FindModuleByName( _T( CLIENT_MODULE ), &clientModule, processEntry.th32ProcessID ) &&
  139.                 FindModuleByName( _T( ENGINE_MODULE ), &engineModule, processEntry.th32ProcessID ) )
  140.             {
  141.                 DWORD* dwRadarAddr = reinterpret_cast< DWORD* >( clientModule.modBaseAddr + STRUCT_OFFSET );
  142.                 DWORD* dwAimAddr = reinterpret_cast< DWORD* >( engineModule.modBaseAddr + AIM_OFFSET );
  143.                 DWORD* dwLocalNameAddrPtr = reinterpret_cast< DWORD* >( engineModule.modBaseAddr + LOCAL_NAME_OFFSET );
  144.                
  145.                 DWORD dwLocalNameAddr;
  146.                 DWORD dwNewRadar;
  147.  
  148.                 if( ReadProcessMemory( hProcess, dwRadarAddr, &dwNewRadar, sizeof( DWORD ), NULL ) )
  149.                 {
  150.                     CHAR szLocalName[127];
  151.  
  152.                     if( ReadProcessMemory( hProcess, dwLocalNameAddrPtr, &dwLocalNameAddr, sizeof( DWORD ), NULL ) )
  153.                     {
  154.                         if( !ReadProcessMemory( hProcess, reinterpret_cast< DWORD* >( dwLocalNameAddr ), szLocalName, sizeof( szLocalName ), NULL ) )
  155.                         {
  156.                             std::cout << "Could not read local player name. " << GetLastError( ) << "\n";
  157.                             std::cout << (DWORD*)engineModule.modBaseAddr << " " << dwLocalNameAddr << "\n";
  158.  
  159.                             getchar();
  160.                             return 1;
  161.                         }
  162.                         else
  163.                         {
  164.                             std::cout << szLocalName << "\n";
  165.                         }
  166.                     }
  167.  
  168.                     CHAR szNameBuffer[127];
  169.  
  170.                     DWORD dwHealthAddr;
  171.                     DWORD dwTeamAddr;
  172.                     DWORD dwNameAddr;
  173.                     DWORD dwOriginAddr;
  174.  
  175.                     DWORD dwLocalTeam;
  176.                     DWORD dwLocalHealth;
  177.                     DWORD dwLocalId = -1;
  178.  
  179.                     DWORD dwPlayerTeam;
  180.                     DWORD dwPlayerHealth;
  181.  
  182.                     float fPlayerOrigin[3];
  183.  
  184.                     float fLocalOrigin[3];
  185.                     float fLocalAimAngles[3];
  186.  
  187.                     while( true )
  188.                     {
  189.                         static bool bLastState = false;
  190.                         static bool bToggle = false; // Turned off by default
  191.  
  192.                         Sleep( 5 );
  193.  
  194.                         bool bState = GetAsyncKeyState( 'Q' );
  195.  
  196.                         if( !bLastState && bState )
  197.                         {
  198.                             bToggle = !bToggle;
  199.                         }
  200.  
  201.                         bLastState = bState;
  202.  
  203.                         if( !bToggle )
  204.                         {
  205.                             Sleep( 250 );
  206.                             continue;
  207.                         }
  208.  
  209.                         DWORD dwAimTargOffset_1;
  210.                         DWORD dwAimTargOffset_2;
  211.                         DWORD dwAimTargOffset_3;
  212.                         DWORD dwAimTargOffset_4;
  213.  
  214.                         DWORD dwAimingAt = 0;
  215.  
  216.                         ReadProcessMemory( hProcess, clientModule.modBaseAddr + AIM_TARG_OFFS_1, &dwAimTargOffset_1, sizeof( DWORD* ), NULL );
  217.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_1 + AIM_TARG_OFFS_2 ), &dwAimTargOffset_2, sizeof( DWORD* ), NULL );
  218.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_2 + AIM_TARG_OFFS_3 ), &dwAimTargOffset_3, sizeof( DWORD* ), NULL );
  219.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_3 + AIM_TARG_OFFS_4 ), &dwAimingAt, sizeof( DWORD* ), NULL );
  220.                         //ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_4 + AIM_TARG_OFFS_4 ), &dwAimingAt, sizeof( DWORD ), NULL );
  221.  
  222.                         if( dwAimingAt == 0 || dwAimingAt > 64 )
  223.                         {
  224.                             continue;
  225.                         }
  226.  
  227.                         dwAimingAt--;
  228.  
  229.                         for( int i = 0; i < 64; i++ )
  230.                         {
  231.                             dwHealthAddr = dwNewRadar + i * STRUCT_SIZE + HEALTH_OFFSET;
  232.                             dwTeamAddr = dwNewRadar + i * STRUCT_SIZE + TEAM_OFFSET;
  233.                             dwNameAddr = dwNewRadar + i * STRUCT_SIZE + NAME_OFFSET;
  234.                             dwOriginAddr = dwNewRadar + i * STRUCT_SIZE + ORIGIN_OFFSET;
  235.  
  236.                             if( ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwNameAddr ), szNameBuffer, sizeof( szNameBuffer ), NULL ) )
  237.                             {
  238.                                 if( !strcmp( szLocalName, szNameBuffer ) )
  239.                                 {
  240.                                     dwLocalId = i;
  241.                                    
  242.                                     ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwTeamAddr ), &dwLocalTeam, sizeof( DWORD ), NULL );
  243.                                     ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwHealthAddr ), &dwLocalHealth, sizeof( DWORD ), NULL );
  244.                                     ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwOriginAddr ), fLocalOrigin, sizeof( float[3] ), NULL );
  245.  
  246.                                     break;
  247.                                 }
  248.                             }
  249.                         }
  250.  
  251.                         if( dwLocalId == -1 )
  252.                         {
  253.                             std::cout << "Could not find local player\n";
  254.                             getchar();
  255.  
  256.                             return 1;
  257.                         }
  258.  
  259.                         if( dwLocalHealth == 0 )
  260.                         {
  261.                             continue;
  262.                         }
  263.  
  264.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID* >( dwNewRadar + dwAimingAt * STRUCT_SIZE + HEALTH_OFFSET ), &dwPlayerHealth, sizeof( DWORD ), NULL );
  265.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID* >( dwNewRadar + dwAimingAt * STRUCT_SIZE + TEAM_OFFSET ), &dwPlayerTeam, sizeof( DWORD ), NULL );
  266.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID* >( dwNewRadar + dwAimingAt * STRUCT_SIZE + ORIGIN_OFFSET ), fPlayerOrigin, sizeof( float[3] ), NULL );
  267.  
  268.                         if( dwPlayerTeam != dwLocalTeam )
  269.                         {
  270.                             if( dwPlayerHealth > 0 )
  271.                             {
  272.                                 if( VecDist( fLocalOrigin, fPlayerOrigin ) < TRIGGERBOT_MAX_LENGTH )
  273.                                 {
  274.                                     mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  275.                                     Sleep( 50 );
  276.  
  277.                                     mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
  278.                                     Sleep( 25 );
  279.                                 }
  280.                             }
  281.                         }
  282.                     }
  283.                 }
  284.                 else
  285.                 {
  286.                     std::cout << "Could not find radar addr.\n";
  287.                 }
  288.             }
  289.             else
  290.             {
  291.                 std::cout << "Could not find both modules.\n";
  292.             }
  293.         }
  294.         else
  295.         {
  296.             std::cout << "Could not open process.\n";
  297.         }
  298.     }
  299.     else
  300.     {
  301.         std::cout << "Could not find process.\n";
  302.     }
  303.  
  304.     getchar();
  305. }
Advertisement
Add Comment
Please, Sign In to add comment