├── r6_external ├── r6_external │ ├── r6_external.vcxproj.user │ ├── utils.h │ ├── r6_external.vcxproj.filters │ ├── driver.h │ ├── entry.cpp │ ├── ROL.h │ └── r6_external.vcxproj └── r6_external.sln └── README.md /r6_external/r6_external/r6_external.vcxproj.user: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # r6-external 2 | Simple external for r6 3 | 4 | Includes: 5 | - Glow for enemy players 6 | - Updated to latest Game Patch 7 | 8 | Doesnt Include: 9 | - Driver 10 | 11 | Note: 12 | - You have to add your own driver or else it will not work. 13 | 14 | 15 | 16 | BIG Credits to @Roblox932! You helped me so much in the past week Thank you! 17 | 18 | -------------------------------------------------------------------------------- /r6_external/r6_external/utils.h: -------------------------------------------------------------------------------- 1 | namespace utils 2 | { 3 | auto get_process_id( const wchar_t *name ) -> std::int32_t 4 | { 5 | const auto snapshot = CreateToolhelp32Snapshot( TH32CS_SNAPPROCESS, 0 ); 6 | 7 | PROCESSENTRY32 entry = { 0 }; 8 | entry.dwSize = sizeof( entry ); 9 | 10 | Process32First( snapshot, &entry ); 11 | do 12 | { 13 | if ( wcscmp( entry.szExeFile, name ) ) 14 | { 15 | continue; 16 | } 17 | 18 | CloseHandle( snapshot ); 19 | return entry.th32ProcessID; 20 | 21 | } while ( Process32Next( snapshot, &entry ) ); 22 | 23 | CloseHandle( snapshot ); 24 | return 0; 25 | } 26 | } -------------------------------------------------------------------------------- /r6_external/r6_external/r6_external.vcxproj.filters: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | {4FC737F1-C7A5-4376-A066-2A32D752A2FF} 6 | cpp;c;cc;cxx;c++;cppm;ixx;def;odl;idl;hpj;bat;asm;asmx 7 | 8 | 9 | {93995380-89BD-4b04-88EB-625FBE52EBFB} 10 | h;hh;hpp;hxx;h++;hm;inl;inc;ipp;xsd 11 | 12 | 13 | {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} 14 | rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms 15 | 16 | 17 | 18 | 19 | Source Files 20 | 21 | 22 | 23 | 24 | Header Files 25 | 26 | 27 | Header Files 28 | 29 | 30 | Header Files 31 | 32 | 33 | -------------------------------------------------------------------------------- /r6_external/r6_external.sln: -------------------------------------------------------------------------------- 1 | 2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | # Visual Studio Version 16 4 | VisualStudioVersion = 16.0.32802.440 5 | MinimumVisualStudioVersion = 10.0.40219.1 6 | Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "r6_external", "r6_external\r6_external.vcxproj", "{7E28C248-A230-4124-880C-A8A5A3663D01}" 7 | EndProject 8 | Global 9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 10 | Debug|x64 = Debug|x64 11 | Debug|x86 = Debug|x86 12 | Release|x64 = Release|x64 13 | Release|x86 = Release|x86 14 | EndGlobalSection 15 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 16 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Debug|x64.ActiveCfg = Debug|x64 17 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Debug|x64.Build.0 = Debug|x64 18 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Debug|x86.ActiveCfg = Debug|Win32 19 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Debug|x86.Build.0 = Debug|Win32 20 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Release|x64.ActiveCfg = Release|x64 21 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Release|x64.Build.0 = Release|x64 22 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Release|x86.ActiveCfg = Release|Win32 23 | {7E28C248-A230-4124-880C-A8A5A3663D01}.Release|x86.Build.0 = Release|Win32 24 | EndGlobalSection 25 | GlobalSection(SolutionProperties) = preSolution 26 | HideSolutionNode = FALSE 27 | EndGlobalSection 28 | GlobalSection(ExtensibilityGlobals) = postSolution 29 | SolutionGuid = {935E01F9-0D6A-4215-A0C1-FDBB95992F4B} 30 | EndGlobalSection 31 | EndGlobal 32 | -------------------------------------------------------------------------------- /r6_external/r6_external/driver.h: -------------------------------------------------------------------------------- 1 | class c_driver 2 | { 3 | private: 4 | 5 | public: 6 | 7 | auto initialize( const int process_id ) -> bool 8 | { 9 | 10 | return true; 11 | } 12 | 13 | // ADD YOUR DRIVER HERE <<< 14 | 15 | auto get_module_base( const std::string module_name ) -> const std::uintptr_t 16 | { 17 | return true; 18 | } 19 | 20 | auto find_signature( const std::uintptr_t base, const std::string signature ) -> std::uintptr_t 21 | { 22 | return true; 23 | } 24 | 25 | auto read( const std::uintptr_t address, void *buffer, const std::size_t size ) -> bool 26 | { 27 | return true; 28 | } 29 | 30 | template 31 | auto read( const std::uintptr_t address ) -> t 32 | { 33 | t response{ }; 34 | this->read( address, &response, sizeof( t ) ); 35 | return response; 36 | } 37 | 38 | template 39 | auto read_chain( const std::uintptr_t address, const std::vector chain ) -> t 40 | { 41 | auto current = address; 42 | 43 | for ( int i = 0; i < chain.size( ) - 1; i++ ) 44 | { 45 | current = this->read( current + chain[i] ); 46 | } 47 | return this->read( current + chain[chain.size( ) - 1] ); 48 | }; 49 | 50 | auto write( const std::uintptr_t address, void *buffer, const std::size_t size ) -> bool 51 | { 52 | return true; 53 | } 54 | 55 | template 56 | auto write( const std::uintptr_t address, t value ) -> bool 57 | { 58 | return this->write( address, &value, sizeof( t ) ); 59 | } 60 | 61 | auto unload( ) -> bool 62 | { 63 | 64 | return true; 65 | } 66 | }; 67 | 68 | static c_driver *driver = new c_driver( ); -------------------------------------------------------------------------------- /r6_external/r6_external/entry.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | #include 9 | 10 | #include "driver.h" 11 | #include "utils.h" 12 | #include "ROL.h" 13 | 14 | 15 | 16 | auto main( ) -> std::int32_t 17 | { 18 | driver->initialize( utils::get_process_id( L"RainbowSix.exe" ) ); 19 | const auto base = driver->get_module_base( "RainbowSix.exe" ); 20 | 21 | // Get the game_manager one time. 22 | const auto game_manager = __ROL8__( driver->read( base + 0x8CA45B8 ) - 0x18E83FAE4211D090i64 ^ 0xB4A4B94B8538E9C0ui64, 5 ); 23 | 24 | 25 | while ( true ) 26 | { 27 | // Entitylist 28 | const auto list = __ROL8__ ( ( driver->read( game_manager + 0x120 ) ^ 0x6Ei64 ) + 0x2D3008420A01289Fi64, 0x1D); 29 | const auto count = static_cast( __ROL8__ ( ( driver->read( game_manager + 0x128 ) ^ 0x6Ei64 ) + 0x2D3008420A01289Fi64, 0x1D ) ); 30 | 31 | for ( auto i = 0u; i < count; ++i ) 32 | { 33 | // Entityloop 34 | const auto entity = driver->read( list + ( i * 0x08 ) ); 35 | const auto pawn = ( ( driver->read( entity + 0x38 ) - 0x2Di64 ) ^ 0x47 ) - 0x1CAC0E689A643359i64; 36 | const auto actor = ( ( driver->read( pawn + 0x18i64 ) ^ 0xD2EBEAA4B5728AEEui64 ) - 0x11175121A36679Ei64 ) ^ 0xDED4294E880D1C70ui64; 37 | 38 | if ( i == 0 ) // 0 = localplayer 39 | { 40 | // Simple Localplayer check 41 | } 42 | else 43 | { 44 | const auto glow_component = __ROL8__( __ROL8__( driver->read( actor + 0x1c8 ), 0x1D ) + 0xCE2E924B2644A463, 0x29 ); // Glow Component 45 | driver->write( glow_component + 0xB0, 0x20748000); // Glow Overwrite 46 | } 47 | } 48 | 49 | std::this_thread::sleep_for( std::chrono::milliseconds( 500 ) ); 50 | } 51 | } -------------------------------------------------------------------------------- /r6_external/r6_external/ROL.h: -------------------------------------------------------------------------------- 1 | #pragma once 2 | 3 | //Typedef basically gives an alias for an already existing data type. 4 | 5 | typedef __int64 ll; 6 | typedef __int64 ull; 7 | 8 | typedef unsigned int uint; 9 | typedef unsigned char uchar; 10 | typedef unsigned short ushort; 11 | typedef unsigned long ulong; 12 | 13 | typedef char int8; 14 | typedef signed char sint8; 15 | typedef unsigned char uint8; 16 | typedef short int16; 17 | typedef signed short sint16; 18 | typedef unsigned short uint16; 19 | typedef int int32; 20 | typedef signed int sint32; 21 | typedef unsigned int uint32; 22 | typedef ll int64; 23 | typedef ll sint64; 24 | typedef ull uint64; 25 | 26 | 27 | template T __ROL__( T value, int count ) 28 | { 29 | const uint nbits = sizeof( T ) * 8; 30 | 31 | if ( count > 0 ) 32 | { 33 | count %= nbits; 34 | T high = value >> ( nbits - count ); 35 | if ( T( -1 ) < 0 ) // This will be a signed val. 36 | high &= ~( ( T( -1 ) << count ) ); 37 | value <<= count; 38 | value |= high; 39 | } 40 | else 41 | { 42 | count = -count % nbits; 43 | T low = value << ( nbits - count ); 44 | value >>= count; 45 | value |= low; 46 | } 47 | return value; 48 | } 49 | 50 | inline uint8 __ROL1__( uint8 value, int count ) { 51 | return __ROL__( (uint8)value, count ); 52 | } 53 | inline uint16 __ROL2__( uint16 value, int count ) { 54 | return __ROL__( (uint16)value, count ); 55 | } 56 | inline uint32 __ROL4__( uint32 value, int count ) { 57 | return __ROL__( (uint32)value, count ); 58 | } 59 | inline uint64 __ROL8__( uint64 value, int count ) { 60 | return __ROL__( (uint64)value, count ); 61 | } 62 | inline uint8 __ROR1__( uint8 value, int count ) { 63 | return __ROL__( (uint8)value, -count ); 64 | } 65 | inline uint16 __ROR2__( uint16 value, int count ) { 66 | return __ROL__( (uint16)value, -count ); 67 | } 68 | inline uint32 __ROR4__( uint32 value, int count ) { 69 | return __ROL__( (uint32)value, -count ); 70 | } 71 | inline uint64 __ROR8__( uint64 value, int count ) { 72 | return __ROL__( (uint64)value, -count ); 73 | } -------------------------------------------------------------------------------- /r6_external/r6_external/r6_external.vcxproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | Debug 6 | Win32 7 | 8 | 9 | Release 10 | Win32 11 | 12 | 13 | Debug 14 | x64 15 | 16 | 17 | Release 18 | x64 19 | 20 | 21 | 22 | 16.0 23 | Win32Proj 24 | {7e28c248-a230-4124-880c-a8a5a3663d01} 25 | r6external 26 | 10.0.19041.0 27 | 28 | 29 | 30 | Application 31 | true 32 | v142 33 | Unicode 34 | 35 | 36 | Application 37 | false 38 | v142 39 | true 40 | Unicode 41 | 42 | 43 | Application 44 | true 45 | v142 46 | Unicode 47 | 48 | 49 | Application 50 | false 51 | v142 52 | true 53 | Unicode 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | true 75 | 76 | 77 | false 78 | 79 | 80 | true 81 | 82 | 83 | false 84 | 85 | 86 | 87 | Level3 88 | true 89 | WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions) 90 | true 91 | 92 | 93 | Console 94 | true 95 | 96 | 97 | 98 | 99 | Level3 100 | true 101 | true 102 | true 103 | WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions) 104 | true 105 | 106 | 107 | Console 108 | true 109 | true 110 | true 111 | 112 | 113 | 114 | 115 | Level3 116 | true 117 | _DEBUG;_CONSOLE;%(PreprocessorDefinitions) 118 | true 119 | 120 | 121 | Console 122 | true 123 | 124 | 125 | 126 | 127 | Level3 128 | true 129 | true 130 | true 131 | NDEBUG;_CONSOLE;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions) 132 | true 133 | stdcpp20 134 | 135 | 136 | Console 137 | true 138 | true 139 | true 140 | 141 | 142 | 143 | 144 | 145 | 146 | 147 | 148 | 149 | 150 | 151 | 152 | 153 | --------------------------------------------------------------------------------