LINUX.ORG.RU

REDasm 2 — очередной аналог IDA

 ,


7

4

В новостях о декомпиляторе АНБ США почти затерялся другой интерактивный дизассемблер, действительно полностью открытый — REDasm.

REDasm написан на C++11, интерфейс на Qt5. Архитектура модульная, с прицелом на простое добавление новых форматов и наборов инструкций (описания в JSON). Версия 2.0 вышла 4 марта.

Отличия новой версии:

  • Новый движок дизассемблера.
  • Новый виджет дизассемблера.
  • Новый движок сигнатур.
  • Новый виджет 16-ричного редактора.
  • Анализ в несколько потоков (по числу ядер).
  • Графы строятся на QtWebEngine.
  • Разделение програмы на интерфейс пользователя, библиотеку LibREDasm и базу данных.
  • Упрощение API библиотеки LibREDasm.
  • Переделка всех API эмуляции.
  • Улучшение эвристик выбора ARM/Thumb.
  • Улучшение листингов ARM.
  • Добавлены всплывающие подсказки на символах как в IDA.
  • Добавлена тёмная тема оформления.
  • Добавлены стрелки для переходов на предыдущую-следующую позиции в листинге.
  • Список недавних файлов.
  • Сохранение проектов (RDB).
  • Улучшение клавиатурных команд.
  • Перенос на CMake.
  • Анализ RTTI MSVC.
  • Обратное преобразование имён MSVC (MSVC Demangling).
  • Улучшен декомпилятор VB.
  • Загрузчик GBA (WIP).
  • Загрузчик N64 (WIP).
  • Объединены загрузчики ELF (порядок Little/Big endian и 32/64бита).
  • Объединены загрузчики PE (порядок Little/Big endian).
  • Поддержка Clang для 64 бит.
  • Переработка пользовательского интерфейса.
  • Исправления ошибок.

Как видно из списка, программа ещё на той стадии, когда можно выбросить и переписать значительную часть кода, и возможны кардинальные улучшения архитектуры и интерфейса.

Для запуска выложенных линуксовых бинарников нужны:

  • libQt5WebEngine.so.5
  • libQt5WebEngineWidgets.so.5
  • libQt5WebChannel.so.5
  • libQt5Widgets.so.5
  • libQt5Gui.so.5
  • libQt5Core.so.5
  • libpthread.so.0
  • libstdc++.so.6
  • libgcc_s.so.1
  • libc.so.6

Личное впечатление — интерфейс похож на IDA, но не столь обкатан, проще, но ограниченнее. Нет ещё такой библиотеки форматов и вызываемых функций, как у IDA. Как пример необкатанности — неизвестный формат предлагает импортировать как MIPS32, а не как предыдущий. 32-килобайтный ELF (67K исходников на C) проанализировало за 16 секунд на 1ГГц 2-ядернике полностью автоматически.

Официальный сайт

>>> Версия 2.0 на Гитхабе

★★★★★

Проверено: jollheef ()

Ответ на: комментарий от question4

тут другое. прошивка под конкретный смартфон. там всё заранее известно. и железо, и адреса, откуда она что-то качает, жёстко прописаны в этой прошивке. шаг влево-шаг вправо - и это всё уже не будет работать. в байки о подмене приложений банков я не верю. слишком сложно. впрочем, на смартфонах такая помойка, что может, сейчас уже и банковское ПО пишут макаки. но по идее там должно быть всё подписано ключами и просто так не подкопаться. дыры в браузерах - это отдельная песня. тут идеальное стопроцентное решение - только запрет скриптов. ну и проверка плагинов. хотя в браузерах сейчас под каждый сайт своё пространство для скриптов, вроде бы. но я хз как там с разграничением доступа к данным. где-то могут быть дыры, наверное.

Iron_Bug ★★★★ ()
Ответ на: комментарий от Iron_Bug

прошивка под конкретный смартфон

Под несколько десятков моделей. Предположительно, делались сотрудниками аутсорсера, у которого заказывали прошивки.

в байки о подмене приложений банков я не верю. слишком сложно.

Клиент Сбербанка делает всё то же самое, что и вебсайт Сбербанка. Скорее всего, и пишут одни люди. Идентификация при логине по номеру карты и СМС. По крайней мере, в 2015-м было так. Подменить — не проблема. Большей проблемой будет подпись APK, но эту проблему авторы прошивки решили :)

