Проблема с d3d9 hook

Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Когда инжектю в d3d9 Test by Крайслер, то все ок, ничего не крашит и не вылетает. Когда инжектю в cs go крашит(без всяких ошибок, просто сразу закрывается игра). Почему так может быть?
 
Забаненный
Статус
Оффлайн
Регистрация
8 Мар 2017
Сообщения
313
Реакции[?]
37
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мб, код покажешь?
 
Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Мб, код покажешь?
Так проблема при инжекте в игру
cRender.cpp
Код:
#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
Код:
#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
Код:
#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
Код:
#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
Код:
#pragma once

void Hook();
DllMain
Код:
#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 по дефолту
 
В игре Source SDK
Забаненный
Статус
Оффлайн
Регистрация
10 Янв 2017
Сообщения
2,148
Реакции[?]
806
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Название окна поменяй
 
Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
какого именно?(туплю)
В потоке GUIDX, перед while (!Init()) Будет примерно такое:
Код:
hWnd = FindWindowA(NULL,"D3D9 Test");
   if (hWnd)
     m_pWindowProc = (WNDPROC)SetWindowLongPtr(hWnd, GWL_WNDPROC, (LONG_PTR)myWndProc);
Тебе нужно заменить "D3D9 Test" на название запущенного окна КсГо (я точно не помню полное название)
Тебе можно сделать проще:
Ищешь "D3D9 Test" (Ctrl + F) и просто меняешь на "*Тут название окна Кс*"
 
Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
В потоке GUIDX, перед while (!Init()) Будет примерно такое:
Код:
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 нету
Код:
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);
 
Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
может дело в (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86" ?
 
Забаненный
Статус
Оффлайн
Регистрация
8 Мар 2017
Сообщения
313
Реакции[?]
37
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Я нашел if (!Render.Init), но hwnd нету
Код:
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 меню?
 
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
может дело в (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
Пруф:
 
Забаненный
Статус
Оффлайн
Регистрация
19 Ноя 2017
Сообщения
78
Реакции[?]
1
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
да
Стопп у меня вопрос в тест от Крайслера у тебя инжектится удачно?
Ты мне просто какой-то бред прислал причем тут вообще if (!Render.Init) ?
Ты вообще хотябы чуть-чуть понимаешь что за код ты прислал мне?
Это совершенно не то../
Я же написал попробуй сделать так:
Найди в сурсе строчку с D3D9 Test и просто замени ее на название запущенного окна КСГО
 

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

В тесте от Крайслера это не имеет значение, d3d или ImGui
инжектится удачно, в том то и дело, что нету D3D9 Test, не от крайслера, сурс
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
///
Пользователь
Статус
Оффлайн
Регистрация
25 Янв 2018
Сообщения
511
Реакции[?]
114
Поинты[?]
0
да

инжектится удачно, в том то и дело, что нету D3D9 Test, не от крайслера, сурс
Пожалуйста, авторизуйтесь для просмотра ссылки.
Мдааааа конечно..... Ты в начале писал что Тест от Крайслера теперь пишешь что нет.. Ты определись, куда ты инжектишь в Тестер от Крайслера правильно?
Кароче напиши мне в ЛС, чтобы полностью и подробно рассмотреть...
 
midnight.im
Администратор
Статус
Оффлайн
Регистрация
1 Июл 2015
Сообщения
1,650
Реакции[?]
2,172
Поинты[?]
161K
Этот метод хукинга детект в ксго, себя сразу же уебет, ну либо через некоторое время
 
Сверху Снизу