Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Reverse engineering. Обратная разработка и взлом ПО

Содержание

Основные задачиУстановить логику программы с закрытым исходным кодомВоссоздать программу, аналогичную проприетарнойИзбавить проприетарную программу от ненужного функционала (проверка производителя/лицензии)
Reverse engineeringОБРАТНАЯ РАЗРАБОТКА И ВЗЛОМ ПО Основные задачиУстановить логику программы с закрытым исходным кодомВоссоздать программу, аналогичную проприетарнойИзбавить проприетарную Что такое программа?Исполняемый файл популярных ОС и архитектурБайткод виртуальной машины (Java/.NET)Интерпретируемый код Исполняемый файлЭто, собственно, набор инструкций процессора, смешанный с данными, необходимыми для работы Как… запустить исполняемый файл?WindowsМмм, двойным щелчком.Серьезно, больше ничего не нужно, можно еще Структура исполняемого файлаИсполняемый файл состоит из сегментов, секций и всего такого. Вкратце Как понять что происходит? Interactive DisAssembler (IDA)Стоит всего лишь от $1200. И это без декомпиляторов.Умеет, тем HexraysСтоит еще большеУмеет ДЕКОМПИЛИРОВАТЬ Что же теперь делать?Заходите в подозрительную функцию (обычно это main)Жмете F5Готово, теперь Как, тем не менее, понять что происходит?Просто прочитать. Это же легко, правда?Загуглить Отладчик?Позволяет выполнять программу пошагово, смотреть регистры, инструкции и всё такое. Только ассемблер.Под Гугл?Позволяет искать (кто бы мог подумать)Ищет весьма неплохо, даже по исходным кодамИ Z3/Z3py?Если вы обратились к Z3 вы или очень крутыИли совсем отчаялись, причем Примерimport stringfrom z3 import *s = Solver()x=BitVec('x',32)y=BitVec('y',32)s.add(x*y==2016)s.add(x^y==0xDEADBEEF)print s.check()m=s.model()print (m[x].as_long()*m[y].as_long())&0xFFFFFFFF,hex(m[x].as_long()^m[y].as_long())Вывод:sat2016 0xdeadbeef Сервер с задачами  http://dmz.n0n3m4.ru/tasksВопросы? :)
Слайды презентации

Слайд 2 Основные задачи
Установить логику программы с закрытым исходным кодом
Воссоздать

Основные задачиУстановить логику программы с закрытым исходным кодомВоссоздать программу, аналогичную проприетарнойИзбавить

программу, аналогичную проприетарной
Избавить проприетарную программу от ненужного функционала (проверка

производителя/лицензии)

Слайд 3 Что такое программа?
Исполняемый файл популярных ОС и архитектур
Байткод

Что такое программа?Исполняемый файл популярных ОС и архитектурБайткод виртуальной машины (Java/.NET)Интерпретируемый

виртуальной машины (Java/.NET)
Интерпретируемый код (PHP/Python/Perl)

В рамках сегодняшней лекции это

только пункт 1

Слайд 4 Исполняемый файл
Это, собственно, набор инструкций процессора, смешанный с

Исполняемый файлЭто, собственно, набор инструкций процессора, смешанный с данными, необходимыми для

данными, необходимыми для работы программы. На разных ОС приняты

разные форматы исполняемых файлов: для Windows это PE (Portable Executable), для Linux ELF (Executable and Linkable Format). Расширения файлов .exe и <ничего> для Windows и Linux соответственно.
Важно помнить, что разделяемые библиотеки (.dll/.so) имеют схожий формат, хотя их обратная разработка затруднена не столь простой отладкой.

Слайд 5 Как… запустить исполняемый файл?
Windows
Ммм, двойным щелчком.
Серьезно, больше ничего

Как… запустить исполняемый файл?WindowsМмм, двойным щелчком.Серьезно, больше ничего не нужно, можно

не нужно, можно еще запустить файл по имени из

командной строки (cmd.exe)

Linux
Любой файл можно исполнить только когда у него есть права на исполнение. Запускать с файловой системы FAT без перемонтирования с -o exec невозможно.
Типичный сценарий запуска программы:
chmod +x file
./file #вы только посмотрите на этот путь


Слайд 6 Структура исполняемого файла
Исполняемый файл состоит из сегментов, секций

Структура исполняемого файлаИсполняемый файл состоит из сегментов, секций и всего такого.

