Форум: Форум C++Разное
Новые темы: 00
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Разное

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Расскажите поподробнее про дессамблеры и декомпиляторы
 
 автор: pini-pini   (21.01.2007 в 20:19)   письмо автору
 
 

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

  Ответить  
 
 автор: Trianon   (21.01.2007 в 20:39)   письмо автору
 
   для: pini-pini   (21.01.2007 в 20:19)
 

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

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

В любом случае практически для любого реального процессора дизассемблер всяко простейшим не будет. А уж декомпилятор и подавно.

  Ответить  
 
 автор: pini-pini   (21.01.2007 в 20:57)   письмо автору
 
   для: Trianon   (21.01.2007 в 20:39)
 

Спасибо.
Да, приведите пример программы-дизассемблера и декомпилятора

  Ответить  
 
 автор: cheops   (21.01.2007 в 21:47)   письмо автору
 
   для: pini-pini   (21.01.2007 в 20:57)
 

Наиболее известным дизассемблером считается IDA Pro.

  Ответить  
 
 автор: Trianon   (21.01.2007 в 21:56)   письмо автору
 
   для: cheops   (21.01.2007 в 21:47)
 

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

  Ответить  
 
 автор: cheops   (21.01.2007 в 21:51)   письмо автору
 
   для: pini-pini   (21.01.2007 в 20:19)
 

>И расскажите, как написать свой простейший дессамблер.
Для начала следует очень хорошо знать ассемблер желательно нескольких процессоров, а за одно и архитектуру процессоров. Кроме того, потребуются серьёзные знания по внутреннему устройству исполняемых файлов, а также тому, как наиболее известные компиляторы их предпочитают формировать. Это за собой влечёт архитектуру операционных систем.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования