Обратите внимание, пользователь заблокирован на форуме. Не рекомендуется проводить сделки.
Создания чита без создания потока CreateThread
Создания чита без создания потока CreateThread
В данной статье мы избавимся от создание потока CreateThread в нашей DLL что бы анти-читы не обнаружили в нашей DLL данный импорт и не задетектили сам чит
Начать хочу с того что это внутрений чит и мы будем использовать динамическую библиотеку DLL
Наш код main.cpp должен выглядить следующим образом
Теперь давайте избавимся от лишней информаций нашего модуля
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.
Начать хочу с того что это внутрений чит и мы будем использовать динамическую библиотеку DLL
Наш код main.cpp должен выглядить следующим образом
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**)0x61214223; } // указатель, хранящий в себе адрес игровой стуктуры 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;
}
Теперь давайте избавимся от лишней информаций нашего модуля
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.