Исходник Dota-cheat | База под доту 2

Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
В доте информация по количеству полей и по самим полям заполняется отдельной функцией, я не думаю, что хотя бы в теории, существует сценарий, при котором GetFields окажется nullptr, только если самому не ломать его специально.

Но проверку я все равно добавлю в следующем коммите - в плюсах быть параноиком полезно :)
да вопрос не в сценарии, вопрос в том, что ты сделал проверку, которая криво работает(сначала прибавляет, а потом чекает - что очевидно не будет нормально работать) и которую ты (или кто-нибудь еще) потом может себе в другое место скопипастить(или похожую сделать) и потом получить пизды.
бтв чтобы такой хуйни не было
C++:
for ( auto& keyBindInfo : mapKeyBinds )
            {
                if ( keyBindInfo.second.m_uKeyID != uKeyID || keyBindInfo.second.m_uMode == KeyBindMode::Always )
                    continue;
можно юзать
Пожалуйста, авторизуйтесь для просмотра ссылки.
C++:
    for ( auto& [_, keybind] : mapKeyBinds )
            {
                if ( keybind.m_uKeyID != uKeyID || keybind.m_uMode == KeyBindMode::Always )
                    continue;
ну и по поводу https://yougame.biz/threads/263327/#post-2689531
устроил твоему читу сеанс интенсивной терапии(кучу раз вход и асинхронный выход)
и как ожидалось настал момент когда звезды сошлись и планировщик ресурсов винды дал треду деинита чита(который убивает имгуи и прочую хуиту) и треду рендера доты выполняться одновременно(на десятой итерации это случилось)
был вызван хук презента и в нем рендер имгуи и параллельно имгуи был убит
1659993991700.png
вот еще снова мертвый имгуи в презенте(на этот раз на 4 итерации)
1659994087100.png
ну я думаю ты понял суть. понятно что в реальных условиях вероятность гораздо меньше но тем не менее существует.
для теста попробуй поюзай вот этот код(крашнет если звезды сойдутся. если не крашит значит ты везучий пробуй еще хули)) ):
for i = 0 to 100
{
init()//ну все твои аттачи хуячи и тд
std::jthread{deinit};//асинхронный выход. токо без freelibrary. jthread ждёт смерти треда в деструкторе
}
фиксится двухэтапным деинитом(деинит говорит презенту что он щас будет деинититься и ждёт ответа, презент вызывает оригинальный презент и сохраняет возврат и ожидает конца деинита, деинит начинает деинититься и по окончанию говорит презенту что все нормально и презент возвращает результат оригинального презента)(тестил на 1000 итераций, не крашит).
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
да вопрос не в сценарии, вопрос в том, что ты сделал проверку, которая криво работает(сначала прибавляет, а потом чекает
Так я увеличиваю nFieldIndex, а не pClassBinding->GetNumFields( )
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
Так я увеличиваю nFieldIndex, а не pClassBinding->GetNumFields( )
так и что?
я тебе в человеко-коде написал что ты делаешь
Код:
пусть i от 0 до n:
пусть x = взять [потенциально  нуллптр] и прибавить i * sizeof(CSchemaField)//= i * 32
чекнуть x на ноль, скип если ноль
дереференс x
ты берешь нуллптр и прибавляешь к нему i * 32.
GetFields() вовзращает указатель.
[ i ] возвращает референс (указатель + i * 32)
& возвращает указатель с референса
и ты чекаешь ЭТО(указатель + i * 32) потом на ноль и ПРОДОЛЖАЕШЬ если чек проваливается(т.е. i++)
если i будет 1 то ты прибавишь 0 + 32 = 32 и твой чек if ( !pSchemaField ) в итоге успешно проходит(ну всмысле pSchemaField будет не ноль) и потом дереференсит 32 и крашит(я тебе конкретно скинул скрин краша который РЕАЛЬНО БУДЕТ если GetNumFields будет >0 и GetFields() будет nullptr. я там насильно GetFields() в ноль поставил и запустил и посмотрел что будет)
-------------------
на случай если ты все еще не понял о чём я говорю, то(асм из твоих сурсов скомпиленных)
1660004800400.png
ты вызываешь GetFields(это референс на указатель)
потом идет дереференс(получаем указатель)
потом rcx(это счётчик nFieldIndex) умножается на 32(shl x, 5 это (x << 5) это умножить x на два в пятой степени это умножить x на 32)
потом это прибавляется к указателю(= ptr + i * 32)
потом идёт чек(cmp) ПОСЛЕ ПРИБАВЛЕНИЯ(очевидно что если ptr будет 0 а i будет например 1 то будет 0 + 32 а это явно не ноль поэтому чек будет успешен(как будто указатель бы не нуллптр))
 
Последнее редактирование:
Начинающий
Статус
Оффлайн
Регистрация
4 Авг 2021
Сообщения
48
Реакции[?]
2
Поинты[?]
0
Привет, я немного тупой. Почему при сборке выдает ошибки? Сборка релиз 64
1660061194295.png
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
Начинающий
Статус
Оффлайн
Регистрация
4 Авг 2021
Сообщения
48
Реакции[?]
2
Поинты[?]
0
визуалка 2022 ласт версии?
галочки при установке ставил на кленг и с++?
Посмотреть вложение 216220
Посмотреть вложение 216221
ну и на мсвс и виндовс сдк тоже галочки не помешали бы
это все стоит, ща чекну на счёт спп ластет в проекте
визуалка 2022 ласт версии?
галочки при установке ставил на кленг и с++?
Посмотреть вложение 216220
Посмотреть вложение 216221
ну и на мсвс и виндовс сдк тоже галочки не помешали бы
Вообще ничего не работает, выдает ошибки
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
MIDNIGHT.IM
Статус
Оффлайн
Регистрация
6 Сен 2016
Сообщения
239
Реакции[?]
318
Поинты[?]
14K
Доебались для человека...

Спасибо за базу, мне как новичку понятно почти все, написано читаемо и удобно.


а главное БеСпЛаТнО
Критика и предложения - это лучшее, что он может получать от пользователей его бесплатного SDK ну или просто участников данного раздела.

Как и писал Liberalist выше.

К тому же, исправляя эти косяки - те кто хотят учится на его базе, не будут повторять ошибки автора.. Что приводит опять же к положительным результатам.

Так что, не будь стадом и не пиши: "доебались за зря". Очевидно, что ты не выкупаешь за то, что тут происходило выше.
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
Рекомендую обновить Visual Studio и Clang до последней версии, должно исправить множество косяков и пофиксить нормальную такую пачку варнингов
 
Эксперт
Статус
Оффлайн
Регистрация
31 Авг 2018
Сообщения
1,792
Реакции[?]
1,073
Поинты[?]
29K
Обновил индекс IVEngineClient2::GetLocalPlayer - теперь скромный функционал этой базы снова работает :)
Заодно обновил имгуи до более новой версии, в ней пофиксили некоторые косяки с IO системой
 
