Страница 1 из 1

Декомпиляторы

Добавлено: 19 дек 2012, 03:09
Olej
Достаточно любопытная заметка: Декомпиляторы, или Что делать, если нужно восстановить исходники из бинарников?
Интересна она не столько даже описанными инструментами и достижениями ;-) , сколько тем, что из неё становится очень даже хорошо понятно насколько сложная эта проблема (и не решаемая в общем виде).

Re: Декомпиляторы

Добавлено: 19 дек 2012, 19:05
alex65su
Когда-то (еще во времена DOS) довелось весьма интенсивно (и результативно) пользоваться дизассемблером Sourcer от "V Communications".

По своему опыту этих изысканий могу сказать, что дизассемблирование машинного кода в код ассемблера - это... то еще "развлечение". Даже для получения вменяемого кода ассемблера требуется учитывать массу нюансов (на вскидку: правила вызова подпрограмм, параметры оптимизации, особенности генерации кода и распределения памяти конкретным компилятором...).

Re: Декомпиляторы

Добавлено: 19 дек 2012, 20:03
Olej
alex65su писал(а):Когда-то (еще во времена DOS) довелось весьма интенсивно (и результативно) пользоваться дизассемблером Sourcer от "V Communications".

По своему опыту этих изысканий могу сказать, что дизассемблирование машинного кода в код ассемблера - это... то еще "развлечение". Даже для получения вменяемого кода ассемблера требуется учитывать массу нюансов (на вскидку: правила вызова подпрограмм, параметры оптимизации, особенности генерации кода и распределения памяти конкретным компилятором...).
Я тоже повозился с дизассемблированием в своё время ... особенно под OS QNX.
И даже в этих элементарных случаях (ассемблер, а не язык высокого уровня) это очень проблематичное занятие.

Re: Декомпиляторы

Добавлено: 19 дек 2012, 20:27
alex65su
Olej писал(а): И даже в этих элементарных случаях (ассемблер, а не язык высокого уровня) это очень проблематичное занятие.
О том и речь!

Re: Декомпиляторы

Добавлено: 20 дек 2012, 16:22
alex65su
Кстати, вспомнилось...

В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.

Re: Декомпиляторы

Добавлено: 20 дек 2012, 16:34
Olej
alex65su писал(а):Кстати, вспомнилось...

В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
Это, в общем то, известно (думаю многим), но только это годится только для восстановления простейших кодов, например:
- инициализация процесса "С" и его завершения, exit (что может радикально отличаться в разных ОС)...
- или изучения того, как оптимизирует GCC вызов функций и передачу параметров при опциях -O2, -O3, ...

Для воссоздания и анализа кода это всё не годится.

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

Для чего я вообще обратил внимание на эту тему? : Не обольщайтесь. :lol: ... и не сильно слушайте чьи-то рассказки.

Re: Декомпиляторы

Добавлено: 20 дек 2012, 17:14
alex65su
Olej писал(а):
alex65su писал(а):Кстати, вспомнилось...

В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
Это, в общем то, известно (думаю многим), но только это годится только для восстановления простейших кодов, например:
- инициализация процесса "С" и его завершения, exit (что может радикально отличаться в разных ОС)...
- или изучения того, как оптимизирует GCC вызов функций и передачу параметров при опциях -O2, -O3, ...

Для воссоздания и анализа кода это всё не годится.
Вообще, я objdump и binutils упомянул для полноты картины, а не как рекомедацию для... ;)
Olej писал(а): Для чего я вообще обратил внимание на эту тему? : Не обольщайтесь. :lol: ... и не сильно слушайте чьи-то рассказки.
Зато для написания разного рода диссертаций - эта тема бездонна! :-)

Re: Декомпиляторы

Добавлено: 20 дек 2012, 17:19
Olej
alex65su писал(а):Зато для написания разного рода диссертаций - эта тема бездонна! :-)
В принципе, да ... Так же, как, скажем, автоматическая верификация кода :lol: