Перейти к содержанию
    

можно ли дизасемблировать объектный файл (исполняемый) так, чтобы взял ассемблер?

то есть нужно получить из большого количества объектных файлов (то есть автоматически) получить ассемблерные файлы, которые возьмет gcc (gnu as)

архитектура sparc, но может методы от arm-а тоже пойдут

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то есть нужно получить из большого количества объектных файлов...

 

на автомате вряд-ли. Если есть более-менее сложный алгоритм (либо уход от дизасемблирования) - то точно нет.

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

потом на точное совпадение бинарника, потом идёт уже осмысленное охват исходников на предмет того чего нужно.

пока этот процесс не научится делать автомат - то это "хфантастика сынок".

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я понимаю, что не просто метки/символы повосстанавливать и т.п.

но в 90-е пользовал для х86-го (а там инструкции переменной длины) Sorcer - вполне нормально реверсилось. вроде и IDA PRO что-то такое делала - но не уверен, давно было.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

.. вроде и IDA PRO что-то такое делала..

 

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

если хоть мало-мальская защита есть (либо бестолково написано, не совсем "по правилам"), то не получится.

 

IDA всеядна. лучше неё вроде как и нет. хотя я может и ошибаюсь - касался темы(косвенно) последний раз годика 4-5 назад..

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не встречал ни одного дизассемблера (включая IDA) который корректно автоматически может раскопать нестандартное ветвление по таблицам. Или структуры типа

PUSH R

RET

Или такую

CALL PRINT

DB "TEKST",0FFH

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

то есть нужно получить из большого количества объектных файлов (то есть автоматически) получить ассемблерные файлы, которые возьмет gcc (gnu as)

архитектура sparc, но может методы от arm-а тоже пойдут

 

 

Если проект большой, то дизассемблировать весь проект слишком большая задача.

Обычно ищут нужное место в готовой прошивке, затем jump на свободный участок.

На свободном участке размещают требуемую функциональность и ret обратно или куда нужно.

 

PS Дизассемблировал бинарник IDA ATmega.

Проект явно написан на С. В нем была функция вывода на двустрочный дисплей.

Часть параметров функции были одинаковы(число байт для вывода и начало).

 

Отличались только состоянием регистровой пары Z для вызова ICALL двух функций.

IDA честно объявила две функции вывода (из флеш и оперативной памяти) сегментом данных.

Компилятору без разницы, поэтому проект компилировался корректно.

 

PPS Какая сейчас IDA доступна на фтп?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...