question4 ★★★★★ ()
Ответ на: комментарий от seiken

Не могу знать наверняка. Я ж не работник Госдепа. Знаю только, что «Вектор»-ское прошлое моей супруги вызвало самый неподдельный интерес, и вылилось в длинную, больше месяца, проверку и сокращенный срок полученной визы. Это при том, что это её официально звали прочесть доклад на конференции, а я так просто, из праздного любопытства на ту сторону планеты поперся.

Мое мимокрокодильское оценочное суждение: если Вы не размахивали своим хобби направо и налево, то, вероятно, о нем можно умолчать. Вряд ли при пересечении границы Вас немедленно этапируют в Гуантанамо с целью выведать Ваши маленькие секреты путем частичного утопления и других любимых забав нынешней директрисы ЦРУ. Если размахивали, то даже не знаю, что посоветовать. Наверное, безопаснее всего чистосердечно признать свою вину и всячески содействовать следствию.

AlexM ★★★★★ ()
Ответ на: комментарий от question4

если аутсорсер сливает спецификации и пишет какие-то левые прошивки - это какой-то фиговый аутсорсер. с таким никто потом работать не станет.

я понятия не имею, что там у Сбербанка. я им не пользуюсь. там может быть что угодно.

Iron_Bug ★★★★ ()
Ответ на: комментарий от Iron_Bug

можно из нее взять настройки доступа в интернет

нельзя. потому что в раме ты их просто не найдешь

Во-первых, найдёшь. Это не так сложно, как кажется. Там чуть ли не регулярки хватит. Нам ведь не надо находить их в 100% случаев, даже если оно сработает в 50% — этого достаточно.

Но на практике даже с этим не заморачиваются. В троян просто вшивают почти готовые IP-пакеты, которыми он плюётся в сетевую карту. А айпишники, роуты и всё остальное ОС сама настроит.

anonymous ()
Ответ на: комментарий от Iron_Bug

Ты пытаешься решать задачу в общем случае - любое железо / любая ОС. Я с тобой сгласен, тут действительно трудно что-то сделать - потребуется целая ОС в прошивке и ИИ, анализирующий гостя. Но если сфокусироватьться только на самой распространённой ОС - винде,задача упрощается на порядки.

Существует computrace, который, как я понимаю, работает на любом виндовом ноутбуке. И, который в общем случае вычистить невозможно.

Ничто не мешает существовать зловредам на таком же принципе.

Более того, года два назад немецкий бундестаг был вынужден просто уничтожить все свои компы, поскольку вылечить их было якобы невозможно. Тут конечно, мутная история, поскольку гос. контора. Может, кто-то бабки попилил. Но что-то они комиссии продемонстрировать должны были. У немцев нельзя так просто купить комиссию.

alt-x ★★★★★ ()
Ответ на: комментарий от Iron_Bug

как это вдруг «ОС сама настроит» что-то? не прописывай автонастройку где не надо - и ничего ОС не настроит.

Как это «не прописывай»? А как в интернет ходить без настройки сети в ОС?

anonymous ()
Ответ на: комментарий от Iron_Bug

руками прописать адреса. и не пользоваться провайдерами, которые через жопу предоставляют выход в сеть без нормального белого IP.

Не важно как, по DHCP, или руками, с белым адресом, или без... Как только сетевуха настроена — троян может плевать пакеты в уже готовую настроенную сетевуху. Ему не нужно ничего искать.

anonymous ()
Ответ на: комментарий от anonymous

как он их плевать будет? ядро формирует пакеты, пардон. и сформировать raw-пакет, чтобы его плевать - это надо себе TCP/IP-cтек имплементировать. иначе твой пакет не дойдёт даже до гейта. да и сам процесс плевания в железную карту - это весьма себе нетривиальная вещь. этим занимается целый драйвер сетевой карты, причём специфический для каждой конкретной карты. вообще, работа сети - это весьма жирная подсистема в любой ОС. создать её копию в какой-то мелкой прошивке крайне сложно. и тем более отправлять что-то в железо при работающем драйвере основной системы запросто может обрушить систему.

я же говорю: дьявол скрывается в деталях. это только кажется так просто. на самом деле практически нереально.

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Iron_Bug

