Розыгрыш Premium и Уникальной юзергруппы на форуме! Перейти


  • УЖЕ ЗАВТРА! Просто зашёл, нажал на кнопку участия и забрал кучу призов уже 30-го декабря: https://yougame.biz/threads/366947/

Проблема с d3d9 hook

  • Автор темы Автор темы By_Alien
  • Дата начала Дата начала
Забаненный
Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции
1
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Когда инжектю в d3d9 Test by Крайслер, то все ок, ничего не крашит и не вылетает. Когда инжектю в cs go крашит(без всяких ошибок, просто сразу закрывается игра). Почему так может быть?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мб, код покажешь?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мб, код покажешь?
Так проблема при инжекте в игру
cRender.cpp
Код:
Expand Collapse Copy
#include "cRender.h"
#include "stdafx.h"

cRender::cRender(void)
{
    show = true;
}

int Button_Mass[20] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 },
Button_Number = 0,
Button_Max = 0,
LButtonState = 0;

void  cRender::Draw_Text(int x, int y, DWORD color, const char* text, DWORD ST) {
    RECT rect, rect2;
    SetRect( &rect, x, y, x, y );
    SetRect( &rect2, x - 0.1, y + 0.2, x - 0.1, y + 0.1 );
    pFont->DrawTextA(NULL,text,-1,&rect2, ST, 0xff000000 );
    pFont->DrawTextA(NULL,text,-1,&rect,  ST, color );
}

void cRender::Draw_Box(int x, int y, int w, int h, D3DCOLOR Color, IDirect3DDevice9* mDevice)
{
    D3DRECT rec;
    rec.x1 = x;
    rec.x2 = x + w;
    rec.y1 = y;
    rec.y2 = y + h;
    mDevice->SetFVF(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_TEX1);
    mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, true);
    mDevice->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA);
    mDevice->SetRenderState(D3DRS_ALPHABLENDENABLE, D3DPT_TRIANGLESTRIP);
    mDevice->Clear(1, &rec, D3DCLEAR_TARGET, Color, 1, 1);
}

void cRender::Draw_Border(int x, int y, int w, int h, int s, D3DCOLOR Color, IDirect3DDevice9* mDevice)
{
    Draw_Box(x, y, s, h, Color, mDevice);
    Draw_Box(x, y + h, w, s, Color, mDevice);
    Draw_Box(x, y, w, s, Color, mDevice);
    Draw_Box(x + w, y, s, h + s, Color, mDevice);
}

BOOL  cRender::IsInBox(int x, int y, int w, int h)
{
    POINT MousePosition;
    GetCursorPos(&MousePosition);
    ScreenToClient(GetForegroundWindow(), &MousePosition);
    return(MousePosition.x >= x && MousePosition.x <= x + w && MousePosition.y >= y && MousePosition.y <= y + h);
}

static struct _Keys
{
    bool bPressed;
    DWORD dwStartTime;
}kPressingKeys[256];

BOOL  cRender::State_Key(int Key, DWORD dwTimeOut)
{
    if (HIWORD(GetKeyState(Key)))
    {
        if (!kPressingKeys[Key].bPressed || (kPressingKeys[Key].dwStartTime && (kPressingKeys[Key].dwStartTime + dwTimeOut) <= GetTickCount()))
        {
            kPressingKeys[Key].bPressed = TRUE;
            if (dwTimeOut > NULL)
                kPressingKeys[Key].dwStartTime = GetTickCount();
            return TRUE;
        }
    }
    else
        kPressingKeys[Key].bPressed = FALSE;
    return FALSE;
}

