CIA Agent
COD, Apex, Valorant, Fortnite, Rust, all kinds of games have the ability to track your GPU HWID. While they might not all specifically ban based on GPU HWID, it can always change.
(Tested)
(Tested)
Code:
uintptr_t spoof_gpu () {
uintptr_t nvlddmkm_base = 0;
uint32_t uuid_valid_offset = 0;
nvlddmkm_base = (uintptr_t)memory::get_module("nvlddmkm.sys"); if (!nvlddmkm_base) return 0;
uint64_t address = ( uint64_t ) memory::find_pattern ( ( PVOID ) nvlddmkm_base,
"\xE8\xCC\xCC\xCC\xCC\x48\x8B\xD8\x48\x85\xC0\x0F\x84\xCC\xCC\xCC\xCC\x44\x8B\x80\xCC\xCC\xCC\xCC\x48\x8D\x15",
"x????xxxxxxxx????xxx????xxx" );
UINT64 address_offset = 0x3B;
if ( !address || *( uint8_t* ) ( address + address_offset ) != 0xE8 ) {
address_offset++;
if ( *( UINT8* ) ( address + address_offset ) != 0xE8 ) {
return 0;
}
}
uint64_t ( *GpuMgrGetGpuFromId )( int ) = decltype( GpuMgrGetGpuFromId )( *( int* ) ( address + 1 ) + 5 + address );
address += address_offset;
address += *( int* ) ( address + 1 ) + 5;
for ( int InstructionCount = 0; InstructionCount < 50; InstructionCount++ ) {
hde64s HDE;
hde64_disasm ( ( void* ) address, &HDE );
if ( HDE.flags & F_ERROR ) return 0;
uint32_t op = *( uint32_t* ) address & 0xFFFFFF;
if ( op == 0x818D4C ) {
uuid_valid_offset = *( UINT32* ) ( address + 3 ) - 1;
break;
}
address += HDE.len;
}
if ( !uuid_valid_offset ) return false;
for ( int i = 0; i < 32; i++ )
{
UINT64 gpu = GpuMgrGetGpuFromId ( i ); if ( !gpu ) continue;
if ( !*( bool* ) ( gpu + uuid_valid_offset ) ) continue;
for ( int j = 0; j < sizeof ( GUID ); j++ )
*( uint8_t* ) ( gpu + uuid_valid_offset + 1 + j ) = __rdtsc ( );
}
return 1;
}