как он их плевать будет? ядро формирует пакеты, пардон. и сформировать raw-пакет, чтобы его плевать - это надо себе TCP/IP-cтек имплементировать.

Ядро известно заранее? Тогда можно воспользоваться им, наплевав на несущественную долю пользователей установивших другую ОС. Ядро неизвестно? Тогда можно воспользоваться одной из многочисленных свободных ОС, благо несколько мегабайт в ROM засунуть уже давно не проблема. А ядра с реализацией TCP/IP бывают и существенно меньше мегабайта.

question4 ★★★★★ ()
Ответ на: комментарий от question4

ядро неизвестно и его конфигурация тоже. и что тебе даст эта ось? у тебя система работает с железякой. ты попытаешься параллельно её работе захватывать железо? кто-то из вас упадёт. ну либо захватит шину и зависнет.

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 1)
Ответ на: комментарий от Iron_Bug

ядро формирует пакеты, пардон. и сформировать raw-пакет, чтобы его плевать - это надо себе TCP/IP-cтек имплементировать

Это не так много, как кажется. Даже универсальная реализация вместе с ARP/ICMP/DHCP/DNS/etc. укладывается в несколько десятков килобайт и давно используется на ардуинах.

Но трояну не нужна универсальная реализация, ему нужен минимальный набор, фиксированные IP/порт, статические заголовки, без фрагментации/флагов/опций, можно даже на UDP... И тогда никакой стек не нужен, только приём/отправка заранее вшитых простых пакетов.

да и сам процесс плевания в железную карту - это весьма себе нетривиальная вещь. этим занимается целый драйвер сетевой карты, причём специфический для каждой конкретной карты.

Да, написать драйвер сложнее, чем «TCP/IP-cтек». Для более-менее универсального трояна придётся писать несколько драйверов. Но это вполне возможно. Те же ардуинщики это давно делают. Не говоря уже про биосы, которые умеют грузиться по сети.

А если мы пишем под конкретное железо (например, мы — вендор, который хочет шпионить за своими юзерами), то драйвер — вообще не проблема.

и тем более отправлять что-то в железо при работающем драйвере основной системы запросто может обрушить систему.

Ничуть. Intel AMT уже сто лет так работает — используется та же сетевуха, что и у основной системы. Причём пакеты, адресованные в AMT, до ОС вообще не доходят. Обнаружить их изнутри ОС невозможно.

я же говорю: дьявол скрывается в деталях. это только кажется так просто. на самом деле практически нереально.

Это местами сложно, особенно если с железом не приходилось работать. Но это не только реально, а и давно сделано.

anonymous ()
Ответ на: комментарий от anonymous

не «несколько драйверов», а все, например, которые есть в кернеле. плюс остальные, которых там нет. и которые вообще проприетарные, например. что ещё веселее. плюс фирмвара для них, ага.

это всё тухлые разговоры. я даже не хочу продолжать. это миллион утилит, дров, прошивок, которые никак нельзя впихнуть в какой-то сраный чип.

и главное, что это всё равно не будет работать, потому что нельзя одновременно работать с железом из двух осей. и ничего нигде не сделано. только жёлтая пресса и страшилки для хомяков.

Iron_Bug ★★★★ ()
Последнее исправление: Iron_Bug (всего исправлений: 3)
Ответ на: комментарий от Iron_Bug

это миллион утилит, дров, прошивок, которые никак нельзя впихнуть в какой-то сраный чип.

В сраный чип на десяток килобайт можно не только дрова, можно целый веб-сервер впихнуть.

не «несколько драйверов», а все, например, которые есть в кернеле. плюс остальные, которых там нет. и которые вообще проприетарные, например. что ещё веселее. плюс фирмвара для них, ага.

Трояну не нужен ни полноценный драйвер ни фирмвари. ОС выполнит всю инициализацию и настройку. Трояну достаточно только отправлять пакеты. И не нужны все драйвера, достаточно одного — под ту сетевуху, под которую пишется троян.

и главное, что это всё равно не будет работать, потому что нельзя одновременно работать с железом из двух осей. и ничего нигде не сделано

Рядом со мной стоит системник с Intel AMT, который для сети использует ту же сетевуху, что и основная система. Материнке лет 10. Это не просто уже сделано, это сделано много лет назад.

anonymous ()