-
Автор темы
- #1
Привет!
В этой статье я: расскажу как пофиксить много ошибок, которые возникают из-за неправильной настройки проекта, дам несколько полезных ссылок, опишу решения популярных проблем, связанных с обновлением чита.
Нет, это не дефолтная тема, где тупо инструкции и больше ничего. Необходимые вещи буду объяснять, чтобы было понимание того, зачем нужно то или иное действие.
Итак, приступаем.
В большинстве читов, как только Вы скачали сурс, неправильно настроен проект, из-за чего может возникнуть примерно бесконечное кол-во ошибок.
Фиксим:
Кликаем на "Проект" на панели сверху, далее "Свойства <имя проекта>...", Свойства конфигурации > Общие > Версия пакета SDK для Windows (выбираем последнюю);
Набор инструментов платформы (выбираем v141, если у Вас визуалка 2017-го года, v142 если 2020-го);
Далее: C/C++ > Язык > Стандарт языка C++ (выбираем Стандарт ISO C++ 17 (/std:c++17));
Так же проверьте выбранный тип конфигурации сборки, увидеть его можно тут:
Правильная конфигурация - Release; x86. x86 потому, что CS:GO является 32-битным процессом, соответственно, и внедряемая библиотека должна соответствовать. Release - потому что релиз .
Всё, ошибок больше нет, живем радуемся.
Но вот беда - оффсеты, индексы обновили, а чит всё равно крашит.
Чтобы понять из-за чего крашит софт, нам нужно продебажить его.
Первым делом - выбираем тип сборки "Debug" уже в знакомой нам строке конфигурации. Дальше просто следуйте инструкции из этой темы: https://yougame.biz/threads/25643/.
Главные правила:
- ОБЯЗАТЕЛЬНО нужно сначала присоединять дебаггер, только потом инжектить, иначе:
а) Невозможно будет узнать причину краша при инжекте;
б) Невозможно будет узнать само место в коде из-за которого произошёл краш.
- Компилить чит в дебаг-сборке, ибо:
а) В дебаг версии читов обычно есть дополнительная консолька, в которой будет выводиться информация о том, какие хуки были подгружены, иногда и другая информация. Это поможет узнать примерное место в коде, из-за которого произошёл краш, если сам дебаггер будет писать аля: "нет отладочной информации для файла <...>" и будет показан только код на дизассемблере, который, скорее всего, Вам понятен не будет. Да, дебаггер не всегда может узнать точное место краша;
б) Если дебажить релиз версию проекта, дебаггер ВСЕГДА будет писать, что нет отладочной информации и будет только код на дизассемблере.
Ещё хуже - не смогли найти новые оффсеты/индексы.
С оффсетами всё просто - они есть тут:
А вот с индексами сложнее: их, обычно, так просто не найти.
Рассмотрим вариант ручного доставания их из CS:GO.
Как доставать: https://yougame.biz/threads/143797/
Не смогли даже обновить чит?
У каждого софта есть свой, так называемый SDK (почти у каждого). SDK (сдк) - своеобразная база данных, в которой содержаться названия классов, индексов, оффсетов и т.п. "Имена" могут быть абсолютно разными, Вы можете переименовать "GetSpread" в "aaaaaaa" и попробовать собрать проект - чит всё равно будет работать. У каждого кодера свой стиль написания кода, поэтому тот же "GetSpread" может превратиться, например, в "get_spread". То есть, названия могут быть неодинаковыми.
Если с такой простой вещью всё понятно, то с абсолютно другими названиями оффсетов или индексов будет сложнее. К примеру, в Вашей пасте есть оффсет "fix skins". В hazedumper'е он называется по другому, непохоже от слова совсем. В таком случае можно просто запомнить, что fix skins = get_weapon_data (getWPNdata), либо смотреть на то, как выглядит оффсет и на оффсеты в хейздампере. Обычно, оффсеты обновляются не полностью, а только пару букв-цифр. В зависимости от старости оффсета будет большее или меньшее кол-во изменений. Таким образом, оффсет "0x2C" за одно обновление может превратиться в "0x2A". Кол-во символов в оффсете, насколько я знаю, либо не меняется вообще, либо меняется очень редко.
Просто смотрим на схожие по кол-ву символов и букв/цифр оффсеты и выбираем. Тут уж можно включить дедукцию и понять, что "fix_skins" каким-то образом связано с оружием. Т.е., допустим, Вы нашли несколько похожих на "0x2A" (fix_skins) оффсетов. В них входят: "m_hMyWeapons", "m_iHealth", "m_szCustomName". Понятное дело, "m_iHealth" или "m_szCustomName" никак не могут быть связаны со скинами. Исходя из этого, выбираем "m_hMyWeapons" и заменяем старый оффсет на новый.
Где находится/как называется файл с оффсетами/индексами?
Он так же может называться по разному. Например, CEntity, entityes и др.
Самый верный способ найти этот самый файл - воспользоваться поиском по проекту (Ctrl + F). В поиск можно вписать, к примеру spread; penalty; accuracy, т.е. ключевые слова в названиях индексов/оффсетов (НЕ полные возможные имена, т.к. опять же, СДК у каждого чита свой).
Таким способом можно искать и названия оффсетов в hazedumper'е, например.
Как выглядит сигнатура/оффсет/индекс? Сколько они живут?
Пример сигнатуры: "C8 FF 92? 08? 05? 00? 00? 84 C0 74? 5F? 576A 01 56 E8 48? EA? 07?". Срок жизни - вечность, но иногда могут слететь.
Пример оффсета: "0xCF8". Срок жизни - обычно, пару обновлений. Некоторые - намного дольше.
Пример индекса: "216". Срок жизни - по разному. Обычно - несколько месяцев.
Всё ещё остались вопросы? Напиши в теме, постараюсь ответить.
В этой статье я: расскажу как пофиксить много ошибок, которые возникают из-за неправильной настройки проекта, дам несколько полезных ссылок, опишу решения популярных проблем, связанных с обновлением чита.
Нет, это не дефолтная тема, где тупо инструкции и больше ничего. Необходимые вещи буду объяснять, чтобы было понимание того, зачем нужно то или иное действие.
Итак, приступаем.
В большинстве читов, как только Вы скачали сурс, неправильно настроен проект, из-за чего может возникнуть примерно бесконечное кол-во ошибок.
Фиксим:
Кликаем на "Проект" на панели сверху, далее "Свойства <имя проекта>...", Свойства конфигурации > Общие > Версия пакета SDK для Windows (выбираем последнюю);
Набор инструментов платформы (выбираем v141, если у Вас визуалка 2017-го года, v142 если 2020-го);
Далее: C/C++ > Язык > Стандарт языка C++ (выбираем Стандарт ISO C++ 17 (/std:c++17));
Так же проверьте выбранный тип конфигурации сборки, увидеть его можно тут:
Правильная конфигурация - Release; x86. x86 потому, что CS:GO является 32-битным процессом, соответственно, и внедряемая библиотека должна соответствовать. Release - потому что релиз .
Всё, ошибок больше нет, живем радуемся.
Но вот беда - оффсеты, индексы обновили, а чит всё равно крашит.
Чтобы понять из-за чего крашит софт, нам нужно продебажить его.
Первым делом - выбираем тип сборки "Debug" уже в знакомой нам строке конфигурации. Дальше просто следуйте инструкции из этой темы: https://yougame.biz/threads/25643/.
Главные правила:
- ОБЯЗАТЕЛЬНО нужно сначала присоединять дебаггер, только потом инжектить, иначе:
а) Невозможно будет узнать причину краша при инжекте;
б) Невозможно будет узнать само место в коде из-за которого произошёл краш.
- Компилить чит в дебаг-сборке, ибо:
а) В дебаг версии читов обычно есть дополнительная консолька, в которой будет выводиться информация о том, какие хуки были подгружены, иногда и другая информация. Это поможет узнать примерное место в коде, из-за которого произошёл краш, если сам дебаггер будет писать аля: "нет отладочной информации для файла <...>" и будет показан только код на дизассемблере, который, скорее всего, Вам понятен не будет. Да, дебаггер не всегда может узнать точное место краша;
б) Если дебажить релиз версию проекта, дебаггер ВСЕГДА будет писать, что нет отладочной информации и будет только код на дизассемблере.
Ещё хуже - не смогли найти новые оффсеты/индексы.
С оффсетами всё просто - они есть тут:
Пожалуйста, авторизуйтесь для просмотра ссылки.
.А вот с индексами сложнее: их, обычно, так просто не найти.
Рассмотрим вариант ручного доставания их из CS:GO.
Как доставать: https://yougame.biz/threads/143797/
Не смогли даже обновить чит?
У каждого софта есть свой, так называемый SDK (почти у каждого). SDK (сдк) - своеобразная база данных, в которой содержаться названия классов, индексов, оффсетов и т.п. "Имена" могут быть абсолютно разными, Вы можете переименовать "GetSpread" в "aaaaaaa" и попробовать собрать проект - чит всё равно будет работать. У каждого кодера свой стиль написания кода, поэтому тот же "GetSpread" может превратиться, например, в "get_spread". То есть, названия могут быть неодинаковыми.
Если с такой простой вещью всё понятно, то с абсолютно другими названиями оффсетов или индексов будет сложнее. К примеру, в Вашей пасте есть оффсет "fix skins". В hazedumper'е он называется по другому, непохоже от слова совсем. В таком случае можно просто запомнить, что fix skins = get_weapon_data (getWPNdata), либо смотреть на то, как выглядит оффсет и на оффсеты в хейздампере. Обычно, оффсеты обновляются не полностью, а только пару букв-цифр. В зависимости от старости оффсета будет большее или меньшее кол-во изменений. Таким образом, оффсет "0x2C" за одно обновление может превратиться в "0x2A". Кол-во символов в оффсете, насколько я знаю, либо не меняется вообще, либо меняется очень редко.
Просто смотрим на схожие по кол-ву символов и букв/цифр оффсеты и выбираем. Тут уж можно включить дедукцию и понять, что "fix_skins" каким-то образом связано с оружием. Т.е., допустим, Вы нашли несколько похожих на "0x2A" (fix_skins) оффсетов. В них входят: "m_hMyWeapons", "m_iHealth", "m_szCustomName". Понятное дело, "m_iHealth" или "m_szCustomName" никак не могут быть связаны со скинами. Исходя из этого, выбираем "m_hMyWeapons" и заменяем старый оффсет на новый.
Где находится/как называется файл с оффсетами/индексами?
Он так же может называться по разному. Например, CEntity, entityes и др.
Самый верный способ найти этот самый файл - воспользоваться поиском по проекту (Ctrl + F). В поиск можно вписать, к примеру spread; penalty; accuracy, т.е. ключевые слова в названиях индексов/оффсетов (НЕ полные возможные имена, т.к. опять же, СДК у каждого чита свой).
Таким способом можно искать и названия оффсетов в hazedumper'е, например.
Как выглядит сигнатура/оффсет/индекс? Сколько они живут?
Пример сигнатуры: "C8 FF 92? 08? 05? 00? 00? 84 C0 74? 5F? 576A 01 56 E8 48? EA? 07?". Срок жизни - вечность, но иногда могут слететь.
Пример оффсета: "0xCF8". Срок жизни - обычно, пару обновлений. Некоторые - намного дольше.
Пример индекса: "216". Срок жизни - по разному. Обычно - несколько месяцев.
Всё ещё остались вопросы? Напиши в теме, постараюсь ответить.
Последнее редактирование: