HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
    [Гайд] Создание своего первого чита CSGO
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 14.06.2019, 21:26
R G T X
Новичок
Регистрация: 14.06.2019
Сообщений: 17
С нами: 3641238

Репутация: 3
По умолчанию

Привет, сегодня мы создадим наш первый External-чит для ксго. Создавать мы будем вх, так как вх - идеален, чтобы рассматривать его как основу. Я постараюсь расписать все максимально понятно и по шагам, чтобы вы поняли как что работает, а не просто спастили код и ничему не научились.

Итак, приступим.

1. Создаем простой C++ проект в Visual Studio.

2. Создаем файл main.cpp, здесь и будет весь наш код.

3. Пишем в начало файла следующий код:

C++:





Код:
#include 
#include 
#include 
#include


здесь мы подключили нужные библиотеки для работы, если у вас какой-то нет, то скачайте или подключите через параметры проекта (можете посмотреть в интернете уроки, если не знаете, как это делать, их полно).

4. Теперь самое время сделать переменные с оффсетами. Почему именно переменные? Да потому что их легко обновлять, и не нужно лазить по всему коду и вспоминать, какой оффсет для чего и где.

C++:





Код:
const
DWORD dwLocalPlayer
=
0xCBD6A4
;
const
DWORD dwEntityList
=
0x4CCDCBC
;
const
DWORD m_iTeamNum
=
0xF4
;
const
DWORD m_iGlowIndex
=
0xA3F8
;
const
DWORD dwGlowObjectManager
=
0x520DAE0
;


разберем каждое ключевое слово в коде:

const - мы делаем именно константы (не переменные), чтобы им нельзя было присвоить другие значения, кроме тех, которые мы уже задали.

DWORD - класс. Переменные имеют тип экземляра именно класса DWORD.

5. Сейчас мы определим переменные, с которыми мы будем работать на протяжении всего написания чита.

C++:





Код:
HANDLE process
;
// непосредственно сам процесс CSGO
DWORD clientBase
;
// клиентская часть
DWORD engineBase
;
// игровая часть (движок)


Мы объявили необходимые переменные, комментарии, обозначающие "что зачем и почему" я написал в самом коде.

6. Что же, теперь приступим к написанию нашего чита непосредственно.

Первое, что нам нужно - это возможность включать или выключать те или иные функции (в нашем случае - вх).

Если вы подумали о переменной типа boolean, определяющей статус функции - вы правы.

C++:





Код:
bool
wh
=
false
;


Мы объявили переменную, которая определяет статус функции, по умолчание вх выключено, значит значение переменной false.

7. Так как мы создаем External-чит, нам нужно читать память и изменять ее.

Добавим следующий код, необходимый нашему читу. Что и зачем расскажу по ходу дела.

C++:





Код:
DWORD
getModuleBaseAddress
(
DWORD pid
,
const
char
*
name
)
{
HANDLE snapshot
=
CreateToolhelp32Snapshot
(
TH32CS_SNAPMODULE
,
pid
)
;
MODULEENTRY32 mEntry
;
mEntry
.
dwSize
=
sizeof
(
MODULEENTRY32
)
;
do
{
if
(
!
strcmp
(
mEntry
.
szModule
,
name
)
)
{
CloseHandle
(
snapshot
)
;
return
(
DWORD
)
mEntry
.
modBaseAddr
;
}
}
while
(
Module32Next
(
snapshot
,
&
mEntry
)
)
;
}


данный код находит в нашей оперативной памяти именно то приложение, которое нам нужно (по его id - pid, который передается функции).

C++:





Код:
template

T
readMem
(
DWORD address
)
{
T buffer
;
ReadProcessMemory
(
process
,
(
LPVOID
)
address
,
&
buffer
,
sizeof
(
buffer
)
,
0
)
;
return
buffer
;
}
template

void
writeMem
(
DWORD address
,
T value
)
{
WriteProcessMemory
(
process
,
(
LPVOID
)
address
,
&
value
,
sizeof
(
value
)
,
0
)
;
}


эти стандартные функции читают и пишут память, именно с помощью них мы будем взаимодействовать с игрой.

8. Теперь создадим входную точку, без которой не будет работать ни одно приложение C++. Это int main().

C++:





[CODE]
SetConsoleTitle
(
"Top non-pasted shit 1337"
)
;
// устанавливаем заголовок нашей консоли
std
::
cout



9. Теперь пора создать сам вх. Создадим метод (пусть будет wallhack())

C++:





Код:
Void
wallhack
(
)
{
while
(
true
)
// создаем бесконечный цикл
{
Sleep
(
10
)
;
// таймаут 10 мс, чтобы не грузить процессор под 100
if
(
!
wallhack
&&
!
readMem

(
readMem

(
clientBase
+
dwLocalPlayer
)
+
0xED
)
)
// если вх выключено или не удается прочитать память - выходим из цикла
continue
;
DWORD glowObj
=
readMem

(
clientBase
+
dwGlowObjectManager
)
;
// создаем объект glowObj из модельки игрока
DWORD myTeam
=
readMem

(
readMem

(
clientBase
+
dwLocalPlayer
)
+
m_iTeamNum
)
;
// создаем объект тиммейтов
for
(
int
x
=
0
;
x

(
clientBase
+
dwEntityList
+
x
*
0x10
)
;
// обычный игрок
if
(
player
==
0
)
continue
;
bool
dormant
=
readMem

(
player
+
0xED
)
;
// спектатор
if
(
dormant
)
continue
;
DWORD team
=
readMem

(
player
+
m_iTeamNum
)
;
// тиммейт
if
(
team
!=
2
&&
team
!=
3
)
continue
;
DWORD currentGlowIndex
=
readMem

(
player
+
m_iGlowIndex
)
;
// текущий индекс игрока
if
(
team
!=
myTeam
)
// если игрок не тиммейт
{
// делаем его обводку красным
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x4
,
255
)
;
// red
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x8
,
0
)
;
// green
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0xC
,
0
)
;
// blue
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x10
,
255
)
;
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x24
,
true
)
;
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x25
,
false
)
;
}
else
// если игрок тиммейт
{
// делаем его обводку синим
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x4
,
0
)
;
// red
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x8
,
0
)
;
// green
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0xC
,
255
)
;
// blue
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x10
,
255
)
;
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x24
,
true
)
;
writeMem

