[C++] Создание Сhameleon WallHack на примере CS:GO - Форум Cheat-Master.ru

Скидка на продавца! Успей!
  • Страница 1 из 2
  • 1
  • 2
  • »
Модератор форума: Sanoxxx, Alowir  
Форум » Программирование » C++/C Программирование » [C++] Создание Сhameleon WallHack на примере CS:GO
[C++] Создание Сhameleon WallHack на примере CS:GO
KsardasДата: Четверг, 22.06.2017, 14:56 | Сообщение # 1
麵包和共振
Группа: Проверенные
Сообщений: 1302
Статус: Offline
Данный метод может быть использован для любой игры.
Chameleon Wallhack
(он же чамсвх) работает так: когда часть модельки (или вся моделька) находится в прямой видимости игрока она имеет один цвет (к примеру зеленый), когда модельку не видно, она имеет другой цвет (к примеру красный).


Немного теории, как он будет работать:
1) Инъектим наш код (в данном случае в виде .dll) в программу
2) Перехватываем DrawIndexedPrimitive (функция рисует примитивы)
3) Сравниваем количество страйдов, вершин и примитивов с нужными и накладываем нашу текстурку (об этом всем подробнее ниже)
4) Вызываем оригинальный DrawIndexedPrimitive

Начнем.
Первым делом подключим необходимые инклуды
Код
#include <vector>
// для директа
#include <d3d9.h>
#include <d3dx9core.h>
// для перехвата функции endscene
#include "detours.h"
#include "Header.h"
#include <iostream>
#include <string>


Добавляем библиотеки для поиска
Код
#pragma comment(lib, "d3d9")
#pragma comment(lib, "d3dx9")
// тут и так понятно зачем это нужно
using namespace std;


Дальше объявляем все нужные нам переменные и функции.
Добавляем оригинальные функции d3d9

Код
typedef HRESULT(WINAPI* pDrawIndexedPrimitive)(LPDIRECT3DDEVICE9,
                                 D3DPRIMITIVETYPE,
                                 int, UINT, UINT, UINT, UINT);
typedef HRESULT(WINAPI* pEndScene)(LPDIRECT3DDEVICE9);


Функции, на которые будем подменять
Код
pDrawIndexedPrimitive oDrawIndexedPrimitive;
pEndScene oEndScene;


Объявляем переменные
Код
D3DVIEWPORT9 Vpt;
D3DLOCKED_RECT d3dlr;
LPD3DXFONT pFont = NULL;

LPDIRECT3DBASETEXTURE9 BTEX = NULL;
LPDIRECT3DTEXTURE9 Grey, Red;
bool Generate = true;


Дальше начались уже наши функции. Внимание, я привожу код в порядке "распутывания клубка", в каком порядке вставлять функции в исходный код, я думаю, вы разберетесь сами.
// Начальная функция, которая вызывается, когда библиотеку заинъектиили в процесс. Аналог простого main в консольных приложениях.


Код
int WINAPI DllMain(HINSTANCE hInst, DWORD ul_reason_for_call, void* lpReserved)
{
    // когда присоединили нашу длл к процессу, кстати, эта функции еще вызывается в нескольких случаях, к примеру,
    //когда библиотеку отсоединили от процесса, но тогда в проверке нужно будет указывать другую причину
    // нам это не особо нужно, поэтому углублятся не буду
    if (ul_reason_for_call == DLL_PROCESS_ATTACH)  
  // создаем отдельный поток и вызываем в нем функцию TF()
  CreateThread(0, 0, (LPTHREAD_START_ROUTINE)TF, 0, 0, 0);
    return 1;
}


Наша функция TF(), при желании ее можно пропустить, и сразу в потоке вызывать GetDevice9Methods()
Код
void TF() {
    // Здесь будет осуществляться перехват функций
    GetDevice9Methods();
    // Если вы хотите сделать, чтобы к примеру по нажатию клавиши менялся цвет чамсов, то делается это примерно так:
    /* Создаем бесконечный цикл
    В нем ожиданием нажатия клавиши
    После того, как клавишу нажали, что-то делаем*/

}