void  cRender::Draw_Menu_But(stMenu *pos_Menu, const char* text, IDirect3DDevice9* pDevice)
{

    int x = (*pos_Menu).x,
        y = (*pos_Menu).y,
        h = 22,
        w = 101;

    D3DCOLOR Bord_text = 0xff00ffff;
    D3DCOLOR text_Activ = 0xff00ffff;


    if (IsInBox(x, y, w, h))
    {
        //если наведен курсор
        Bord_text = 0xFF8FBC8B;
        if (!GetAsyncKeyState(VK_LBUTTON))
                LButtonState = 0;
        else if (GetAsyncKeyState(VK_LBUTTON))
            if (LButtonState == 0){
                //if (Button_Mass[Button_Number] != 1)
                Button_Mass[Button_Number] = !Button_Mass[Button_Number];
                LButtonState = 1;
            }
    }

    Draw_Box(x, y, w, h, 0xFF8B0000, pDevice);
    Draw_Border(x, y, w, h, 1, Bord_text, pDevice);
    if (Button_Mass[Button_Number])
    {

        //Если активна
        text_Activ = 0xFF9400D3;
        //for (int i = 0; i < 20; i++)
            //if (i != Button_Number)
                //Button_Mass[i] = 0;
    }
    Draw_Text(x + (w / 2), y + 3, text_Activ, text, C_Text);

    Button_Number = Button_Number + 1;

    if (Button_Max < Button_Number)
        //Button_Max = Button_Number;

    (*pos_Menu).y = y + 24;
}

void  cRender::Init_PosMenu(int x, int y, DWORD KEY, stMenu* pos_Menu, IDirect3DDevice9* m_pD3Ddev)
{
    (*pos_Menu).x = x;
    (*pos_Menu).y = y;

    if (!pFont)
        pFont->OnLostDevice();
    else
    {
        if (State_Key(KEY, 3000))show = !show;
        if (show)SHOW_MENU(m_pD3Ddev);

        Draw_Text(3, 5, D3DCOLOR_ARGB(255, 000, 255, 000), "Cheat created\n   by Alien ", L_Text);

        pFont->OnLostDevice();
        pFont->OnResetDevice();
    }
}
cRender.h
Код:
Expand Collapse Copy
#pragma once

#include <d3d9.h>
#include <d3dx9.h>
#include <stdio.h>
#include <stdlib.h>

#define C_Text (DT_CENTER|DT_NOCLIP)
#define L_Text (DT_LEFT|DT_NOCLIP)
#define R_Text (DT_RIGHT|DT_NOCLIP)


class cRender
{
public:
   bool Init;
   bool show;
   cRender(void);

   struct stMenu
   {
     int x,
       y;
   };
   stMenu pos_Menu;

   ID3DXFont * pFont;
   void Draw_Text(int x, int y, DWORD color, const char* text, DWORD ST);
   void Draw_Box(int x, int y, int w, int h, D3DCOLOR Color, LPDIRECT3DDEVICE9 m_pD3Ddev);
   void Draw_Border(int x, int y, int w, int h, int s, D3DCOLOR Color, LPDIRECT3DDEVICE9 m_pD3Ddev);
   BOOL  IsInBox(int x, int y, int w, int h);
   BOOL  State_Key(int Key, DWORD dwTimeOut);
   void  SHOW_MENU(LPDIRECT3DDEVICE9  pDevice);
   void  Init_PosMenu(int x, int y, DWORD KEY, stMenu* pos_Menu, IDirect3DDevice9* m_pD3Ddev);
   void  Draw_Menu_But(stMenu *pos_Menu, const char* text, IDirect3DDevice9* pDevice);
};
Menu.h
Код:
Expand Collapse Copy
#pragma once

#include "cRender.h"

extern int Button_Mass[20], Button_Number;

void  cRender::SHOW_MENU(LPDIRECT3DDEVICE9  pDevice)
{
   Draw_Menu_But(&pos_Menu, "Bhop", pDevice);
   if (Button_Mass[0])
   {
   }

   Draw_Menu_But(&pos_Menu, "Wh", pDevice);
   if (Button_Mass[1])
   {
   }

   Draw_Menu_But(&pos_Menu, "NoFlach", pDevice);
   if (Button_Mass[2])
   {
   }

   Draw_Menu_But(&pos_Menu, "TriggerBot", pDevice);
   if (Button_Mass[3])
   {
   }

   Button_Number = 0;
}
Hook.cpp
Код:
Expand Collapse Copy
#include <Windows.h>
#include <d3d9.h>
#include <d3dx9.h>
#define D3DparamX  , UINT paramx
#define D3DparamvalX , paramx
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "d3dx9.lib")

#include "stdafx.h"
#include "cRender.h"
#include "Menu.h"

cRender Render;

BOOL bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask);
DWORD FindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, char * szMask);
void *Create_Hook(BYTE *src, const BYTE *dst, const int len);

typedef HRESULT(WINAPI* oEndScene)(LPDIRECT3DDEVICE9 pDevice);
oEndScene pEndScene = NULL;

HRESULT APIENTRY myEndScene(LPDIRECT3DDEVICE9 pDevice)
{
   if (!Render.Init)
   {
     D3DXCreateFont(pDevice, 14, 8, FW_BLACK, 2, FALSE, DEFAULT_CHARSET, OUT_TT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &Render.pFont);
     Render.Init = true;
   }
   Render.Init_PosMenu(250, 250, VK_INSERT, &Render.pos_Menu, pDevice);
   return pEndScene(pDevice);
}

BOOL bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask)
{
   for (; *szMask; ++szMask, ++pData, ++bMask)
     if (*szMask == 'x' && *pData != *bMask)
       return false;
   return (*szMask) == NULL;
}
DWORD FindPattern(DWORD dwAddress, DWORD dwLen, BYTE *bMask, const char *szMask)
{
   for (DWORD i = 0; i < dwLen; i++)
     if (bCompare((BYTE*)(dwAddress + i), bMask, szMask))
       return (DWORD)(dwAddress + i);
   return 0;
}
void* Create_Hook(BYTE *src, const BYTE *dst, const int len)
{
   BYTE *jmp;
   DWORD dwback;
   DWORD jumpto, newjump;
   VirtualProtect(src, len, PAGE_READWRITE, &dwback);
   if (src[0] == 0xE9)
   {
     jmp = (BYTE*)malloc(10);
     jumpto = (*(DWORD*)(src + 1)) + ((DWORD)src) + 5;
     newjump = (jumpto - (DWORD)(jmp + 5));
     jmp[0] = 0xE9;
     *(DWORD*)(jmp + 1) = newjump;
     jmp += 5;
     jmp[0] = 0xE9;
     *(DWORD*)(jmp + 1) = (DWORD)(src - jmp);
   }
   else
   {
     jmp = (BYTE*)malloc(5 + len);
     memcpy(jmp, src, len);
     jmp += len;
     jmp[0] = 0xE9;
     *(DWORD*)(jmp + 1) = (DWORD)(src + len - jmp) - 5;
   }
   src[0] = 0xE9;
   *(DWORD*)(src + 1) = (DWORD)(dst - src) - 5;
   for (int i = 5; i < len; i++)
     src[i] = 0x90;
   VirtualProtect(src, len, dwback, &dwback);
   return (jmp - len);
}

void Hook() {
   DWORD*vtbl = 0;
   DWORD hD3D9 = (DWORD)LoadLibraryA("d3d9.dll");
   DWORD table = FindPattern(hD3D9, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx");
   memcpy(&vtbl, (void*)(table + 2), 4);
   pEndScene = (oEndScene)Create_Hook((PBYTE)vtbl[42], (PBYTE)myEndScene, 5);
}
Hook.h
Код:
Expand Collapse Copy
#pragma once

void Hook();
DllMain
Код:
Expand Collapse Copy
#include <Windows.h>
#include "stdafx.h"
#include "Hook.h"

BOOL WINAPI DllMain(HMODULE hModule, DWORD  ul_reason_for_call, LPVOID lpReserved)
{
   switch (ul_reason_for_call)
   {
   case DLL_PROCESS_ATTACH:
   {
     CreateThread(0, 0, (LPTHREAD_START_ROUTINE)Hook, 0, 0, 0);
   }
   case DLL_PROCESS_DETACH:
   case DLL_THREAD_ATTACH:
   case DLL_THREAD_DETACH:
     break;
   }
   return TRUE;
}
ну и собственно stdafx.cpp/h и targetver.h по дефолту
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Название окна поменяй
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
какого именно?(туплю)
В потоке GUIDX, перед while (!Init()) Будет примерно такое:
Код:
Expand Collapse Copy
hWnd = FindWindowA(NULL,"D3D9 Test");
   if (hWnd)
     m_pWindowProc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)myWndProc);
