Создаем Internal чит без создания потока и лишнего веса

Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.

В данном гайде я расскажу как избавиться от мусорного веса модуля, и создадим собственный чит без использования WinApi функции CreateThread.

Создаем новый проект
динамической библиотеки .dll
Создаем файл .cpp (назовем его Source) и напишем в нем точку входа.
C++:
#include <windows.h> // библиотека из которой возьмем некоторые типы данных (например HINSTANCE / HMODULE)

// Сделаем все в одном файле, чтобы вы не запутались.

// Создаем обычный класс, в котором будет хранится информация игровой структуры Cvars
class netvars
{
public:
    // Изменим Field View для нашего локального игрока (FOV)
    void FieldView()
    {
        *(float*)(nCvars() + 0x4) = 100.f; // прибавляя к адресу структуры его смещение, получаем необходимую для перехвата функцию и меняем ее значение
    }
private: // Используем данный тип доступа, так как нам не пригодятся данные из него использовать вне класса
    netvars* nCvars() { return *(netvars**)0x142182330; } // указатель, хранящий в себе адрес игровой стуктуры Cvars
}; netvars pNetvars; // Создаем переменную класса от которой будем отталкиваться в точке входа, заметьте, не указатель.

bool DllMain(HINSTANCE hDll, unsigned long long dDll, void*)
{
    switch (dDll) // С помощью оператора switch "выбираем" нужный нам параметр для переменной dDll
    {
    case 1: // Именно в case 1 мы и будем работать, ведь #define DLL_PROCESS_ATTACH = 1.
        // Используйте бесконечный цикл, если у вас имеются методы, которые отрабатывают не один раз, (используйте while/for)
        // В нашем случае можно не использовать цикл, фов не исчезнет, отработая 1 раз
        pNetvars.FieldView();
        break;
    }
    return true;
}

Мы только что
избавились от ненужной WINAPI CreateThread, которая висела у нас бы в импортах и MRAC ее бы спалил.


Далее, избавимся от
ненужного веса нашего модуля.

1. Заходим в настройки проекта
2. С.С++ 🠒 Optimization 🠒 Maximum Optimization (Favor size)
3. Code generation 🠒 Security Check 🠒 Disable Security Check
4. Linker 🠒 Manifest file 🠒 Generate Manifest 🠒 NO
5. Linker 🠒 Debugging 🠒 Generate Debug Info 🠒 NO
6. Linker 🠒 Advanced 🠒 EntryPoint 🠒 "Ваше название точки входа"
7. Code generation 🠒 Enable String Pooling 🠒 Yes.


Исходный код / скомпилированный проект я прилагать сюда не буду, все прописано в одном файле, просто скопируйте.

 
Всем Рептилойдам - Рен ТВ
Пользователь
Статус
Оффлайн
Регистрация
1 Фев 2020
Сообщения
541
Реакции[?]
92
Поинты[?]
0
Неплохо.
DllMain заменяем на то название, которое указали в п6 " inker 🠒 Advanced 🠒 EntryPoint 🠒 "Ваше название точки входа" ".
Так же необходимые винапи для отрисовки ЕСП лучше брать из игры или использовать касомные.
Вместо своей рисовки мы можем использовать игровой ui.
Плюсы такого решения:
Меньший вес
Нету лишних вызовов winapi
Простота в использовании
Хукайте через present (индекс для dx11: 8)
 
Searching for myself
Пользователь
Статус
Оффлайн
Регистрация
29 Сен 2021
Сообщения
212
Реакции[?]
69
Поинты[?]
11K
switch (dDll) // С помощью оператора switch "выбираем" нужный нам параметр для переменной dDll
А почему не сделать так?
Код:
BOOL APIENTRY DllEntryPoint( const HMODULE hModule, const DWORD dwCallReason,
                             [[maybe_unused]] LPVOID lpReserved ) {

    if ( dwCallReason != DLL_PROCESS_ATTACH )
        return FALSE;
        
    // Code...
}
 
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,009
Реакции[?]
1,277
Поинты[?]
2K
кринжанул, поток наверно не за красивые глазки создается?
 
Последнее редактирование:
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,009
Реакции[?]
1,277
Поинты[?]
2K
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
22 Апр 2020
Сообщения
731
Реакции[?]
752
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
2 Мар 2021
Сообщения
1,083
Реакции[?]
406
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Забаненный
Статус
Оффлайн
Регистрация
22 Апр 2020
Сообщения
731
Реакции[?]
752
Поинты[?]
1K
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Начинающий
Статус
Оффлайн
Регистрация
21 Дек 2018
Сообщения
383
Реакции[?]
11
Поинты[?]
2K
В данном гайде я расскажу как избавиться от мусорного веса модуля, и создадим собственный чит без использования WinApi функции CreateThread.

Создаем новый проект
динамической библиотеки .dll
Создаем файл .cpp (назовем его Source) и напишем в нем точку входа.

C++:
#include <windows.h> // библиотека из которой возьмем некоторые типы данных (например HINSTANCE / HMODULE)

// Сделаем все в одном файле, чтобы вы не запутались.

// Создаем обычный класс, в котором будет хранится информация игровой структуры Cvars
class netvars
{
public:
    // Изменим Field View для нашего локального игрока (FOV)
    void FieldView()
    {
        *(float*)(nCvars() + 0x4) = 100.f; // прибавляя к адресу структуры его смещение, получаем необходимую для перехвата функцию и меняем ее значение
    }
private: // Используем данный тип доступа, так как нам не пригодятся данные из него использовать вне класса
    netvars* nCvars() { return *(netvars**)0x142182330; } // указатель, хранящий в себе адрес игровой стуктуры Cvars
}; netvars pNetvars; // Создаем переменную класса от которой будем отталкиваться в точке входа, заметьте, не указатель.

bool DllMain(HINSTANCE hDll, unsigned long long dDll, void*)
{
    switch (dDll) // С помощью оператора switch "выбираем" нужный нам параметр для переменной dDll
    {
    case 1: // Именно в case 1 мы и будем работать, ведь #define DLL_PROCESS_ATTACH = 1.
        // Используйте бесконечный цикл, если у вас имеются методы, которые отрабатывают не один раз, (используйте while/for)
        // В нашем случае можно не использовать цикл, фов не исчезнет, отработая 1 раз
        pNetvars.FieldView();
        break;
    }
    return true;
}
Мы только что избавились от ненужной WINAPI CreateThread, которая висела у нас бы в импортах и MRAC ее бы спалил.


Далее, избавимся от
ненужного веса нашего модуля.

1. Заходим в настройки проекта
2. С.С++ 🠒 Optimization 🠒 Maximum Optimization (Favor size)
3. Code generation 🠒 Security Check 🠒 Disable Security Check
4. Linker 🠒 Manifest file 🠒 Generate Manifest 🠒 NO
5. Linker 🠒 Debugging 🠒 Generate Debug Info 🠒 NO
6. Linker 🠒 Advanced 🠒 EntryPoint 🠒 "Ваше название точки входа"
7. Code generation 🠒 Enable String Pooling 🠒 Yes.


Исходный код / скомпилированный проект я прилагать сюда не буду, все прописано в одном файле, просто скопируйте.
Так если использовать бесконечный цикл (while(true)) игра просто намертво зависает после инжекта...
 
bluedream.ltd
Статус
Оффлайн
Регистрация
4 Янв 2020
Сообщения
3,009
Реакции[?]
1,277
Поинты[?]
2K
Продам прострел стен Warface 10к руб!
Забаненный
Статус
Оффлайн
Регистрация
7 Авг 2018
Сообщения
308
Реакции[?]
106
Поинты[?]
0
Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Возьми тот же самый Render с игры, и воспроизводи своё меню, на игровой визуализации.
Ну и раз так пошло, то точка входа вообще не нужна, можно и без неё обойтись.
да много разных схем и приколюх, но суть в том - надолго ли это)
 
FanHack Team
Пользователь
Статус
Оффлайн
Регистрация
26 Сен 2017
Сообщения
72
Реакции[?]
51
Поинты[?]
0
Мы только что избавились от ненужной WINAPI CreateThread, которая висела у нас бы в импортах и MRAC ее бы спалил.
Импорт не палит в этом нет смысла) Палит вызовы уже из допустим кернел32) Толку ты можешь скрыть импорт но будешь использовать функции из кернел тупо через GetProcAdress и вызывать опять же функцию в кернел) Не кто не сканит импорты античиты проверяют ntdll.dll хукаются функции там и не важно скрыл импорт или нет

Да и при создании потока палит не функцию CreateThread а вызов уже в ntdll типо NtCreateUserThread или как она там а потом NtResumeThread и тут обычно происходит детект.

Но в наше время все античиты используею драйвер в драйвере стоит колбэк на создание нитей потоков и проверка доступа и тд и там происходит детект.

Да и детект в основном на моменте инжекта.
гайд по тому как прописать функцию в dllmain
Полностью поддерживаю)

Мрак научили сканить память если все обойти и заинжектиться беспалева дальше идет скан памяти. И тут дело времени как занесут в базу. Скан происход не постоянно а когда допустим в бою с промежутком от 2-5 мин. И не сразу всю память а кусками по секции.
И тут либо патчить скан в мрак либо использовать ектренел.
Так как при любом инжекте длл не важна как реализована но она в памяти.
А если блокировать этот участок памяти чтоб небыло доступа то чит не будет так же пахать.

Короче для норм андетекта надо патчить скан памяти в мрак
 
Сверху Снизу