Как стать автором
Обновить

Взгляд с обратной стороны: как смотрит на код реверсер

Время на прочтение12 мин
Количество просмотров5.7K
Всего голосов 10: ↑9 и ↓1+8
Комментарии12

Комментарии 12

Здравствуйте, спасибо за статью и видео. Очень познавательно.

У меня вопрос практический. Дело в том, что я отлаживаю бинарники прямо в IDA Pro. Считаю это удобным, так как там сразу можно переименовывать функции и переменные, а при необходимости можно в IDB'ку сохранить распакованный/расшифрованный код из debug-секций.

Но мои коллеги используют IDA Pro лишь как дизассемблер/декомпилятор, а отлаживают в ollydbg/x64dbg. Когда сталкиваюсь с проблемой, иногда бывает так, что она очень просто решается в том же ollydbg, но не в IDA Pro, из-за чего коллеги мягко форсят меня принять их веру :D

Поэтому хотел спросить, в чем отлаживаете вы и ваши коллеги/знакомые? Есть ли какие-либо преимущества и недостатки при отладке в IDA Pro (при использовании разных отладчиков) по сравнению с ollydbg/x64dbg?

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

Я пока что не перешёл на ollydbg/x64dbg, выбираю боль и страдания :D Поэтому и спрашиваю, используют ли IDA Pro в качестве отладчика для анализа малвари или лучше перейти на ollydbg/x64dbg для этих целей? Сейчас смотрю простые вещи, IDA Pro пока что со всем справляется, но вдруг упрусь в какое-то препятствие в будущем, для которого только ollydbg/x64dbg подойдет?

да на мой взгляд - отладчик и отладчик. интерфейс qt похуже нативного x64dbg, но если удобно переименовывать в одном месте, то пользуйтесь, не вижу прям минусов. и если еще не были, то загляните в директорию dbgsrv у иды, вам понравится ) там серверные части для отладки линуксовых, маковских и т.п. сапмлов

спасибо! (b^_^)b

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

Два вопроса:

  1. Всегда так подробно восстанавливаете код? Бывает, что логику можно понять меньшими трудозатратами.

  2. Как производится разбор неизвестного класса с++? Нашли конструктор, сделали под него пустую структуру нужного размера, установили новый тип переменной и анализируете дальше обращения с угадыванием полей?

  1. наша специфика - да, почти всегда

  2. почти, только "угадывание" не нравится - сначала dwSmth, потом в каком-нибудь из методов поле становится dwFlagContinue, ну и потом еще в чужом методе и до dwFlagSecondThreadEnd получается доименовать

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

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

Верно, речь про контейнеры. И с опциями компилятора согласен ,что много вопросов. Можно пока упростить задачу - для начала это могут быть готовые контейнеры с компиляторами разных версий(либо 1 контейнер - 1 компилятор, если так будет проще), чтобы каждый раз реверсеру не проделывать одну и ту же работу по развертыванию окружения для самого компилятора и его непосредственной установки, тратя на это силы и время, а еще это сильно отвлекает =).

А нет ли какого-нибудь решения для распознавания библиотечных функций на основе нейросетей ? В распознавании изображений они неплохо себя показывают, может и типичные паттерны в коде можно искать с их помощью ?

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

Зарегистрируйтесь на Хабре, чтобы оставить комментарий