Пользователь
Статус
Оффлайн
Регистрация
8 Апр 2022
Сообщения
663
Реакции[?]
104
Поинты[?]
67K
ты ликаешь ресурс(созданную консоль). юзер остается с бесполезной открытой навсегда консолькой как долбоёб при деините чита.
так бля разве не похуй на это? во всех популярных читах на доту 2 нет отгрузки, а значит если деинит вызвался это закрытие игры, или что-то такое(там уже похуй будет если закроется игра, всё особовдится, или я не прав?)
 
Эксперт
Статус
Оффлайн
Регистрация
29 Мар 2021
Сообщения
1,595
Реакции[?]
602
Поинты[?]
43K
так бля разве не похуй на это? во всех популярных читах на доту 2 нет отгрузки, а значит если деинит вызвался это закрытие игры, или что-то такое(там уже похуй будет если закроется игра, всё особовдится, или я не прав?)
ты не прав.
 
Участник
Статус
Оффлайн
Регистрация
23 Май 2019
Сообщения
779
Реакции[?]
331
Поинты[?]
63K
так бля разве не похуй на это? во всех популярных читах на доту 2 нет отгрузки, а значит если деинит вызвался это закрытие игры, или что-то такое(там уже похуй будет если закроется игра, всё особовдится, или я не прав?)
ну немножко не так в том посте выразился, под юзером имел ввиду не юзера чита как хомячка а юзера сурсов чита/репозитория(= разработчика)
для разработчика важно иметь возможность перезагрузить читы. ты че каждый раз когда чит рекомпилишь изменив пару строчек перезапускаешь доту и заново в демку перезаходишь и теряешь минуту-две чисто на прогрузку? если да то соболезную
сам лик не проблема хули там пара мегабайт не так уж серьезно, проблема в самом факте что он есть(это одно из проявлений какой-то проблемы, а эта проблема потом если ее не пофиксить может проявиться в другом виде и это уже может быть более серьезно чем лик)
 
Сверху Снизу