Тебе нужно заменить "D3D9 Test" на название запущенного окна КсГо (я точно не помню полное название)
Тебе можно сделать проще:
Ищешь "D3D9 Test" (Ctrl + F) и просто меняешь на "*Тут название окна Кс*"
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В потоке GUIDX, перед while (!Init()) Будет примерно такое:
Код:
Expand Collapse Copy
hWnd = FindWindowA(NULL,"D3D9 Test");
   if (hWnd)
     m_pWindowProc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)myWndProc);
Тебе нужно заменить "D3D9 Test" на название запущенного окна КсГо (я точно не помню полное название)
Тебе можно сделать проще:
Ищешь "D3D9 Test" (Ctrl + F) и просто меняешь на "*Тут название окна Кс*"
Я нашел if (!Render.Init), но hwnd нету
Код:
Expand Collapse Copy
if (!Render.Init)
    {
        D3DXCreateFont(pDevice, 14, 8, FW_BLACK, 2, FALSE, DEFAULT_CHARSET, OUT_TT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &Render.pFont);
        Render.Init = true;
    }
    Render.Init_PosMenu(250, 250, VK_INSERT, &Render.pos_Menu, pDevice);
    return pEndScene(pDevice);
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
может дело в (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86" ?
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я нашел if (!Render.Init), но hwnd нету
Код:
Expand Collapse Copy
if (!Render.Init)
    {
        D3DXCreateFont(pDevice, 14, 8, FW_BLACK, 2, FALSE, DEFAULT_CHARSET, OUT_TT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Arial", &Render.pFont);
        Render.Init = true;
    }
    Render.Init_PosMenu(250, 250, VK_INSERT, &Render.pos_Menu, pDevice);
    return pEndScene(pDevice);
у тебя d3d меню?
 
может дело в (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86" ?
Стопп у меня вопрос в тест от Крайслера у тебя инжектится удачно?
Ты мне просто какой-то бред прислал причем тут вообще if (!Render.Init) ?
Ты вообще хотябы чуть-чуть понимаешь что за код ты прислал мне?
Это совершенно не то../
Я же написал попробуй сделать так:
Найди в сурсе строчку с D3D9 Test и просто замени ее на название запущенного окна КСГО
 
Стопп у меня вопрос в тест от Крайслера у тебя инжектится удачно?
Ты мне просто какой-то бред прислал причем тут вообще if (!Render.Init) ?
Ты вообще хотябы чуть-чуть понимаешь что за код ты прислал мне?
Это совершенно не то../
Я же написал попробуй сделать так:
Найди в сурсе строчку с D3D9 Test и просто замени ее на название запущенного окна КСГО
Ты какой сурс используешь еще вопрос? Я просто так понял не от этого же проекта от крайслера, так?
 
В тесте от Крайслера это не имеет значение, d3d или ImGui
Пруф:
qsJt5sE.png
 
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
да
Стопп у меня вопрос в тест от Крайслера у тебя инжектится удачно?
Ты мне просто какой-то бред прислал причем тут вообще if (!Render.Init) ?
Ты вообще хотябы чуть-чуть понимаешь что за код ты прислал мне?
Это совершенно не то../
Я же написал попробуй сделать так:
Найди в сурсе строчку с D3D9 Test и просто замени ее на название запущенного окна КСГО
 

Ты какой сурс используешь еще вопрос? Я просто так понял не от этого же проекта от крайслера, так?
 

В тесте от Крайслера это не имеет значение, d3d или ImGui
инжектится удачно, в том то и дело, что нету D3D9 Test, не от крайслера, сурс
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
да

инжектится удачно, в том то и дело, что нету D3D9 Test, не от крайслера, сурс
Пожалуйста, авторизуйтесь для просмотра ссылки.
Мдааааа конечно..... Ты в начале писал что Тест от Крайслера теперь пишешь что нет.. Ты определись, куда ты инжектишь в Тестер от Крайслера правильно?
Кароче напиши мне в ЛС, чтобы полностью и подробно рассмотреть...
 
Этот метод хукинга детект в ксго, себя сразу же уебет, ну либо через некоторое время
 
Назад
Сверху Снизу