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

D3D9 Device

Забаненный
Забаненный
Статус
Оффлайн
Регистрация
8 Сен 2018
Сообщения
12
Реакции
1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Появилась необходимость изменить
auto m_D3Device = **reinterpret_cast<void***>(memfuncs::fPattern("shaderapidx9.dll", "88 56 10") + 17);
в этой строчке shaderapidx9.dll на d3d9.dll, но не имею нужного паттерна(88 56 10).
Помогите, пожалуйста, как можно такую операцию выполнить.
 
Код:
Expand Collapse Copy
bool Init_d3d9()
{
    HMODULE hD3D9 = NULL;
    bool bResult = false;
    char szPath[256];
    SHGetFolderPathA(NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT, szPath);
    strcat_s(szPath, "\\d3d9.dll");

    if (hD3D9 = GetModuleHandleA(szPath))
    {
        D3D9CREATEEXPROC CreateEx = (D3D9CREATEEXPROC)GetProcAddress(hD3D9, "Direct3DCreate9Ex");
        if (CreateEx)
        {
            HRESULT hr = D3D_OK;
            LPDIRECT3D9EX d3d9ex = nullptr;
            if (SUCCEEDED(hr = CreateEx(D3D_SDK_VERSION, &d3d9ex)))
            {
                D3DPRESENT_PARAMETERS dp;
                ZeroMemory(&dp, sizeof(dp));
                dp.Windowed = 1;
                dp.SwapEffect = D3DSWAPEFFECT_FLIP;
                dp.BackBufferFormat = D3DFMT_A8R8G8B8;
                dp.BackBufferCount = 1;
                dp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
                IDirect3DDevice9Ex *mDevice = nullptr;
                if (SUCCEEDED(hr = d3d9ex->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dp, NULL, &mDevice)))
                {
                    bResult = true;
                    UPARAM * vtbl = *(UPARAM**)mDevice;
                   // *(vtbl + index) = youfunc; <- вот тут можешь хукать
                    mDevice->Release();
                }
                d3d9ex->Release();
            }
        }
    }
    return bResult;
}
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
bool Init_d3d9()
{
    HMODULE hD3D9 = NULL;
    bool bResult = false;
    char szPath[256];
    SHGetFolderPathA(NULL, CSIDL_SYSTEM, NULL, SHGFP_TYPE_CURRENT, szPath);
    strcat_s(szPath, "\\d3d9.dll");

    if (hD3D9 = GetModuleHandleA(szPath))
    {
        D3D9CREATEEXPROC CreateEx = (D3D9CREATEEXPROC)GetProcAddress(hD3D9, "Direct3DCreate9Ex");
        if (CreateEx)
        {
            HRESULT hr = D3D_OK;
            LPDIRECT3D9EX d3d9ex = nullptr;
            if (SUCCEEDED(hr = CreateEx(D3D_SDK_VERSION, &d3d9ex)))
            {
                D3DPRESENT_PARAMETERS dp;
                ZeroMemory(&dp, sizeof(dp));
                dp.Windowed = 1;
                dp.SwapEffect = D3DSWAPEFFECT_FLIP;
                dp.BackBufferFormat = D3DFMT_A8R8G8B8;
                dp.BackBufferCount = 1;
                dp.PresentationInterval = D3DPRESENT_INTERVAL_IMMEDIATE;
                IDirect3DDevice9Ex *mDevice = nullptr;
                if (SUCCEEDED(hr = d3d9ex->CreateDeviceEx(D3DADAPTER_DEFAULT, D3DDEVTYPE_NULLREF, NULL, D3DCREATE_HARDWARE_VERTEXPROCESSING, &dp, NULL, &mDevice)))
                {
                    bResult = true;
                    UPARAM * vtbl = *(UPARAM**)mDevice;
                   // *(vtbl + index) = youfunc; <- вот тут можешь хукать
                    mDevice->Release();
                }
                d3d9ex->Release();
            }
        }
    }
    return bResult;
}
По сути, если функция хука моя это -
DirectDevice->HookIndexOfTable(Hooks::Reset, 16);
DirectDevice->HookIndexOfTable(Hooks::Present, 17);
то мне достаточно просто вставить туда эти строчки, предварительно поменяв переменную DirectDevice на переменную из кода?
P.S Функция HookIndexOfTable имеет принимаемые аргументы void* new_function, const std::size_t FunctionIndex
Извини за такие глупые вопросы, только недавно начал осваивать Direct.
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
По сути, если функция хука моя это -
DirectDevice->HookIndexOfTable(Hooks::Reset, 16);
DirectDevice->HookIndexOfTable(Hooks::Present, 17);
то мне достаточно просто вставить туда эти строчки, предварительно поменяв переменную DirectDevice на переменную из кода?
P.S Функция HookIndexOfTable имеет принимаемые аргументы void* new_function, const std::size_t FunctionIndex
Извини за такие глупые вопросы, только недавно начал осваивать Direct.
Да не, просто человек не понимает, что тебе нужен игровой девайс, а не собственный в оверлее. На какую игру ищешь? Если игра у меня есть, то я тебе скажу паттерн
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Да не, просто человек не понимает, что тебе нужен игровой девайс, а не собственный в оверлее. На какую игру ищешь? Если игра у меня есть, то я тебе скажу паттерн
GTA San Andreas. Там вроде бы как я поискал есть через SampFuncs определение интерфейса и регистрация хуков.

