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;
}
Last edited by a moderator: