Как сделать свои читы для crossfire

Как сделать свои читы для crossfire
Как сделать свои читы для crossfire
Как сделать свои читы для crossfire
Как сделать свои читы для crossfire
Как сделать свои читы для crossfire

1)Запускать Только с обходом!!!!После создания!!!

Для начала нам понадобится:
Логгер текстур:Скачать (я сюда добавил потомучто, тут файл доль ше стоит!)
Direct3D StarterKit v3.0b (by Azorbix):Скачать
Microsoft Visual Studio:Скачать

И немного знаний: C++, D3D - _Google_

Настройка D3D:
Первым делом устанавливаем Microsoft Visual Studio и DirectX SDK

Запускаем программу и идём в Tools->Options->Projects and Solutions>VC++ Directories

Во вкладке Show directories for: Выбираем Include files и добавляем путь к нашему DirectX SD K к папке \Include

Делаем тоже самое для Library Files (..\Lib\x86), Executable files(..\)

Всё, теперь мы сможем откомпилить наш Direct3D StarterKit v3.0b

Настройка Injector'а:

В main.cpp нужно изменить только 1 строчку:
Код:

Код: выделить все
#define APP_EXE "target_application.exe"

Где target_application.exe прописываем название вашей игры

Например:

xrEngine.exe, crossfire.exe, pointblank.exe.

Важно!

Название .dll файла и инжектора должны быть одинаковыми.

Как сделать обычный валлхак:
1. Ищем текстуры которые нам нужны используя логгер текстур.

2. Прописываем их в нашем Direct3D StarterKit v3.0b в d3d9dev.cpp в начале файла

Пример:
Код:

Код: выделить все
#define MyWallhack ((NumVertices == xx && primCount == xx) || (NumVertices == xx && primCount == xx))

bool bWallHack = false;

3. Теперь идём в DrawIndexedPrimitive

и добавляем:
Код:

Код: выделить все
if (bWallHack)
{
if (MyWallhack)
{
DWORD dwOldZEnable;
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE,&dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE);
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex,MinVe rt exIndex,NumVertices,startIndex,primCount);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,dwOldZEnable);
}
}

4. Идём в EndScene и ставим валлхак на кнопку включить\выключить:
Код:

Код: выделить все
if(GetAsyncKeyState( VK_NUMPAD1 ) &1 )
bWallHack = !bWallHack;

5. Компилим, инжектим, заходим в игру жмём NUMPAD 1 и видим результат.

Как убрать стены в игре:

Тут всё ещё проще.

С верху файла добавляем:
Код:

Код: выделить все
bool bFog = false;

Идём в DrawIndexedPrimitive и добавляем такую строчку:
Код:

Код: выделить все
if(bFog)
{
m_pD3Ddev->SetRenderState( D3DRS_FOGENABLE , false );
}

Теперь в EndScene
Код:

Код: выделить все
if(GetAsyncKeyState( VK_NUMPAD2 ) &1 )
bFog = !bFog;

Всё готово! При нажатии в игре на кнопку NUMPAD2, опция будет включатся и выключатся.

credits: _www.aden-territory.com and qwe

Теперь собственно то, что нужно сделать, что бы Wallhack работал желаемым образом:
В самом начале кода d3d9dev.cpp вставляем:
Код:

Код: выделить все
unsigned int m_Stride;

Далее, идем в SetStreamSource и прописываем там перед return m_pD3Ddev->SetStreamSource:
Код:

Код: выделить все
if(StreamNumber==0) m_Stride=Stride;

Теперь вместо строчки вначале кода #define MyWallhack ((NumVertices == xx && primCount == xx) || (NumVertices == xx && primCount == xx)) вставляем строчку:
Код:

Код: выделить все
#define MyWallhack ((m_Stride == 28))

Вот и всё! Вы будете видеть других игроков сквозь стены!
Теперь о том, как сделать из Wallhack'a Chams:
В начале d3d9dev.cpp прописываем:
Код:

Код: выделить все
int a=1;

______________________________________________________________________________________________________
Далее после всех bool'ов вставляем этот код:
Код:

Код: выделить все
LPDIRECT3DTEXTURE9 Pink;
const BYTE bPink[58] =
{
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0xFF, 0x00
};
LPDIRECT3DTEXTURE9 Blue;
const BYTE bBlue[60] =
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00
};

______________________________________________________________________________________________________
Можно использовать и другие цвета, на ваш вкус, байты которых можно найти в гугле, ну или вот:
[namespoiler=Цвета]const D3DCOLOR txtRed = D3DCOLOR_ARGB(255, 255, 0, 0);
const D3DCOLOR txtYellow = D3DCOLOR_ARGB(255, 255, 255, 0);
const D3DCOLOR txtGreen = D3DCOLOR_ARGB(255, 0, 255, 0);
const D3DCOLOR txtBlue = D3DCOLOR_ARGB(255, 0, 0, 255);
______________________________________________________________________________________________________
const BYTE bBlue[60] = //Blue
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0x00, 0x00, 0x00, 0x00, 0x00
};

const BYTE bBlack[60] = //Black
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xFF
};

const BYTE bRed[60] = //red
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0xFF, 0x00, 0x00, 0x00
};

const BYTE bYellow[60] = //yellow
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00
};

const BYTE bGreen[60] = //green
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x20, 0xA0, 0x00, 0x00, 0xFF, 0xFF
};

const BYTE bPink[58] = //pink
{
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0xFF, 0x00
};

const BYTE bTur[60] = //turquoise
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00
};

const BYTE bOrange[60] = //orange
{
0x42, 0x4D, 0x3C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x12, 0x0B, 0x00, 0x00, 0x12, 0x0B, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x10, 0x80, 0xF0, 0xB0, 0x00, 0x00
};

const BYTE bWhite[58] = //White
{
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xFF, 0xFF, 0xFF, 0x00
};

const BYTE bGrenade[58] = // Pink
{
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0xFF, 0x00
};[/namespoiler]
______________________________________________________________________________________________________
Идём в BeginScene() и вставляем такие строки перед return m_pD3Ddev->BeginScene(); :
Код:

Код: выделить все
if (a==1)
{
D3DXCreateTextureFromFileInMemory(m_pD3Ddev,(LPCVO ID)&bPink,58,&Pink);
D3DXCreateTextureFromFileInMemory(m_pD3Ddev,(LPCVO ID)&bBlue,60,&Blue);
a=0;
}

Теперь идем в DrawIndexedPrimitive, к нашему волхаку и после строчки m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,D3DZB_FALSE); вставляем такую:
Код:

Код: выделить все
m_pD3Ddev->SetTexture(0,Pink);

А после m_pD3Ddev->SetRenderState(D3DRS_ZENABLE,dwOldZEnable2); такую:
Код:

Код: выделить все
m_pD3Ddev->SetTexture(0,Blue);

Вот собственно и всё! Chams готов! xrEngine.exe dll - это либа, которая компилится из D3D (TatniumD3D.vcproj) Инжектор - это прога, которая инжектит либу в игру(main.cpp/TatniumInjector.vcproj) В общем у вас должно быть откомпилино: 1 либа, которую называешь TatniumD3D.dll и 1 екзешник, который обзываешь TatniumD3D.exe, ложешь их рядом(в одну папку пофиг куда) и запускаешь TatniumD3D.exe, нажимаешь ОК, запускаешь игру, нажимаешь 1 на дополнительной(цифровой) клавиатуре, только не забудь включить NumLock.
______________________________________________________________________________________________________
I
I
I
I
V
2)Запускаем только с Обходом!!!!!!После создания!!!!
______________________________________________________________________________________________________
Ниже я напишу программы, которые вам понадобятся для того что бы создать свой вх для crossfire, в основном это визуальные редакторы и с вычислительными базами.

Microsoft Visual C++ 6.0, MS DirectX SDK 9.0 (Summer 2004) и D3D framework per D3D8 e D3D9 (Hans' s base)
______________________________________________________________________________________________________
Подготовка к началу создание чита для crossfire:
Первым делом необходимо установить программы, такие как Microsoft Visual C++ 6.0 и MS DirectX SDK 9.0
Затем открыть Microsoft Visual C++ 6.0
Создадим новый проект для DLL, выбрав "Fle > ew > Data Projets > Win32 Dynamic-Link Librry > Ok".
Потом даете название своему проекту, например , я назову его M2 D3D Hack.
Отроеться новое где нужно будет выбрать "An empty DLL project" и нажать на кнопку "Finish".

И вот теперь мы будем производить импорт файлов в наш проект, сделаем это перейдя к базе: Hans' s base "Project> Add to Project> Files" , найти папку Hans' s base и установить следующие файлы последовательно, один за другим:

D3dbase.h
D3dbase.cpp
D3dmenu.h
D3dmenu.cpp
Hackbase.cpp

Важно: Не импортировать файлы типа "d3dfont ."

Теперь будет важная фаза создания чит для crossfire, а именно импорт MS DirectX SDK 9.0:
1)Переходим к импорту файлов и библиотек, мы должны работать в D3D.
2)Перейдите в раздел "Tools> Options> Directories tab". Ебедитесь, что установлен параметр "Show directories for" there is "Include Files"
3)Добавьте новую строчку в папке "includes", которая содержится в scrtella, как раз на котором установлено SDK
4)В моем случае, директория размещения файла будет такой : "E: \ Program Files\ Microsoft DirectX 9.0 SDK (Summer 2004) \ INCLUDE"
5)Теперь в "Show directories for" выберите "Library Files" и вместо папки "includes" Добавить папку "LIB",
6)В моем случае это будет: "E: \ Program Files \ Microsoft DirectX 9.0 SDK (Summer 2004) \ Lib"
______________________________________________________________________________________________________
Настройка базы для D3D8 и D3D9, настройка баз чита для crossfire:

Теперь в зависимости от игры будем выбирать между D3D9 и D3D8 , например как в моем случае я использую D3D8 и редактирую файл d3dbase.h:

Код: выделить все
C++ Code: Line
Numbers: ON/OFF - Expand: ON/OFF

//#define FOR_D3D8
#define FOR_D3D9

И заменить его на:

Код: выделить все
Line Numbers: ON/OFF - Expand: ON/OFF

#define FOR_D3D8
//#define FOR_D3D9

Теперь заготовка нашего чит для CrossFire готова. Вы должны проверить, сделано ли все правильно, для этого нажмите F7, если не будет ошибок - то все сделано правильно, можно продолжить создавать свой чит для crossfire дальше.

Задание функций для чита для crossfire. Создание функций для нашего hack:

Нам предстоит создать функции для каждого отдельного раздела hacks, вы же хотите сделать рабочий чит для crossfire? В качестве примера я создам функцию, которая при изменении скорости игры (speedhack для crossfire). будет указывать 0x5F29BC (old) соответственно после перехода 0x10 и 0x5B6 в шестнадцатеричный код.

Первым шагом будет являться определение различных баз Address / Offsets (do this in just under the include "hackbase.cpp"):

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

#define Base_Pointer 0x5F29BC
#define Ofs_MovSpeed_1 0x10
#define Ofs_MovSpeed_2 0x5B6

Теперь мы можем просто создать функцию что бы изменить скорость передвижения в игре, speedhack для crossfire (still in "hackbase.cpp"):

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

void MovSpeed(speedVal)
{
DWORD Addy1 = (DWORD)Base_Pointer; //I read the value of the base pointer
DWORD Addy1 = (DWORD)(addy1+Ofs_MovSpeed_1) + Ofs_MovSpeed_2; //I read the value of the value of base pointer + the first offset addy + the second offset
(DWORD)Addy1 = speedVal; //Change the address of the speed with the value "speedVal" which will be defined by using the function
}

Нам необходимо создать несколько вариантов для выбора скоростей, например, мы делаем так, что бы была возможность выбора скорости от 1 до 4 с диапазоном "0,5". Необходимо добавить переменную, следовательно которая будет позволяет нам выбирать "Чит для crossfire должен быть включен по умолчанию или нет."

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

char opt_MovSpeed[] = { "Off", "0,0", "1,0", "1,5", "2,0", "2,5", "3,0", "3,5", "4,0" };
int CH_MovSpeed = 0;

"E:\Program Files\MICROSOFT DIRECTX 9.0 SDK (SUMMER 2004)\INCLUDE"

В случаем который вы видите сейчас "CH_Movspeed = 0" , то есть когда вы поставите вашу скорость на это значение то сама скорость движения будет установлена ​​в положение OFF, то есть выключенна. Если бы я хотел установить его в 2,5 я поставил : "CH_Movspeed = 5", потому что если "Off" в положение "0" из списка, 2,5 в пятое место.

Теперь будем добавлять функции для взлома crossfire, а если быть точнее делать нам чит для crossfire .

Создание D3D меню:

Добавим в наш hack меню, зададим новую линию с названием функции, вот так:

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

pMenu->AddItem("Mov Speed" , &CH_MovSpeed , opt_MovSpeed, 9);

Где "Mov Speed" является текст, который появляется в меню, CH_MovSpeed ​​это переменная, составленная ранее и в состоянии hack (enabled, disabled, etc.), opt_MovSpeed ​​доступны 9 вариантов.

Теперь мы адаптируем функции для нашего чита crossfire выше созданного варианта:

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

void MovSpeed(speedVal)
{
DWORD Addy1 = (DWORD)Base_Pointer;
DWORD Addy1 = (DWORD)(addy1+Ofs_MovSpeed_1) + Ofs_MovSpeed_2;
(long)Addy1 = (16226 + (speedVal 0,5 60));
}

Разберем все по-порядку, если мы сделали hack например, "0,0", которая является номером 1 в этом варианте мы имеем: 15 256 + (1 х 0,5 х 60) = 16 256, это будет являться по умолчанию скорость для crossfire.

Однако, если будет установлено в "2,5" это пятый вариант, то мы имеем: 15 256 + (5 х 0,5 х 60) = 16 406 и так далее ...

И сейчас мы будем связывать наши функции и меню в единое целое, то есть как создать свой чит для crossfire вы уже знаете.
Придадим нашей функции нужную базу, для этого мы как всегда заходим в "hackbase.cpp" и смотрим:

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

// Seperate thread for making hacks
DWORD WINAPI HACKthread( LPVOID param )
{
// --- hack loop
while (1) {
// ..if (CH_stamina) ....
// ..
Sleep(50);
}
return 0;

Вносим изменения в эту функцию:

Код: выделить все
C++ Code: Line Numbers: ON/OFF - Expand: ON/OFF

// Seperate thread for making hacks
DWORD WINAPI HACKthread( LPVOID param )
{
// --- hack loop
while (1) {
if (CH_MovSpeed != 0)
{
MovSpeed(CH_MovSpeed);
}
Sleep(50);
}
return 0;
}

______________________________________________________________________________________________________
Мы закончили! Чтобы вытащим наш hack, переходим "Build> Сделать активным проектом Configuraton"и выберите"Win32-Release". Нажмите клавишу F7 и найдите наш DLL в папке нашего проекта.

Как сделать свои читы для crossfire Как сделать свои читы для crossfire Как сделать свои читы для crossfire Как сделать свои читы для crossfire Как сделать свои читы для crossfire Как сделать свои читы для crossfire

Изучаем далее:



Как сделать камеру на iphone 4

Панно из тканевых цветов своими руками

Планшет для мастеров маникюра

Красивый текст с поздравлением с днем рождения

Как сделать свидание приключение
Читать новость Как сделать свои читы для crossfire фото. Поделитесь новостью Как сделать свои читы для crossfire с друзьями!