и всего такого. Вкратце они позволяют понять, где код,

где данные, где константы и все такое.
В Linux это всё можно посмотреть командой readelf, в Windows – а черт его знает, это не очень нужно там.
IDA (о ней далее) покрасит все секции разными цветами сам.

Слайд 7 Как понять что происходит?

Как понять что происходит?

Слайд 8 Interactive DisAssembler (IDA)
Стоит всего лишь от $1200. И

Interactive DisAssembler (IDA)Стоит всего лишь от $1200. И это без декомпиляторов.Умеет,

это без декомпиляторов.
Умеет, тем не менее, дизассемблировать почти всё
Стандарт

индустрии
Обладает декомпилятором HexRays
Его автор параноик и думает, все его покупатели – пираты
А они и правда пираты… ну или неудачники. В интернете доступна версия 6.8, которую украли у HackingTeam (если кто помнит новости)

Слайд 9 Hexrays
Стоит еще больше
Умеет ДЕКОМПИЛИРОВАТЬ

HexraysСтоит еще большеУмеет ДЕКОМПИЛИРОВАТЬ

Слайд 10 Что же теперь делать?
Заходите в подозрительную функцию (обычно

Что же теперь делать?Заходите в подозрительную функцию (обычно это main)Жмете F5Готово,

это main)
Жмете F5
Готово, теперь вы можете читать “код”

Двойным щелчком

можно переходить между функциями, X выводит список ссылок на объект под курсором в программе.

Слайд 11 Как, тем не менее, понять что происходит?
Просто прочитать.

Как, тем не менее, понять что происходит?Просто прочитать. Это же легко,

Это же легко, правда?
Загуглить встреченные константы
Загуглить названия функций. Макрос

assert() выдает имена оригинальных файлов, их можно гуглить
Отладить
Ничего не помогло? Есть система доказательства теорем Z3 Это ее научное название, на самом деле это решалка всего подряд

Слайд 12 Отладчик?
Позволяет выполнять программу пошагово, смотреть регистры, инструкции и

Отладчик?Позволяет выполнять программу пошагово, смотреть регистры, инструкции и всё такое. Только

всё такое. Только ассемблер.
Под Windows самыми известными являются OllyDbg

и x64dbg (слышали о Denuvo? Его официальный “спонсор”)
GNU Debugger (gdb). Вообще не только для Linux, но в винде не очень хорош. А вообще крут, еще и плагины есть (PEDA)
IDA. Ходят слухи, она умеет отлаживать даже линукс через удаленный gdb, но это неточно. Под виндой отладчик даже и неплох

Слайд 13 Гугл?
Позволяет искать (кто бы мог подумать)
Ищет весьма неплохо,

Гугл?Позволяет искать (кто бы мог подумать)Ищет весьма неплохо, даже по исходным

даже по исходным кодам
И по константам

Еще позволяет скачать пиратскую

IDA :3

Слайд 14 Z3/Z3py?
Если вы обратились к Z3 вы или очень

Z3/Z3py?Если вы обратились к Z3 вы или очень крутыИли совсем отчаялись,

круты
Или совсем отчаялись, причем скорее всего второе
Позволяет обращать хеш-функции,

туповатые LFSR, решать уравнения
Беда только в том, что почти никто не знает, как это делать правильно. Разработчики Z3 тоже, поэтому у них есть множество разных решателей систем условий (между которыми можно выбирать в самом Z3)

Слайд 15 Пример
import string
from z3 import *
s = Solver()
x=BitVec('x',32)
y=BitVec('y',32)
s.add(x*y==2016)
s.add(x^y==0xDEADBEEF)
print s.check()
m=s.model()
print

Примерimport stringfrom z3 import *s = Solver()x=BitVec('x',32)y=BitVec('y',32)s.add(x*y==2016)s.add(x^y==0xDEADBEEF)print s.check()m=s.model()print (m[x].as_long()*m[y].as_long())&0xFFFFFFFF,hex(m[x].as_long()^m[y].as_long())Вывод:sat2016 0xdeadbeef

(m[x].as_long()*m[y].as_long())&0xFFFFFFFF,hex(m[x].as_long()^m[y].as_long())

Вывод:
sat
2016 0xdeadbeef


  • Имя файла: reverse-engineering-obratnaya-razrabotka-i-vzlom-po.pptx
  • Количество просмотров: 333
  • Количество скачиваний: 1