Страница 1 из 1
Декомпиляторы
Добавлено: 19 дек 2012, 03:09
Olej
Достаточно любопытная заметка:
Декомпиляторы, или Что делать, если нужно восстановить исходники из бинарников?
Интересна она не столько даже описанными инструментами и достижениями
![Подмигивает ;-)](./images/smilies/icon_e_wink.gif)
, сколько тем, что из неё становится очень даже хорошо понятно насколько сложная эта проблема (и не решаемая в общем виде).
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:](./images/smilies/icon_lol.gif)
... и не сильно слушайте чьи-то рассказки.
Re: Декомпиляторы
Добавлено: 20 дек 2012, 17:14
alex65su
Olej писал(а):alex65su писал(а):Кстати, вспомнилось...
В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
Это, в общем то, известно (думаю многим), но только это годится только для восстановления простейших кодов, например:
- инициализация процесса "С" и его завершения, exit (что может радикально отличаться в разных ОС)...
- или изучения того, как оптимизирует GCC вызов функций и передачу параметров при опциях -O2, -O3, ...
Для воссоздания и анализа кода это всё не годится.
Вообще, я
objdump и
binutils упомянул для полноты картины, а не как рекомедацию для... ;)
Olej писал(а):
Для чего я вообще обратил внимание на эту тему? :
Не обольщайтесь.
![Смеётся :lol:](./images/smilies/icon_lol.gif)
... и не сильно слушайте чьи-то рассказки.
Зато для написания разного рода диссертаций - эта тема бездонна!
![Улыбается :-)](./images/smilies/icon_e_smile.gif)
Re: Декомпиляторы
Добавлено: 20 дек 2012, 17:19
Olej
alex65su писал(а):Зато для написания разного рода диссертаций - эта тема бездонна!
![Улыбается :-)](./images/smilies/icon_e_smile.gif)
В принципе, да ... Так же, как, скажем, автоматическая верификация кода
![Смеётся :lol:](./images/smilies/icon_lol.gif)