Подведи собственные итоги года совместно с YOUGAME и забери ценные призы! Перейти

Reversed gpu spoofer

  • Автор темы Автор темы Heleks
  • Дата начала Дата начала
Продавец
Продавец
Статус
Оффлайн
Регистрация
12 Сен 2016
Сообщения
945
Реакции
263
C++:
Expand Collapse Copy
NTSTATUS __stdcall hooked_nvlddmkm(PDEVICE_OBJECT device, DWORD64 irp)
{
  __int64 ioc; // rbx
  __int64 o_irp; // rdi
  PDEVICE_OBJECT o_device; // rsi
  char buffer; // [rsp+20h] [rbp-28h]

  ioc = *(_QWORD *)(irp + 184);                 // IoGetCurrentIrpStackLocation
  o_irp = irp;
  o_device = device;
  if ( *(_DWORD *)(ioc + 24) == 0x8DE0008 )     //  ioc->Parameters.DeviceIoControl.IoControlCode == 0x8DE0008
  {
    sub_745912D0((__int64)&buffer, irp);        // // get requested process
                                                //
    if ( ((__int64 (__fastcall *)(char *, const char *))strstr_mb)(&buffer, "Game.exe") )// // if this process makes a request
      return 0xC0000004;                        // // return STATUS_INFO_LENGTH_MISMATCH
    if ( *(_DWORD *)(ioc + 24) == 0x8DE0008 )
      sub_74591C24(o_irp, ioc, (__int64)sub_74591858);// // randomize gpu serial
                                                //
  }
  return original(o_device, o_irp);
}

реверс этого спуфера https://yougame.biz/threads/132335/
 
C++:
Expand Collapse Copy
NTSTATUS __stdcall hooked_nvlddmkm(PDEVICE_OBJECT device, DWORD64 irp)
{
  __int64 ioc; // rbx
  __int64 o_irp; // rdi
  PDEVICE_OBJECT o_device; // rsi
  char buffer; // [rsp+20h] [rbp-28h]

  ioc = *(_QWORD *)(irp + 184);                 // IoGetCurrentIrpStackLocation
  o_irp = irp;
  o_device = device;
  if ( *(_DWORD *)(ioc + 24) == 0x8DE0008 )     //  ioc->Parameters.DeviceIoControl.IoControlCode == 0x8DE0008
  {
    sub_745912D0((__int64)&buffer, irp);        // // get requested process
                                                //
    if ( ((__int64 (__fastcall *)(char *, const char *))strstr_mb)(&buffer, "Game.exe") )// // if this process makes a request
      return 0xC0000004;                        // // return STATUS_INFO_LENGTH_MISMATCH
    if ( *(_DWORD *)(ioc + 24) == 0x8DE0008 )
      sub_74591C24(o_irp, ioc, (__int64)sub_74591858);// // randomize gpu serial
                                                //
  }
  return original(o_device, o_irp);
}

реверс этого спуфера https://yougame.biz/threads/132335/
переименование переменных и функций это теперь ревёрс?)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Возможно мы бы вам сказали спасибо , но раз этот метод не работает , смысла не было его выкладывать . Похвально , что вы изучаете тему реверс инженеренга .
 
Возможно мы бы вам сказали спасибо , но раз этот метод не работает , смысла не было его выкладывать . Похвально , что вы изучаете тему реверс инженеренга .
?
он работает
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Очень сомневаюсь , вот это возможно ещё работает .

C:
Expand Collapse Copy
NTSTATUS GpuControl(PDEVICE_OBJECT device, PIRP irp) {
    PIO_STACK_LOCATION ioc = IoGetCurrentIrpStackLocation(irp);
    
    switch (ioc->Parameters.DeviceIoControl.IoControlCode) {
        case IOCTL_NVIDIA_SMIL: {
            NTSTATUS ret = GpuControlOriginal(device, irp);

            PCHAR buffer = irp->UserBuffer;
            if (buffer) {
                PCHAR copy = SafeCopy(buffer, IOCTL_NVIDIA_SMIL_MAX);
                if (copy) {
                    for (DWORD i = 0; i < IOCTL_NVIDIA_SMIL_MAX - 4; ++i) {
                        if (0 == memcmp(copy + i, "GPU-", 4)) {
                            buffer[i] = 0;
                            break;
                        }
                    }
                    ExFreePool(copy);
                }
            }
            return ret;
        }
    }

    return GpuControlOriginal(device, irp);
}

VOID SpoofGPU() {
    SwapControl(RTL_CONSTANT_STRING(L"\\Driver\\ff"), GpuControl, GpuControlOriginal);
}
 
Очень сомневаюсь , вот это возможно ещё работает .

C:
Expand Collapse Copy
NTSTATUS GpuControl(PDEVICE_OBJECT device, PIRP irp) {
    PIO_STACK_LOCATION ioc = IoGetCurrentIrpStackLocation(irp);
   
    switch (ioc->Parameters.DeviceIoControl.IoControlCode) {
        case IOCTL_NVIDIA_SMIL: {
            NTSTATUS ret = GpuControlOriginal(device, irp);

            PCHAR buffer = irp->UserBuffer;
            if (buffer) {
                PCHAR copy = SafeCopy(buffer, IOCTL_NVIDIA_SMIL_MAX);
                if (copy) {
                    for (DWORD i = 0; i < IOCTL_NVIDIA_SMIL_MAX - 4; ++i) {
                        if (0 == memcmp(copy + i, "GPU-", 4)) {
                            buffer[i] = 0;
                            break;
                        }
                    }
                    ExFreePool(copy);
                }
            }
            return ret;
        }
    }

    return GpuControlOriginal(device, irp);
}

VOID SpoofGPU() {
    SwapControl(RTL_CONSTANT_STRING(L"\\Driver\\ff"), GpuControl, GpuControlOriginal);
}
А откуда ты это взял можешь показать, пожалуйста?
 
Очень сомневаюсь , вот это возможно ещё работает .

C:
Expand Collapse Copy
NTSTATUS GpuControl(PDEVICE_OBJECT device, PIRP irp) {
    PIO_STACK_LOCATION ioc = IoGetCurrentIrpStackLocation(irp);
   
    switch (ioc->Parameters.DeviceIoControl.IoControlCode) {
        case IOCTL_NVIDIA_SMIL: {
            NTSTATUS ret = GpuControlOriginal(device, irp);

            PCHAR buffer = irp->UserBuffer;
            if (buffer) {
                PCHAR copy = SafeCopy(buffer, IOCTL_NVIDIA_SMIL_MAX);
                if (copy) {
                    for (DWORD i = 0; i < IOCTL_NVIDIA_SMIL_MAX - 4; ++i) {
                        if (0 == memcmp(copy + i, "GPU-", 4)) {
                            buffer[i] = 0;
                            break;
                        }
                    }
                    ExFreePool(copy);
                }
            }
            return ret;
        }
    }

    return GpuControlOriginal(device, irp);
}

VOID SpoofGPU() {
    SwapControl(RTL_CONSTANT_STRING(L"\\Driver\\ff"), GpuControl, GpuControlOriginal);
}
Будешь свапать драйвер "ff'? Когда у nvidia он nvlddmkm
 
очеень годный реверс если еще чуть-чуть пофиксить вообще пушечка будет
 
Назад
Сверху Снизу