На самом деле я Zodiak
И как в данном случае, юзать бесконечный цикл ?
Есть много альтернатив создания нового потока...И как в данном случае, юзать бесконечный цикл ?
А разве при ините длл у тебя не создаётся поток как раз под дллмаин?В данном гайде я расскажу как избавиться от мусорного веса модуля, и создадим собственный чит без использования WinApi функции CreateThread.
Создаем новый проект динамической библиотеки .dll
Создаем файл .cpp (назовем его Source) и напишем в нем точку входа.
Мы только что избавились от ненужной WINAPI CreateThread, которая висела у нас бы в импортах и MRAC ее бы спалил.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; }
Далее, избавимся от ненужного веса нашего модуля.
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.
Исходный код / скомпилированный проект я прилагать сюда не буду, все прописано в одном файле, просто скопируйте.
Интерсно, какие напримерЕсть много альтернатив создания нового потока...
хук будет являться примером создания циклаИнтерсно, какие например
Смотри, всё сделал как в коде, адрес вставил свой новый, но оно не работает, ну, не инжектит в игру. Подскажи пожалуйста, почему? Заранее благодаренВ данном гайде я расскажу как избавиться от мусорного веса модуля, и создадим собственный чит без использования WinApi функции CreateThread.
Создаем новый проект динамической библиотеки .dll
Создаем файл .cpp (назовем его Source) и напишем в нем точку входа.
Мы только что избавились от ненужной WINAPI CreateThread, которая висела у нас бы в импортах и MRAC ее бы спалил.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; }
Далее, избавимся от ненужного веса нашего модуля.
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.
Исходный код / скомпилированный проект я прилагать сюда не буду, все прописано в одном файле, просто скопируйте.
Проект предоставляет различный материал, относящийся к сфере киберспорта, программирования, ПО для игр, а также позволяет его участникам общаться на многие другие темы. Почта для жалоб: admin@yougame.biz