Автор: Андрей Бирюков
Издательство: ДМК Пресс
Год: 2024
Страниц: 378
Язык: русский
Формат: pdf
Размер: 91.0 MB
Реверсивный инжиниринг считается одним из наиболее сложных направлений в информационной безопасности (ИБ). В книге автор предлагает приоткрыть завесу тайны над этой темой и с помощью практических примеров рассмотреть, как работают приложения под ОС Windows, а также разобраться в том, как эксплуатировать уязвимости переполнения буфера, размещать свой код в выполнимых файлах, находить полезную информацию в дампах памяти и многое другое.
Код практически любого приложения может содержать ошибки. Самый простой способ исправить эти ошибки – это найти в исходном коде проблемную команду или функцию и внести соответствующие исправления в код. Но что делать, когда по тем или иным причинам исходный код нам не доступен, как в случае с проприетарным ПО? Если у нас имеется только откомпилированный выполнимый файл – артефакт. Например, для выявления уязвимостей, недокументированных возможностей и т.д. В таком случае нам тоже потребуется обратная разработка. Результатом обратной разработки является построение детального алгоритма работы программы, а также выявление уязвимостей и других интересующих исследователя аспектов работы программного обеспечения. Таким образом, обратная разработка нужна тем, кто занимается поиском уязвимостей с целью улучшения защищенности программного обеспечения, – багхантерам.
Также реверсивный инжиниринг требуется программистам, работающим с низкоуровневыми языками программирования (например, разработчикам драйверов), где без знания ассемблера не обойтись.
Не стоит забывать, что вредоносный код – это тоже программное обеспечение, и его тоже необходимо реверсить для выявления принципов заражения и для того, чтобы понять, как от них можно защититься. Этими задачами занимаются вирусные аналитики.
Реверсинг приложений традиционно считается одним из самых сложных направлений в информационных технологиях. Многих пугает необходимость изучать язык ассемблера, необходимый для работы с дизассемблерами и отладчиками. Также программистам, работавшим только с языками высокого уровня, не всегда понятны принципы работы со стеком, обратная запись байтов в памяти и манипуляции с регистрами.
В своей книге я постарался как можно больше внимания уделить практической части процесса обратной разработки, поэтому здесь большое количество иллюстраций, в которых я постарался зафиксировать все выполняемые на практике действия.
В начале книги мы уделим внимание основам языка ассемблера, поговорим об основных инструкциях, регистрах и организации памяти. Но потом сразу же начнем решать Crack Me (крякмиксы, задачки «взломай меня»). Это маленькие приложения, в которых необходимо ввести определенный пароль или выполнить иное действие, для того чтобы получить сообщение об успешном решении. Решение крякмиксов позволяет быстрее понять основные принципы реверсинга.
Далее мы поговорим о переполнении буфера – одной из самых распространенных ошибок программистов. Мы откомпилируем уязвимое приложение на С и затем напишем к нему эксплойт. Эта тема будет наиболее интересна специалистам по анализу защищенности приложений.
Потом обсудим инъекцию своего кода в выполнимые файлы. В частности, рассмотрим формат PE, следы, которые оставляют компиляторы в файлах, понятие code cave и многое другое. Эта тема будет полезна прежде всего вирусным аналитикам и специалистам по анализу защищенности.
После этого мы поговорим о реверсинге приложений, написанных на .NET. Здесь речь пойдет о самом фреймворке Microsoft .NET, языке CIL и инструментах, необходимых для реверсинга.
Книга предназначена как для начинающих специалистов, желающих разобраться в реверс-инжиниринге, так и для опытных специалистов по ИБ, интересующихся данной темой.
Скачать Реверсивный инжиниринг приложений под Windows