/* SF->getRender()->registerD3DCallback(D3DMETHOD_PRESENT, Present);
SF->getRender()->registerD3DCallback(D3DMETHOD_RESET, Reset);
SF->getGame()->registerWndProcCallback(SFGame::MEDIUM_CB_PRIORITY, WndProcHandler);
g_pd3dDevice = SF->getRender()->getD3DDevice();
ImGui_ImplDX9_Init(GetActiveWindow(), g_pd3dDevice); */ - вырезал из ImGui меню(рисую сам Директ меню). Думаю, может помочь это мне, хотя пока что не уверен. Поискал также на форуме некоторые темы, нашел метод получения паттерна(опробую днем). // Твое сообщение о методе получения паттерна, к слову)

Если присутствует адрес, напиши пожалуйста. Спасибо тебе большое заранее )
 
Да не, просто человек не понимает, что тебе нужен игровой девайс, а не собственный в оверлее.
земля пуховиком.
в этой строчке shaderapidx9.dll на d3d9.dll,
и тут я должен магически провести анологию с кс и угадать что человеку нужен игровой девайс.
По сути, если функция хука моя это -
DirectDevice->HookIndexOfTable(Hooks::Reset, 16);
DirectDevice->HookIndexOfTable(Hooks::Present, 17);
то мне достаточно просто вставить туда эти строчки, предварительно поменяв переменную DirectDevice на переменную из кода?
P.S Функция HookIndexOfTable имеет принимаемые аргументы void* new_function, const std::size_t FunctionIndex
Извини за такие глупые вопросы, только недавно начал осваивать Direct.
если тебе нужен клиенсткий девайс, тебе нужно будет реверсить клиент, в этом примере дх хука, ты можешь увидеть основной принцип создания дх девайса. В основе они везде похожи и отличаются только мелкими деталями, после - в иде найти куда гта его сохраняет, поищи в импортах Direct3DCreate9 либо Direct3DCreate9Ex и глянь где его вызывает код игры (Ctrl+x) далее в псевдокод, мб оно в структуру/класс прямо записывает девайс чтобы в дальнейшем с ним работать. Там и мб у тебя на руках окажется поинтер+оффсет.
Пример псевдокода:
Код:
Expand Collapse Copy
 v9 = Direct3DCreate9(0x20u);
  *((_DWORD *)v3 + 0x14F4) = v9;