Функция GetDevice9Methods()
Код
void GetDevice9Methods()
{
    // инициализации переменных
    DWORD dip9 = 0;
    DWORD endScene9 = 0;
    IDirect3D9 *d3d9_ptr;
    IDirect3DDevice9* d3dDevice;
    DWORD* vtablePtr;
    D3DPRESENT_PARAMETERS d3dpp;
    // создаем окно, нужно для перехвата
    HWND hWnd = CreateWindowExA(0, "STATIC", "dummy", 0, 0, 0,
        0, 0, 0, 0, 0, 0);
    // получаем смещение
    HMODULE hD3D9 = GetModuleHandleA("d3d9.dll");
    // если удалось получить смещение
    if (hD3D9 != 0) {
  // Создаем интерфейс
  d3d9_ptr = Direct3DCreate9(D3D_SDK_VERSION);
  // обнуляем память
  ZeroMemory(&d3dpp, sizeof(d3dpp));
  d3dpp.Windowed = 1;
  d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
  // создаем девайс на наше свежесозданное окно
  d3d9_ptr->CreateDevice(0, D3DDEVTYPE_HAL, hWnd,
          D3DCREATE_SOFTWARE_VERTEXPROCESSING,
          &d3dpp, &d3dDevice);
  // здесь находим адреса в vmt, нужно для перехвата
  vtablePtr = (PDWORD)(*((PDWORD)d3dDevice));
  dip9 = vtablePtr[82] - (DWORD)hD3D9;
  endScene9 = vtablePtr[42] - (DWORD)hD3D9;
  d3dDevice->Release();
  d3d9_ptr->Release();
    }
    CloseHandle(hWnd);
    // собственно перехватываем наши две основные функции
    // теперь, вместо оригинальных функций, будут вызываться наши
    // Важный нюанс, функции, которые начинается на o - это
    // оригинальные функции
    // наши, начинаются с hk
    oDrawIndexedPrimitive =
  (pDrawIndexedPrimitive)DetourFunction((PBYTE)((DWORD)hD3D9 + dip9),
                                (PBYTE)hkDrawIndexedPrimitive);
    oEndScene = (pEndScene)DetourFunction((PBYTE)((DWORD)hD3D9 + endScene9),
                                (PBYTE)hkEndScene);
}


Наша перехваченная функция для отрисовки примитивов
Код
HRESULT WINAPI hkDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDev,
    D3DPRIMITIVETYPE PrimType, INT BaseVertexIndex, UINT MinVertexIndex,
    UINT NumVertices, UINT startIndex, UINT PrimitiveCount)
{
    // все дефолтно, создаем переменные
    LPDIRECT3DVERTEXBUFFER9 Stream_Data;
    UINT Offset = 0;
    UINT Stride = 0;
    
    if (pDev->GetStreamSource(0, &Stream_Data, &Offset, &Stride) == S_OK)
  Stream_Data->Release();

    // Самая интересная часть. У каждой модели есть страйды, количество вершин и количество примитивов
    // обычно, у каждой модели эти три переменные формируют уникальную комбинацию, по которой
    // можно находить модель.
    // Т.е. тут должна быть проверка вида if ( (Stride=32) && (NumVertices==1784) && (PrimitiveCount==1342))
    // Но во многих игровых движках, чем дальше от тебя моделька, тем меньше страйдов, вершин и примитивов
    // Ведь зачем рисовать модельку хорошего качества, если она находится на большом расстоянии от игрока и
    // занимает 1 см^2 на экране
    // Плюс, надо учитывать то, что голова это одна модель, тело уже другая
    // Полный список для игры CS:GO, готовый в употребление, возьмите тут http://pastebin.com/5tq2dvJq, чтобы его найти
    // для другой игры, можно воспользоваться логгером или погуглить имя_вашей_иры model rec

    if (ct_model)
    {
  // Здесь устанавливаем нашей моделе серую текстуру, котоую будет видно, когда модель за стеной
  // D3DRS_ZENABLE устанавливаем false
  pDev->SetRenderState(D3DRS_ZENABLE, false);
  pDev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
  pDev->SetTexture(0, Grey);
  // вызываем оригинальную функцию
  oDrawIndexedPrimitive(pDev, PrimType, BaseVertexIndex,
   MinVertexIndex, NumVertices, startIndex,
   PrimitiveCount);
  // здесь накладываем красную текстурку, когда моделька в прямой зоне видимости игрока
  pDev->SetRenderState(D3DRS_ZENABLE, true);
  pDev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
  pDev->SetTexture(0, Red);
  

    }
    // вызываем оригинальную функцию
    return oDrawIndexedPrimitive(pDev, PrimType, BaseVertexIndex,
         MinVertexIndex, NumVertices, startIndex,
  PrimitiveCount);
}


Перехваченная функция endscene
Код
// Вызывается, когда происходит окончание сцены. Каждая сцена = 1 кадру.
// Т.е. если в игре 30 fps, то данные функция вызывается 30 раз в секунду
HRESULT WINAPI hkEndScene(LPDIRECT3DDEVICE9 pDev)
{
    pDev->GetViewport(&Vpt);
  // Если наши текстурки не были еще сгенерированы, то генерируем их
  if (Generate)

  {
   // цвета, последнии три цифры в функции отвечают за цвет
   // задаются по типу RGB
   GenerateTexture(pDev, &Red, D3DCOLOR_ARGB(255, 255, 0, 0));

   GenerateTexture(pDev, &Grey, D3DCOLOR_ARGB(255, 128, 128, 128));

   Generate = false;

  }
    // вызываем оригинальную функцию
    return oEndScene(pDev);
}


И последняя функция для генерации текстур
Код
// И функция для генерации текстур с нужным нам цветом
// В ней ничего интересно нет, поэтому углублятся не буду
HRESULT GenerateTexture(IDirect3DDevice9 *pD3Ddev, IDirect3DTexture9 **ppD3Dtex, DWORD colour32)

{

    if (FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex, NULL)))

  return E_FAIL;

    WORD colour16 = ((WORD)((colour32 >> 28) & 0xF) << 12)

  | (WORD)(((colour32 >> 20) & 0xF) << 8)

  | (WORD)(((colour32 >> 12) & 0xF) << 4)

  | (WORD)(((colour32 >> 4) & 0xF) << 0);

    D3DLOCKED_RECT d3dlr;

    (*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);

    WORD *pDst16 = (WORD*)d3dlr.pBits;

    for (int xy = 0; xy < 8 * 8; xy++)

  *pDst16++ = colour16;

    (*ppD3Dtex)->UnlockRect(0);

    return S_OK;

}


Cамая дешевая и качественная накрутка INSTAGRAM/TELEGRAM- http://cheat-master.ru/forum/199-740956-1
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
PlanovskoiiДата: Четверг, 22.06.2017, 19:58 | Сообщение # 2
Любитель
Группа: Заблокированные
Сообщений: 49
Статус: Offline
Разве VAC не определит его?

C++
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
KsardasДата: Воскресенье, 25.06.2017, 20:44 | Сообщение # 3
麵包和共振
Группа: Проверенные
Сообщений: 1302
Статус: Offline
Цитата Planovskoii ()
Разве VAC не определит его?

Это не исключено.
Я играл с ним месяц,бана не получил.Но,шанс бана c любыми читами действительно велик.

Добавлено (23.06.2017, 20:47)
---------------------------------------------
Вверх!

Добавлено (24.06.2017, 21:54)
---------------------------------------------
Подниму!

Добавлено (25.06.2017, 20:44)
---------------------------------------------
Актуально!


Cамая дешевая и качественная накрутка INSTAGRAM/TELEGRAM- http://cheat-master.ru/forum/199-740956-1

Сообщение отредактировал Ksardas - Четверг, 22.06.2017, 21:10
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
Diaz™Дата: Воскресенье, 25.06.2017, 23:05 | Сообщение # 4
Боец
Группа: Пользователи
Сообщений: 214
Статус: Offline
еси криптануть и через флеш детектить в процесс, меньше шанс получения бана?

sam takoy)))))
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
KsardasДата: Суббота, 29.07.2017, 19:14 | Сообщение # 5
麵包和共振
Группа: Проверенные
Сообщений: 1302
Статус: Offline
Цитата Diaz™ ()
еси криптануть и через флеш детектить в процесс, меньше шанс получения бана?

Не думаю,это самый дефолтный вх.Чтобы уменьшить кол-во детектов,слишком много нужно будет над ним работать.Это кстати не только на Кс распространяется.

