Непонятки с адресами.

  • Автор темы Автор темы tbygb
  • Дата начала Дата начала
Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Май 2018
Сообщения
14
Реакции
2
Доброго времени суток. Столкнулся с вопросом. Искал адреса, вроде бы все нашел, но появился вопрос. Вот допустим мой SystemGlobalAdress = 0x1937640. Что бы получить адрес IGame, нужно SystemGlobalAdress + IGame. IGame у меня 0x70. Слаживаю - получаю 0x19376B0, но у других адрес получается 0x1B64A14. Скажите, где я долблюсь в глаза и делаю что-то не так?

UPD: Мб кто подскажет, как найти вот это чудо на скрине?
загруженное.png
 
Последнее редактирование:
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Софт на шарпе или плюсах?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Доброго времени суток. Столкнулся с вопросом. Искал адреса, вроде бы все нашел, но появился вопрос. Вот допустим мой SystemGlobalAdress = 0x1937640. Что бы получить адрес IGame, нужно SystemGlobalAdress + IGame. IGame у меня 0x70. Слаживаю - получаю 0x19376B0, но у других адрес получается 0x1B64A14. Скажите, где я долблюсь в глаза и делаю что-то не так?

UPD: Мб кто подскажет, как найти вот это чудо на скрине?
Посмотреть вложение 28098
На скрине написано как найти.
SystemGlobalAdress = 0x1937640 - получи адресс класса, потом добавь указатель (0х70)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В импортах смотри D3DXCreateTexture
 
На скрине написано как найти.
SystemGlobalAdress = 0x1937640 - получи адресс класса, потом добавь указатель (0х70)
Спасибо, чудо на скрине нашел. Однако как считать адреса до сих пор не понял. Вот прям вообще.
 
димедрол, адрес выходит другой. у меня вот тот же вопрос
потому что не нужно их складывать))
Спасибо, чудо на скрине нашел. Однако как считать адреса до сих пор не понял. Вот прям вообще.
На основе скрина объясняю:
В импортах ищешь функцию D3DXCreateTexture, переходишь на ее вызов, жмешь F5(HexRay)
Видишь примерно то, что на скрине (j_D3DXCreateTexture)
Функция эта представляет из себя следующий прототип:
Код:
Expand Collapse Copy
 HRESULT D3DXCreateTexture(
  _In_  LPDIRECT3DDEVICE9  pDevice,
  _In_  UINT               Width,
  _In_  UINT               Height,
  _In_  UINT               MipLevels,
  _In_  DWORD              Usage,
  _In_  D3DFORMAT          Format,
  _In_  D3DPOOL            Pool,
  _Out_ LPDIRECT3DTEXTURE9 *ppTexture
);
То есть первый параметр это устройство Dx9. То есть указатель на указатель таблици методов D3D9.

dword_1B4A50C - это адресс класса
32368- это смещение относительно базы класса

Код:
Expand Collapse Copy
class IRenderer{
public:
    char _nop[32368];
    LPDIRECT3DDEVICE9  pDevice;//32368
}
IRenderer *pIRenderer  = *(IRender**)0x1B4A50C
Теперь ты можешь получить указатель устройства:
Код:
Expand Collapse Copy
LPDIRECT3DDEVICE9  m_pDevice = pIRenderer->pDevice;
Можно все записать таким образом:

Код:
Expand Collapse Copy
class IRender
{
public:
DWORD*  pDevice() {
        return*(DWORD**)((DWORD)this + 32368);
    }
    static IRender* Singleton() {
        return *(IRender**)(0x1B4A50C);
    }
};

LPDIRECT3DDEVICE9  m_pDevice = IRender::Singleton()->pDevice();
 
потому что не нужно их складывать))

На основе скрина объясняю:
В импортах ищешь функцию D3DXCreateTexture, переходишь на ее вызов, жмешь F5(HexRay)
Видишь примерно то, что на скрине (j_D3DXCreateTexture)
Функция эта представляет из себя следующий прототип:
Код:
Expand Collapse Copy
 HRESULT D3DXCreateTexture(
  _In_  LPDIRECT3DDEVICE9  pDevice,
  _In_  UINT               Width,
  _In_  UINT               Height,
  _In_  UINT               MipLevels,
  _In_  DWORD              Usage,
  _In_  D3DFORMAT          Format,
  _In_  D3DPOOL            Pool,
  _Out_ LPDIRECT3DTEXTURE9 *ppTexture
);
То есть первый параметр это устройство Dx9. То есть указатель на указатель таблици методов D3D9.

dword_1B4A50C - это адресс класса
32368- это смещение относительно базы класса

Код:
Expand Collapse Copy
class IRenderer{
public:
    char _nop[32368];
    LPDIRECT3DDEVICE9  pDevice;//32368
}
IRenderer *pIRenderer  = *(IRender**)0x1B4A50C
Теперь ты можешь получить указатель устройства:
Код:
Expand Collapse Copy
LPDIRECT3DDEVICE9  m_pDevice = pIRenderer->pDevice;
Можно все записать таким образом:

Код:
Expand Collapse Copy
class IRender
{
public:
DWORD*  pDevice() {
        return*(DWORD**)((DWORD)this + 32368);
    }
    static IRender* Singleton() {
        return *(IRender**)(0x1B4A50C);
    }
};

LPDIRECT3DDEVICE9  m_pDevice = IRender::Singleton()->pDevice();
Огромное спасибо, все понял.
 
потому что не нужно их складывать))

На основе скрина объясняю:
В импортах ищешь функцию D3DXCreateTexture, переходишь на ее вызов, жмешь F5(HexRay)
Видишь примерно то, что на скрине (j_D3DXCreateTexture)
Функция эта представляет из себя следующий прототип:
Код:
Expand Collapse Copy
 HRESULT D3DXCreateTexture(
  _In_  LPDIRECT3DDEVICE9  pDevice,
  _In_  UINT               Width,
  _In_  UINT               Height,
  _In_  UINT               MipLevels,
  _In_  DWORD              Usage,
  _In_  D3DFORMAT          Format,
  _In_  D3DPOOL            Pool,
  _Out_ LPDIRECT3DTEXTURE9 *ppTexture
);
То есть первый параметр это устройство Dx9. То есть указатель на указатель таблици методов D3D9.

dword_1B4A50C - это адресс класса
32368- это смещение относительно базы класса

Код:
Expand Collapse Copy
class IRenderer{
public:
    char _nop[32368];
    LPDIRECT3DDEVICE9  pDevice;//32368
}
IRenderer *pIRenderer  = *(IRender**)0x1B4A50C
Теперь ты можешь получить указатель устройства:
Код:
Expand Collapse Copy
LPDIRECT3DDEVICE9  m_pDevice = pIRenderer->pDevice;
Можно все записать таким образом:

Код:
Expand Collapse Copy
class IRender
{
public:
DWORD*  pDevice() {
        return*(DWORD**)((DWORD)this + 32368);
    }
    static IRender* Singleton() {
        return *(IRender**)(0x1B4A50C);
    }
};

LPDIRECT3DDEVICE9  m_pDevice = IRender::Singleton()->pDevice();
Крайслер, спасибо, с адресами всё понял, объяснил всё очень доходчиво!
А что вот с классами? Как обновлять их? Например тот же IActor?
 
Крайслер, спасибо, с адресами всё понял, объяснил всё очень доходчиво!
А что вот с классами? Как обновлять их? Например тот же IActor?

Ну так по такому же принципу, это всё как бы через классы
 
Назад
Сверху Снизу