Reverse
Описание Reverse
Инструмент осуществляет обратный инжиниринг для двоичных файлов x86/ARM/MIPS. Генерирует более читаемый код (псевдо-C) с раскраденным синтаксисом.
Поддерживаемые форматы : ELF, PE, RAW.
Makefile используется только для проверки тестов.
Домашняя страница: https://github.com/joelpx/reverse
Автор: joelpx
Лицензия: GNU GENERAL PUBLIC LICENSE Version 3
Справка по Reverse
Использование:
reverse.py [-h] [-nc] [-g] [--nocomment] [--noandif] [--datasize N] [-x SYMBOLNAME|0xXXXXX|EP] [--vim] [-s] [-c SECTION_NAME] [--sections] [--dump] [-l N] [--bytes] [-i] [-d] [-ns] [--raw x86|x64|arm|mips|mips64] [--rawbase 0xXXXXX] [--rawbe] [FILENAME]
позиционные аргументы:
ИМЯ_ФАЙЛА
опциональные аргументы:
-h, --help показать это сообщение справки и выйти
-nc, --nocolor без цветов
-g, --graph Сгенерировать html потокового графика. Смотри d3/index.html.
--nocomment Не печатать комментарии
--noandif Печатать нормальные 'if' вместо 'andif'
--datasize N по умолчанию 30, максимальное количество отображаемых символов для строк или для массивов байт.
-x SYMBOLNAME|0xXXXXX|EP, --entry SYMBOLNAME|0xXXXXX|EP Псевдодекомпиляция, по умолчанию - главная. EP выступает за точку входа
--vim Генерирует синтаксис цветов для vim
-s, --symbols Печатать все символы
-c SECTION_NAME, --calls SECTION_NAME Напечатать все вызовы, которые в заданной секции
--sections Напечатать все секции
--dump Дамп ассемблера без декомпиляции
-l N, --lines N Максимум строк, используется с --dump
--bytes Напечатать instruction bytes
-i, --interactive Интерактивный режим
-d, --opt_debug Отладка
-ns, --nosectionsname Без имён секций
--raw x86|x64|arm|mips|mips64 Рассматривать входной файл как сырой бинарный файл
--rawbase 0xXXXXX Установить базовый адрес сырого файла (по умолчанию=0)
--rawbe Если не установлено, то прямой порядок байтов.
Руководство по Reverse
Страница man отсутствует.
Редактировать с vim
./reverse tests/dowhile1.bin --vim
Теперь вы можете запустить:
vim dowhile1.bin.rev -S dowhile1.bin.vim
Пользовательские цвета
При первой загрузке reverse.py создаёт новый файл custom_colors.py, в котором значения по умолчанию. В нём вы можете установить ваши собственные цвета.
Примеры запуска Reverse
Псевдодекомпиляция функций
Опция -x main является опциональной, поскольку бинарные файлы содержат символ main.
./reverse.py tests/server.bin
Интерактивный режим (-i)
Больше команд доступны в этом режиме (da, db, …). Смотрите спаску для полного списка.
Анализ шелл-кода
Для каждого int 0x80, инструмент пытается определить системные вызовы с параметрами.
$ ./reverse.py --raw x86 tests/shellcode.bin function 0x0 { 0x0: eax = 0 # xor eax, eax 0x2: al = '\x0b' # mov al, 0xb 0x4: cdq 0x5: push edx 0x6: push 1752379246 "n/sh" 0xb: push 1768042287 "//bi" 0x10: ebx = esp # mov ebx, esp 0x12: push edx 0x13: push ebx 0x14: ecx = esp # mov ecx, esp 0x16: int 128 ; execve(ebx, ecx, edx) # int 0x80 }
Установка Reverse
Установка в Kali Linux, Debian, Ubuntu, Mint
Требования
- python >= 3.4
- capstone + python bindings (see requirements.sh)
- python-pyelftools
- https://github.com/simonzack/pefile-py3k
- терминал с 256 цветами (если не используется опция `--nocolor`)
Для связки Python и Capstone engine, вы можете установить его из PyPi следующим образом:
sudo pip3 install capstone
Вы также можете запустить requirements.sh, который получит все компоненты.
git clone https://github.com/joelpx/reverse.git cd reverse/ ./requirements.sh ./reverse.py --help
Скриншоты Reverse
Инструкции по Reverse
Ссылки на инструкции будут добавлены позже.
Comments are Closed