Декомпиляторы
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Декомпиляторы
Достаточно любопытная заметка: Декомпиляторы, или Что делать, если нужно восстановить исходники из бинарников?
Интересна она не столько даже описанными инструментами и достижениями , сколько тем, что из неё становится очень даже хорошо понятно насколько сложная эта проблема (и не решаемая в общем виде).
Интересна она не столько даже описанными инструментами и достижениями , сколько тем, что из неё становится очень даже хорошо понятно насколько сложная эта проблема (и не решаемая в общем виде).
Re: Декомпиляторы
Когда-то (еще во времена DOS) довелось весьма интенсивно (и результативно) пользоваться дизассемблером Sourcer от "V Communications".
По своему опыту этих изысканий могу сказать, что дизассемблирование машинного кода в код ассемблера - это... то еще "развлечение". Даже для получения вменяемого кода ассемблера требуется учитывать массу нюансов (на вскидку: правила вызова подпрограмм, параметры оптимизации, особенности генерации кода и распределения памяти конкретным компилятором...).
По своему опыту этих изысканий могу сказать, что дизассемблирование машинного кода в код ассемблера - это... то еще "развлечение". Даже для получения вменяемого кода ассемблера требуется учитывать массу нюансов (на вскидку: правила вызова подпрограмм, параметры оптимизации, особенности генерации кода и распределения памяти конкретным компилятором...).
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Декомпиляторы
Я тоже повозился с дизассемблированием в своё время ... особенно под OS QNX.alex65su писал(а):Когда-то (еще во времена DOS) довелось весьма интенсивно (и результативно) пользоваться дизассемблером Sourcer от "V Communications".
По своему опыту этих изысканий могу сказать, что дизассемблирование машинного кода в код ассемблера - это... то еще "развлечение". Даже для получения вменяемого кода ассемблера требуется учитывать массу нюансов (на вскидку: правила вызова подпрограмм, параметры оптимизации, особенности генерации кода и распределения памяти конкретным компилятором...).
И даже в этих элементарных случаях (ассемблер, а не язык высокого уровня) это очень проблематичное занятие.
Re: Декомпиляторы
О том и речь!Olej писал(а): И даже в этих элементарных случаях (ассемблер, а не язык высокого уровня) это очень проблематичное занятие.
Re: Декомпиляторы
Кстати, вспомнилось...
В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Декомпиляторы
Это, в общем то, известно (думаю многим), но только это годится только для восстановления простейших кодов, например:alex65su писал(а):Кстати, вспомнилось...
В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
- инициализация процесса "С" и его завершения, exit (что может радикально отличаться в разных ОС)...
- или изучения того, как оптимизирует GCC вызов функций и передачу параметров при опциях -O2, -O3, ...
Для воссоздания и анализа кода это всё не годится.
А если уж бинарный исполнимый код подвергается динамической модификации (что вполне реализуемо), то здесь вообще никакой реассемблер и подступиться не может... Здесь можно ограниченные фрагменты анализировать с помощью отладчика gdb (который тоже прекрасно справляется с реассемблированием), но это всё только в отншении ограниченных фрагментов.
Для чего я вообще обратил внимание на эту тему? : Не обольщайтесь. ... и не сильно слушайте чьи-то рассказки.
Re: Декомпиляторы
Вообще, я objdump и binutils упомянул для полноты картины, а не как рекомедацию для... ;)Olej писал(а):Это, в общем то, известно (думаю многим), но только это годится только для восстановления простейших кодов, например:alex65su писал(а):Кстати, вспомнилось...
В LINUX (и не только), утилита objdump из пакета binutils способна генерировать дампы дизассемблирования, при использовании опций -d (--disassemble) и -D.
- инициализация процесса "С" и его завершения, exit (что может радикально отличаться в разных ОС)...
- или изучения того, как оптимизирует GCC вызов функций и передачу параметров при опциях -O2, -O3, ...
Для воссоздания и анализа кода это всё не годится.
Зато для написания разного рода диссертаций - эта тема бездонна!Olej писал(а): Для чего я вообще обратил внимание на эту тему? : Не обольщайтесь. ... и не сильно слушайте чьи-то рассказки.
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Re: Декомпиляторы
В принципе, да ... Так же, как, скажем, автоматическая верификация кодаalex65su писал(а):Зато для написания разного рода диссертаций - эта тема бездонна!
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 6 гостей