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

Содержание


Презентации» Информатика» Reverse engineering. Обратная разработка и взлом ПО
Reverse engineering
 Обратная разработка и взлом ПоОсновные задачи
 Установить логику программы с закрытым исходным кодом
 Воссоздать программу,Что такое программа?
 Исполняемый файл популярных ОС и архитектур
 Байткод виртуальнойИсполняемый файл
 Это, собственно, набор инструкций процессора, смешанный с данными, необходимымиКак… запустить исполняемый файл?
 Windows
 Ммм, двойным щелчком.
 Серьезно, больше ничегоСтруктура исполняемого файла
 Исполняемый файл состоит из сегментов, секций и всегоКак понять что происходит?Interactive DisAssembler (IDA)
 Стоит всего лишь от $1200. И это безHexrays
 Стоит еще больше
 Умеет ДЕКОМПИЛИРОВАТЬЧто же теперь делать?
 Заходите в подозрительную функцию (обычно это main)
Как, тем не менее, понять что происходит?
 Просто прочитать. Это жеОтладчик?
 Позволяет выполнять программу пошагово, смотреть регистры, инструкции и всё такое.Гугл?
 Позволяет искать (кто бы мог подумать)
 Ищет весьма неплохо, дажеZ3/Z3py?
 Если вы обратились к Z3 вы или очень круты
 ИлиПример
 import string
 from z3 import *
 s = Solver()
 x=BitVec('x',32)
Сервер с задачами  http://dmz.n0n3m4.ru/tasks



Слайды и текст этой презентации
Слайд 1
Описание слайда:
Reverse engineering Обратная разработка и взлом По


Слайд 2
Описание слайда:
Основные задачи Установить логику программы с закрытым исходным кодом Воссоздать программу, аналогичную проприетарной Избавить проприетарную программу от ненужного функционала (проверка производителя/лицензии)

Слайд 3
Описание слайда:
Что такое программа? Исполняемый файл популярных ОС и архитектур Байткод виртуальной машины (Java/.NET) Интерпретируемый код (PHP/Python/Perl) В рамках сегодняшней лекции это только пункт 1

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

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

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

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

Слайд 8
Описание слайда:
Interactive DisAssembler (IDA) Стоит всего лишь от $1200. И это без декомпиляторов. Умеет, тем не менее, дизассемблировать почти всё Стандарт индустрии Обладает декомпилятором HexRays Его автор параноик и думает, все его покупатели – пираты А они и правда пираты… ну или неудачники. В интернете доступна версия 6.8, которую украли у HackingTeam (если кто помнит новости)

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

Слайд 10
Описание слайда:
Что же теперь делать? Заходите в подозрительную функцию (обычно это 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 вы или очень круты Или совсем отчаялись, причем скорее всего второе Позволяет обращать хеш-функции, туповатые 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 (m[x].as_long()*m[y].as_long())&0xFFFFFFFF,hex(m[x].as_long()^m[y].as_long())

Слайд 16
Описание слайда:
Сервер с задачами http://dmz.n0n3m4.ru/tasks


Скачать презентацию на тему Reverse engineering. Обратная разработка и взлом ПО можно ниже:

Похожие презентации