THELOCALHOST.RU
Реверсинг
Реверсинг (от английского Reverse Engineering — обратная разработка) – процесс восстановления исходных кодов того или иного продукта из конечного программного продукта или конструкторского устройства.
Реверсинг программного обеспечений – процесс восстановления программы до исходных кодов на языке высокого уровня из исполняемых файлов с целью внесения в это программное обеспечение каких-либо изменений либо с целью создания аналогичных программ. Применяется реверсинг в нескольких случаях:
- Анализ вредоносного программного обеспечения (троянов, вирусов и т.д.) с целью поиска в нем ошибок и уязвимостей для защиты от него, либо же наоборот – анализ программного обеспечения с целью написания вирусов, троянов и т.д. Сюда же относится реверсинг программ для изготовления кряков для них, генераторов серийных номеров и прочего с целью понизить жадность владельца программы.
- Создание описаний для различных форматов данных и протоколов.
- Анализ работы закрытых драйверов с целью создания их открытых аналогов.
- Различые пиратские цели – создание клонов игровых серверов и их изменение и т.д.
Для успешного проведения реверсинга используются ассемблер, анализ различных криптографических методов и некоторые другие методы и инструменты.
Перечислим основные инструменты для проведения реверсинга.
Дизассемблер – это программа, преобразующая бинарный код в листинг программы на языке ассемблера. Наиболее популярным, и, по отзывам специалистов, лучшим дизассемблером является IDA, обладающая богатейшим функционалом, поддержкой скриптов и графического режима, а также большого количества различных плагинов.
Отладчик (по-другому также называется отладчик) – это программа, служащая для контролируемого исполнения программы, фрагмента кода или какой-либо отдельной библиотеки DLL. Популярной программой-отладчиком является SoftIce.
Декомпилятор – программа, служащая для восстановления практически исходного кода программного продукта, если он был написан на одном из языков высокого уровня и автор его не применил для защиты своего творения обфускацию (о ней мы поговорим ниже).
Для защиты программных продуктов от восстановления путем реверсинга авторы часто применяют различные методы:
- Обфускация – процесс запутывания исходного кода путем внедрения в программу ряда ложных инструкций таким образом, чтобы после декомпиляции в принципах ее работы было крайне затруднительно разобраться.
- Паковщики – утилиты, сжимающие готовые программы для сокращения занимаемого ими места на диске. Сами по себе защиту не обеспечивают, но отладить программу и понять как она работает, без предварительной распаковки практически невозможно.
- Антиотладка – приемы затруднениядля хакера самого процесса отладки и копания в исходном коде.
Применяются и другие методы, но эти являются основными.