(
glowObj
+
currentGlowIndex
*
0x38
+
0x25
,
false
)
;
}
}
}
}


10. Теперь нам нужно где-то вызывать наш метод. Конечно же в main()!

Теперь вызовем наш метод:

std::thread whThread(wallhack)

И создадим в нашем главном методе бесконечный цикл.

C++:





Код:
while
(
true
)
{
if
(
GetAsyncKeyState
(
VK_F9
)
)
// если нажали f9
{
wh
=
!
wh
;
// заменяем значение переменной на противоположное
if
(
wh
)
std
::
cout
(
"wh: on\n"
)
;
// если wallhack - true, то пишем, что вх включен
else
std
::
cout
(
"wh: off\n"
)
;
// иначе пишем, что вх выключен
Sleep
(
100
)
;
// таймаут, чтобы сбросить нагрузку
}
}


На этом все,тема будет дополнятся.
 
Ответить с цитированием

  #2  
Старый 14.06.2019, 21:44
mydedisdead
Новичок
Регистрация: 19.05.2019
Сообщений: 9
С нами: 3677840

Репутация: 0
По умолчанию

Зачем все так усложнять?( Через видовую матрицу можно намного быстрее и проще для мозга сделать, хоть и дешевле выглядеть будет
 
Ответить с цитированием

  #3  
Старый 14.06.2019, 23:53
KlareoN
Новичок
Регистрация: 18.10.2017
Сообщений: 5
С нами: 4511157

Репутация: 3
По умолчанию

Вот это рофл, не умеешь компилировать да и кидок, а ещё и тут обитаешь.
 
Ответить с цитированием

  #4  
Старый 15.06.2019, 01:43
atizoff
Познавший АНТИЧАТ
Регистрация: 02.08.2018
Сообщений: 1,295
С нами: 4095395

Репутация: 183


По умолчанию

давай read/write драйвером от крайслера? вот это уже будет по-интереснее

https://yougame.biz/threads/60285/
 
Ответить с цитированием

  #5  
Старый 15.06.2019, 07:30
uryukhai
Участник форума
Регистрация: 01.07.2017
Сообщений: 196
С нами: 4667719

Репутация: 28
По умолчанию

ясно, так и не рассказал

upload_2019-6-15_8-30-41.pnguryukhai · 15 Июн 2019 в 06:30' data-fancybox="lb-post-352397" data-lb-caption-extra-html="" data-lb-sidebar-href="" data-single-image="1" data-src="https://www.blast.hk/attachments/31964/" style="cursor: pointer;" title="upload_2019-6-15_8-30-41.png">
 
Ответить с цитированием

  #6  
Старый 15.06.2019, 08:45
lemonager
Постоянный
Регистрация: 24.03.2018
Сообщений: 810
С нами: 4284404

Репутация: 213


По умолчанию

Требую урок по лайтовому аиму!! Это ахуенно + урок по созданию интерфейса окна.
 
Ответить с цитированием

  #7  
Старый 15.06.2019, 19:55
Oreshka23
Постоянный
Регистрация: 10.05.2015
Сообщений: 341
С нами: 5794960

Репутация: 98
По умолчанию

Цитата:
Сообщение от Lemonager  

Требую урок по лайтовому аиму!! Это ахуенно + урок по созданию интерфейса окна.
мнение анимешников не учитывается
 
Ответить с цитированием

  #8  
Старый 15.06.2019, 22:27
Mirrorka
Постоянный
Регистрация: 02.12.2017
Сообщений: 865
С нами: 4444964

Репутация: 163


По умолчанию

рассказ окончен.

держу в курсе
 
Ответить с цитированием

  #9  
Старый 15.06.2019, 22:36
FYS
Постоянный
Регистрация: 06.05.2019
Сообщений: 980
С нами: 3696179

Репутация: 88


По умолчанию



Вряд ли дополниться )0)
 
Ответить с цитированием

  #10  
Старый 18.06.2019, 20:08
rraggerr
Познавший АНТИЧАТ
Регистрация: 16.03.2017
Сообщений: 1,626
С нами: 4821087

Репутация: 133


По умолчанию

Цитата:
Сообщение от Alargis  

люди все еще делают гайды по глоу есп, лучше бы про d3d делали гайды уже а это давно всем известно думаю
по д3д уже тоже всем все давно известно
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.

×

Создать сделку

Продавец: ник или ID

Название сделки:

Сумма USDT:

Срок сделки, дней:

Кто платит комиссию:

Условия сделки:

После создания сделки средства будут зарезервированы в холде до завершения сделки.

×

Мои сделки

Загрузка...
×

Сделка


Загрузка чата...
×

ESCROW ADMIN PANEL

Загрузка...
Загрузка...