Введение в исследование программ Автор: Ханов А.Р. СПбГУ, 2012
Что такое программа?
Все что угодно:.exe.dll.pl.py.pyc.hs.pl …. Исследование программ = обратная разработка = reverse engineering Цель: восстановление алгоритма, изменение работы программы Binary exploitation: поиск уязвимостей и исполнение shell-кода
Инструменты анализа 1)Декомпилятор (Assembler: IDA Pro, objdump, hiew; Python: unpyc,…; Java Decompiler; C# JetBrains; VB decompiler…) 2)Отладчик (gdb, OllyDBG, …) 3)Монитор (strace, procmon, filemon,…) 4)Вспомогательные утилиты: strings, dumpbin, PEBrowser, LordPE,…
Исполняемые файлы Файл программы Заголовок Секция 1 Секция 2 Секция 3 Заголовок Секции программы Секции загружаемых библиотек Память программы Секции: -код -инициализированные данные -импорт -экспорт -релокации … Image base
Исполняемые файлы %Показать структуру исполняемого файла%
Задачи 1)Упаковка/распаковка 2)Обфускация/деобфускация 3)Восстановление алгоритма 4)Борьба с антиотладкой
Примеры 1) Упаковка easy (test_easy.exe) 2) Упаковка medium (test_medium) 3) Восстановление исходного файла 4) Раскрытие алгоритма 5) Борьба с отладкой, патчинг, самомодификация, динамическая распаковка. (crypto, 29)
Ресурсы wasm.ru – куча статей по Assembler cracklab.ru – статьи, программы crackmes.de – множество тренировочных примеров google.com – множество полезной информации по теме