Добавлено (26.06.2017, 23:05)
---------------------------------------------

Добавлено (01.07.2017, 19:38)
---------------------------------------------

Добавлено (03.07.2017, 10:48)
---------------------------------------------

Добавлено (04.07.2017, 11:49)
---------------------------------------------

Добавлено (09.07.2017, 12:45)
---------------------------------------------

Добавлено (10.07.2017, 19:22)
---------------------------------------------

Добавлено (18.07.2017, 18:55)
---------------------------------------------

Добавлено (23.07.2017, 23:12)
---------------------------------------------

Добавлено (24.07.2017, 23:34)
---------------------------------------------

Добавлено (29.07.2017, 19:14)
---------------------------------------------


Cамая дешевая и качественная накрутка INSTAGRAM/TELEGRAM- http://cheat-master.ru/forum/199-740956-1
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
Jamiraque[t0wer]Дата: Понедельник, 31.07.2017, 15:14 | Сообщение # 6
Советник
Группа: Пользователи
Сообщений: 610
Статус: Offline
Цитата Planovskoii ()
Разве VAC не определит его?

dll нет в базе, инжектор не детект = вак не определит
Цитата Diaz™ ()
еси криптануть и через флеш детектить в процесс, меньше шанс получения бана?

крипт возможно, инжект с флешки = юзлесс процедура

автор молодец
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
KsardasДата: Вторник, 01.08.2017, 13:40 | Сообщение # 7
麵包和共振
Группа: Проверенные
Сообщений: 1302
Статус: Offline
Подниму

Cамая дешевая и качественная накрутка INSTAGRAM/TELEGRAM- http://cheat-master.ru/forum/199-740956-1
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
BinL3RДата: Среда, 02.08.2017, 10:21 | Сообщение # 8
Боец
Группа: Пользователи
Сообщений: 225
Статус: Offline
Цитата Ksardas ()
Добавляем оригинальные функции d3d9
Код
typedef HRESULT(WINAPI* pDrawIndexedPrimitive)(LPDIRECT3DDEVICE9,
                                 D3DPRIMITIVETYPE,
                                 int, UINT, UINT, UINT, UINT);
typedef HRESULT(WINAPI* pEndScene)(LPDIRECT3DDEVICE9);


Разве typedef не отвечает за изменение названия функции?


#include
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
DECODEДата: Четверг, 03.08.2017, 16:20 | Сообщение # 9
Coder
Группа: Заблокированные
Сообщений: 193
Статус: Offline
Говорят, что можно заинжектить в стороннюю DLL-ку, тогда VAC не спалит. А так - годная шляпа, только одного не понимаю, сколько не пытался понять работу с DirectX - так и не понимаю.

► Оптимизация SCM / SMTA (pawn): http://cheat-master.ru/forum/117-706531-1
► CM Smiles - Mini Chat (v1.0): http://cheat-master.ru/forum/2-706062-1
► [Evolve-RP] - Баг на деньги (история тестера): http://cheat-master.ru/forum/282-709301-1
► Накрутка сообщений в ВКонтакте (new): http://cheat-master.ru/forum/199-709369-1
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
KsardasДата: Четверг, 17.08.2017, 21:40 | Сообщение # 10
麵包和共振
Группа: Проверенные
Сообщений: 1302
Статус: Offline
Актуально

Cамая дешевая и качественная накрутка INSTAGRAM/TELEGRAM- http://cheat-master.ru/forum/199-740956-1
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
INHUМANДата: Четверг, 17.08.2017, 22:09 | Сообщение # 11
Боец
Группа: Пользователи
Сообщений: 158
Статус: Offline
Копипаст конечно, но пускай здесь тоже будет, пригодится.
Если что исходники 15 года, но сомневаюсь, что ВАК его палит




Сообщение отредактировал INHUМAN - Четверг, 17.08.2017, 23:16
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
KsardasДата: Суббота, 02.09.2017, 17:16 | Сообщение # 12
麵包和共振
Группа: Проверенные
Сообщений: 1302
Статус: Offline
INHUМAN, исходники 16 года.

