Pushok

CSS Trigger Bot

Feb 13th, 2012
2,736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 8.34 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.                         Sleep( 5 );
  190.  
  191.                         DWORD dwAimTargOffset_1;
  192.                         DWORD dwAimTargOffset_2;
  193.                         DWORD dwAimTargOffset_3;
  194.                         DWORD dwAimTargOffset_4;
  195.  
  196.                         DWORD dwAimingAt = 0;
  197.  
  198.                         ReadProcessMemory( hProcess, clientModule.modBaseAddr + AIM_TARG_OFFS_1, &dwAimTargOffset_1, sizeof( DWORD* ), NULL );
  199.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_1 + AIM_TARG_OFFS_2 ), &dwAimTargOffset_2, sizeof( DWORD* ), NULL );
  200.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_2 + AIM_TARG_OFFS_3 ), &dwAimTargOffset_3, sizeof( DWORD* ), NULL );
  201.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_3 + AIM_TARG_OFFS_4 ), &dwAimingAt, sizeof( DWORD* ), NULL );
  202.                         //ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwAimTargOffset_4 + AIM_TARG_OFFS_4 ), &dwAimingAt, sizeof( DWORD ), NULL );
  203.  
  204.                         printf( "%d\n", dwAimingAt );
  205.  
  206.                         if( dwAimingAt == 0 || dwAimingAt > 64 )
  207.                         {
  208.                             continue;
  209.                         }
  210.  
  211.                         dwAimingAt--;
  212.  
  213.                         for( int i = 0; i < 32; i++ )
  214.                         {
  215.                             dwHealthAddr = dwNewRadar + i * STRUCT_SIZE + HEALTH_OFFSET;
  216.                             dwTeamAddr = dwNewRadar + i * STRUCT_SIZE + TEAM_OFFSET;
  217.                             dwNameAddr = dwNewRadar + i * STRUCT_SIZE + NAME_OFFSET;
  218.                             dwOriginAddr = dwNewRadar + i * STRUCT_SIZE + ORIGIN_OFFSET;
  219.  
  220.                             if( ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwNameAddr ), szNameBuffer, sizeof( szNameBuffer ), NULL ) )
  221.                             {
  222.                                 if( !strcmp( szLocalName, szNameBuffer ) )
  223.                                 {
  224.                                     dwLocalId = i;
  225.                                    
  226.                                     ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwTeamAddr ), &dwLocalTeam, sizeof( DWORD ), NULL );
  227.                                     ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwHealthAddr ), &dwLocalHealth, sizeof( DWORD ), NULL );
  228.                                     ReadProcessMemory( hProcess, reinterpret_cast< LPVOID >( dwOriginAddr ), fLocalOrigin, sizeof( float[3] ), NULL );
  229.  
  230.                                     break;
  231.                                 }
  232.                             }
  233.                         }
  234.  
  235.                         if( dwLocalId == -1 )
  236.                         {
  237.                             std::cout << "Could not find local player\n";
  238.                             getchar();
  239.  
  240.                             return 1;
  241.                         }
  242.  
  243.                         if( dwLocalHealth == 0 )
  244.                         {
  245.                             continue;
  246.                         }
  247.  
  248.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID* >( dwNewRadar + dwAimingAt * STRUCT_SIZE + HEALTH_OFFSET ), &dwPlayerHealth, sizeof( DWORD ), NULL );
  249.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID* >( dwNewRadar + dwAimingAt * STRUCT_SIZE + TEAM_OFFSET ), &dwPlayerTeam, sizeof( DWORD ), NULL );
  250.                         ReadProcessMemory( hProcess, reinterpret_cast< LPVOID* >( dwNewRadar + dwAimingAt * STRUCT_SIZE + ORIGIN_OFFSET ), fPlayerOrigin, sizeof( float[3] ), NULL );
  251.  
  252.                         printf( "%d %d ", dwPlayerTeam, dwPlayerHealth );
  253.  
  254.                         if( dwPlayerTeam != dwLocalTeam )
  255.                         {
  256.                             if( dwPlayerHealth > 0 )
  257.                             {
  258.                                 if( VecDist( fLocalOrigin, fPlayerOrigin ) < TRIGGERBOT_MAX_LENGTH )
  259.                                 {
  260.                                     mouse_event( MOUSEEVENTF_LEFTDOWN, 0, 0, 0, 0 );
  261.                                     Sleep( 50 );
  262.  
  263.                                     mouse_event( MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 );
  264.                                     Sleep( 25 );
  265.                                 }
  266.                             }
  267.                         }
  268.                     }
  269.                 }
  270.                 else
  271.                 {
  272.                     std::cout << "Could not find radar addr.\n";
  273.                 }
  274.             }
  275.             else
  276.             {
  277.                 std::cout << "Could not find both modules.\n";
  278.             }
  279.         }
  280.         else
  281.         {
  282.             std::cout << "Could not open process.\n";
  283.         }
  284.     }
  285.     else
  286.     {
  287.         std::cout << "Could not find process.\n";
  288.     }
  289.  
  290.     getchar();
  291. }
Advertisement
Add Comment
Please, Sign In to add comment