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

screenshot

Инструкции по Reverse

Ссылки на инструкции будут добавлены позже.


Близкие программы:

  • TrID (100%)
  • YARA (100%)
  • JS Beautifier (100%)
  • JStillery (100%)
  • UglifyJS (100%)
  • Binwalk (RANDOM - 100%)
  • Рекомендуется Вам:

    Comments are Closed