Cамая дешевая и качественная накрутка INSTAGRAM/TELEGRAM- http://cheat-master.ru/forum/199-740956-1
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
getmejiayuДата: Вторник, 05.09.2017, 16:04 | Сообщение # 13
Новичок
Группа: Пользователи
Сообщений: 1
Статус: Offline
А посвежее есть исходники?
Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
BLOOM228Дата: Понедельник, 18.09.2017, 19:36 | Сообщение # 14
Бывалый
Группа: Читер CM
Сообщений: 411
Статус: Offline
Цитата Ksardas ()
исходники 16 года.
Какого 16 года
Эта фигня со времён динозавров. Даже в сурсах собейта это есть...


ALFEROV

мой собейт - клик
мой вк - тык

Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
MussollinyДата: Воскресенье, 29.10.2017, 12:57 | Сообщение # 15
♣ БАРЫГА ♣
Группа: Заблокированные
Сообщений: 106
Статус: Offline
Полезно, но шанс отлететь = 80%.
Однако если брать за исходник разработки и дорабатывать дальше, то может что-то и получиться




Последние товары с игрового магазина:
Найти еще что-нибудь в магазине:
Форум » Программирование » C++/C Программирование » [C++] Создание Сhameleon WallHack на примере CS:GO
  • Страница 1 из 2
  • 1
  • 2
  • »
Поиск:
Статистика Форума
Последнии темы Читаемые темы Лучшие пользователи Новые пользователи
[CLEO] Autopilot | А... [_CM_PROXY__]

[1958624] windranger1337,... [АК_47]

"[Заказ № 1958906] T... [АК_47]

Жалоба на [CM]Rodkin [АК_47]

[1958823] BENNEX, невалид... [АК_47]

Не верный пароль [АК_47]

[1957780] HapeH, не валид... [АК_47]

Многофункциональная ловля... [[CM]ProFIX]

Как зайти с одного компа ... [izreker228]

№ 1958701 Один_Из_Leone T... [Один_Из_Leone™]

ДРП акк 16кк [[СМ]Тоник]

Куплю распиаренное ПУ [[CM]Madara]

[1]>[0.3z][RUS] S0beit modified by MishaN [10001]

[2]>Курилка [10000]

[3]>Поиск CLEO скриптов | Вопросы по клео скриптам [9988]

[4]>Флудильная [9936]

[5]>Курилка [9688]

[6]>Курилка [9614]

[7]>RakBot - Качай аккаунты не напрягаясь! [9609]

[8]>Общение читеров [CM] [9546]

[9]>S0beit - pr9n project for samp 0.3.7 [9493]

[10]>Часто задаваемые вопросы... [8225]

[11]>Скуплю Advance по 300р за 1кк и DIamond по 250р [7624]

[12]>[0.3.7][RUS] Sobeit modified by MishaN [6241]

[1]>АК_47 [31928]

[2]>GеNius [7087]

[3]>[CM]Russel [5528]

[4]>romka619 [5000]

[5]>[CM]AGRESSOR [4643]

[6]>Сэс [4405]

[7]>Snake_Firm [4346]

[8]>Artem_Buero [4191]

[9]>[CM]Durman [3132]

[10]>iMaddy [2856]

[11]>sky_Woker [2856]

[12]>[CM]Рафаэль [2757]

[13]>Sa1nteD [2677]

[14]>Ch0c0Cube [2446]

[15]>lanixchannel [2280]

zynzyn14 [19.07.2018|02:38]

pomoique [18.07.2018|23:58]

KatilovSanek [18.07.2018|23:42]

Shoonya [18.07.2018|23:42]

stp_nF [18.07.2018|23:38]

dushamishkin [18.07.2018|23:33]

Mad_Bad [18.07.2018|23:16]

TOOTOOT [18.07.2018|23:16]

whereareyo2k [18.07.2018|23:09]

Bot_Moderator [18.07.2018|23:04]

forever1322 [18.07.2018|23:03]

savex314 [18.07.2018|22:55]

fiMa02 [18.07.2018|22:52]

kirillshutoff2228112fdfds [18.07.2018|22:51]

Stepan22222 [18.07.2018|22:47]


CM Team © 2009-2018 Администрация не несёт ответственности за размещённые материалы. Условия пользования
Все материалы предоставлены в ознакомительных целях и администрация предлагает удалить их после ознакомления.

Положение о защите персональных данных на сайте, Пользовательское соглашение, Договор оказания услуг.