Книга, которую вы сейчас держите в руках, открывает двери в удивительный мир защитных механизмов — здесь рассказывается о том, как создаются и вскрываются защиты. Она адресована всем, кто любит захватывающие дух головоломки, всем, кто проводит свободное и несвободное время за копанием в недрах программ и операционных систем. Наконец, эта книга предназначена для тех, кто по роду своей деятельности занимается (постоянно и/или эпизодически) написанием защит и хочет узнать, как грамотно и уверенно противостоять вездесущим хакерам.
Настоящий том посвящен базовым основам хакерства — технике работы с отладчиком и дизассемблером. Здесь подробно описаны приемы идентификации и реконструкции ключевых структур исходного языка — функций (в т. ч. виртуальных), локальных и глобальных переменных, ветвлений, циклов, объектов и их иерархий, математических операторов и т. д.
Что нового в обновленном издании книги?
За время, прошедшее с момента публикации предыдущего издания, в мире информационных технологий произошло множество изменений: какие-то из них были эволюционными, а какие-то — революционными. Поэтому в издательстве Солон-Пресс решили выпустить новую книгу на основе «Фундаментальных основ хакерства».
Когда издатель обратился ко мне (Юрию Язеву), пересмотреть и подредактировать материал, я посчитал, что правильным решением будет переписать книгу полностью — на новый лад. Чтобы, как и раньше — в момент выхода предыдущего издания, книга содержала актуальный материал и могла служить настольной книгой хакера. Чтобы она одновременно представляла собой своеобразный справочник кодокопателя, и вместе с тем учебник, помогающий начинающим сделать в этом мире свои первые шаги.
Главная причина, повлиявшая на трансформацию программного обеспечения для IBM PC за последние 15-20 лет, — это повсеместный переход на процессорную архитектуру x86-64. Из-за этого пришлось переписывать все системное ПО: операционные системы, компиляторы, интерпретаторы, СУБД, системы виртуализации, гипервизоры и многое другое – все те программы, которые обращаются к процессору напрямую. После того, как были обновлены компиляторы, настала очередь перекомпиляции и адаптации прикладного софта, а это потребовало еще больше времени и трудозатрат.
В настоящее время 64-битная платформа ни кого не удивляет и везде с успехом используется. Она позволяет использовать современные компьютеры по полной: больше памяти, больше мощности, больше пространства для энергонезависимого хранения данных!
На протяжении книги в своих экспериментах мы будем использовать 64-разрядную операционную систему Windows 10. Некоторые примеры будут так же протестированы в 64-битной Windows 11. В то же время, где это необходимо, мы будем тестировать код в старых системах.
Версии оговоренных компиляторов на протяжении книги тоже будут меняться. Это связано с тем, что я стремился представить читателю как можно более свежую информацию, поэтому при выходе новых версий программных продуктов сразу обновлял старые.