Код:
Expand Collapse Copy
v46 = (char *)(*(int (__stdcall **)(_DWORD, char *))(**((_DWORD **)v1 + 0x14F5) + 0x1C))(
                    *((_DWORD *)v1 + 0x14F5),
                    &v86);
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
земля пуховиком.

и тут я должен магически провести анологию с кс и угадать что человеку нужен игровой девайс.

если тебе нужен клиенсткий девайс, тебе нужно будет реверсить клиент, в этом примере дх хука, ты можешь увидеть основной принцип создания дх девайса. В основе они везде похожи и отличаются только мелкими деталями, после - в иде найти куда гта его сохраняет, поищи в импортах Direct3DCreate9 либо Direct3DCreate9Ex и глянь где его вызывает код игры (Ctrl+x) далее в псевдокод, мб оно в структуру/класс прямо записывает девайс чтобы в дальнейшем с ним работать. Там и мб у тебя на руках окажется поинтер+оффсет.
Пример псевдокода:
Код:
Expand Collapse Copy
 v9 = Direct3DCreate9(0x20u);
  *((_DWORD *)v3 + 0x14F4) = v9;
Код:
Expand Collapse Copy
v46 = (char *)(*(int (__stdcall **)(_DWORD, char *))(**((_DWORD **)v1 + 0x14F5) + 0x1C))(
                    *((_DWORD *)v1 + 0x14F5),
                    &v86);
У меня получалось уже инжектить туда D3D9 Menu, правда там очень неудобный метод(где еще 0x128000)
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
У меня получалось уже инжектить туда D3D9 Menu, правда там очень неудобный метод(где еще 0x128000)
Код:
Expand Collapse Copy
 mov     ds:dword_8E243C, eax
Код:
Expand Collapse Copy
IDirect3DDevice9 * device = *(IDirect3DDevice9**)(FindPattern("gta_sa.exe", "A3 ? ? ? ? 74 7D") + 0x2);
Попробуй
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Код:
Expand Collapse Copy
 mov     ds:dword_8E243C, eax
Код:
Expand Collapse Copy
IDirect3DDevice9 * device = *(IDirect3DDevice9**)(FindPattern("gta_sa.exe", "A3 ? ? ? ? 74 7D") + 0x2);
Попробуй
mov ds:dword_8E243C, eax куда использовать? Выше чем определение девайса? Спасибо заранее, через час-два попробую(сейчас времени нет, буквально на минутку зашел проверить ответы).
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
mov ds:dword_8E243C, eax куда использовать? Выше чем определение девайса? Спасибо заранее, через час-два попробую(сейчас времени нет, буквально на минутку зашел проверить ответы).
Неа, только FindPattern. mov dword, eax просто скинул
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Ох, как-то я и забыл что хотел это сделать. В общем, данный паттерн не помог мне все-таки. Сейчас опять буду пытаться сделать, только уже хочу попросту через d3d9.dll сделать. Не подскажете ли паттерн у d3d9.dll? Или искать очень огромным методом надо?

P.S Пропал примерно на два месяца, ничего себе...
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Кстати, у gta_sa.exe нет своего паттерна для отрисовки. Паттерн находится в d3d9.dll. Никаких ссылок на функции.
 

Вложения

  • 2018-11-03_211751.png
    2018-11-03_211751.png
    2.6 KB · Просмотры: 14
  • 2018-11-03_211740.png
    2018-11-03_211740.png
    2.9 KB · Просмотры: 14
  • 2018-11-03_211731.png
    2018-11-03_211731.png
    3.5 KB · Просмотры: 12
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Если интересны вообще все импорты: 2018-11-03_222109.png2018-11-03_222055.png2018-11-03_222044.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Еще импорты:2018-11-03_222144.png2018-11-03_222133.png2018-11-03_222118.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
И еще одни импорты:2018-11-03_222158.png2018-11-03_222213.png
 
смотри еще и не системные длл которые юзает gta_sa.exe
 
Назад
Сверху Снизу