Причины ошибок в приложениях!(FAQ).

avatar KeksovName

49

7

KeksovName

Пользователь

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

KeksovName

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

Итак,решил написать небольшой FAQ по ошибкам.pepecool.png?1592046811

Что такое ошибка?

Для начала про компилируемость языка

Исходный код(от разработчика) преобразуется в исполняемый файл.

Спойлер

Что такое исполняемый файл?в Windows это так называемый PE формат.

Спойлер

Обработчик Windows должен корректно прочитать все данные из PE заголовка,IAT таблицу(какие dll файлы должна загрузить система)

прочитать данные о секциях(что такое секции?места для кода и данных,а также ресурсов)а также о доступе к этим секциям.

Если всё корректно,то программа запуститься-если нет вылезет сообщение об ошибке.FeelsRainMan.gif?1592102866

И это первая возможная причина,если на ваш компьютер попадёт вирус или что-то изменяющее PE файлы то для начала нужно вылечить систему от вирусов и целиком переустановить приложение или игру.

Пользуйтесь хорошим антивирусом типа Kaspersky,он часто может вылечить заражённый файл.PepeHappy.gif?1613920413

В процессе выполнения программы(или игры) на вашей системе можно произойти так называемое "исключение" например внезапно может произойти деление на ноль или доступ к секции на которой нет доступа.

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

Это делается автоматически и вам ничего не надо делать и как-то в это вмешиваться.d2happy.gif

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

Если пользовательский обработчик ошибок не справляется,управление передаётся обработчику ошибок Windows.

Но если ошибка всё таки случилась,значит обработчик исключений не смог обработать это исключение и это уже что-то критическое.ehh.png?1592046966

Что делать?

Если ошибка повторяется то можно скачать x64dbg ,это бесплатный отладчик приложений и запустить программу(или игру)до появления ошибки!

Потом смотрите вот сюда

6.png

И гуглите свою ошибку,что она значит.

Обратите внимание,в логе,где ошибка происходит-после какой dll или exe файла.

Если проблема в exe файле,переустановить игру или приложение.

Если проблема в dll,часто это ошибка в Microsoft Visual C++ Redistributable переустановите данный пакет.

Но только с официальных сайтов,не пользуйтесь всякими левыми сайтами по запросу "скачать dll".PepeOut.gif?1610331799

Единственное исключение это вот оно очень хороший сборник.

Ещё бывает проблема не связана с исключениями,а с выводом каких-то сообщений.

Если проблема не решается,вы можете попробовать её исправить(но это не точно).

1)Убедитесь что вы находитесь не в dll а в основной программе.

7.png

Как перейти к основной программе?

Узнайте имя файла,например dota2.exe и найдите её в Карте памяти.

Спойлер

Поставьте брейкпоинты на Message.Как?

Спойлер

И далее

Спойлер

Далее кликаем сюда

Спойлер

И далее(если повезёт)запускаем dota2.exe(к примеру)доходим до ошибки-дальше ищите вверху(от того где остановились) команды типа je jne jnz или test что-то или cmp а потом jxx(вместо xx могут быть разные значения).

Далее берёте какой-нибудь справочник по ассемблерным командам и пытаетесь понять что к чему.

Вот простой пример:

Спойлер

Если ошибка появляется в этом месте(сначало запустите и нажмите F9)!Видите ошибку?Тогда меняете jne на jmp и пробуете снова.

Дважды щёлкаете или через пробел и изменяете на jmp.

Спойлер

И жмёте на OK.PareParrotRGB.gif?1660474658

Жмёте снова F9!Ошибка исчезла?Поздравляю!d2happy.gif

Проблема может быть решена.

Вот такой небольшой но хороший способ борьбы с разными тупыми сообщениями.annie2.png?1621091030

Ставьте лукасы,извиняюсь за длиннопост-пытался написать простую инструкцию из  того что видел в разных видеокурсах по отладке.

ЗАРАБОТОК В СЕТИ

Пользователь

Регистрация: 26.11.2019

Сообщения: 8979

Рейтинг: 3707

ЗАРАБОТОК В СЕТИ

Регистрация: 26.11.2019

Сообщения: 8979

Рейтинг: 3707

Нажми прямо сейчас клавишу F12.

 

Тебе откроется мир актуальной в 2023 году отладки приложений (браузерных), а эти окаменелости на уровне ОС - уже история

KeksovName

Пользователь

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

KeksovName

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

Ещё способ-найти текстовые строки.pepecool.png?1592046811

Сделать это просто:

В том-же самом модуле
Во всех модулях

Это займёт какое-то время(особенно второй вариант).

Второе-более часто понадобиться,ведь ошибка может быть не в dota2.exe а в каких-нибудь dll.

И ищем часть выводимого сообщения об ошибке и дальше повторяем тоже что и выше,с разными jxx и test с cmp.PepeMusic.png?1576808689

pochemyzamenya

Пользователь

Регистрация: 25.02.2016

Сообщения: 4459

Рейтинг: 4062

pochemyzamenya

Регистрация: 25.02.2016

Сообщения: 4459

Рейтинг: 4062

Зачем отлаживать программы с закрытым исходным кодом если владельцы тебе не платят?

Ну провернул ты всю эту хрень а в следующий раз что делать? Каждый раз вместо того что бы играть ты будешь какие то инъекции всирать в программу? 

KeksovName

Пользователь

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

KeksovName

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

pochemyzamenya сказал(а):

Зачем отлаживать программы с закрытым исходным кодом если владельцы тебе не платят?

Ну провернул ты всю эту хрень а в следующий раз что делать? Каждый раз вместо того что бы играть ты будешь какие то инъекции всирать в программу? 

Нажмите, чтобы раскрыть...

А что просто сидеть и смотреть на какую-то ошибку?PeepoWut.png?1576808589

Надо действовать и я тут написал очень упрощённую схему что делать.

Изменения можно сохранить и тогда ошибки больше не будет.PepeHappy.gif?1613920413

Но возможна негативная реакция антивирусов или защиты Valve(к примеру) так что лучше изменять значения в памяти а потом

нажать Отсоединить.YepCock.gif?1606506852

Спойлер

pochemyzamenya

Пользователь

Регистрация: 25.02.2016

Сообщения: 4459

Рейтинг: 4062

pochemyzamenya

Регистрация: 25.02.2016

Сообщения: 4459

Рейтинг: 4062

KeksovName сказал(а):

Изменения можно сохранить и тогда ошибки больше не будет.PepeHappy.gif?1613920413

Нажмите, чтобы раскрыть...

У тебя хеш-сумма изменится и никакое приложение которое с сетью взаимодействует у тебя не запуститсяPepeHappy.gif?1613920413

KeksovName сказал(а):

А что просто сидеть и смотреть на какую-то ошибку?PeepoWut.png?1576808589

Нажмите, чтобы раскрыть...

Так по твоему гайду только ошибку в калькуляторе можно исправить

У меня с полными исходниками в иде не всегда получается с первого раза найти место где возникает исключение, а ты тут по бинарникам предлагаешь искатьYepCock.gif?1606506852

KeksovName

Пользователь

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

KeksovName

Регистрация: 13.10.2018

Сообщения: 6895

Рейтинг: -287

Нарушения: 5

Вот снял видео с простым примером,устранив пару ошибок.PepeHappy.gif?1613920413