eXeLab
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС ВЗЛОМ
выпущен 2 августа!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

Русский / Russian English / Английский

Сейчас на форуме: Adler (+4 невидимых)
 · Начало · Статистика · Регистрация · Поиск · ПРАВИЛА ФОРУМА · Язык · RSS · SVN ·

 eXeL@B —› Вопросы новичков —› Декомпиляция (Основополагающие принципы)
Посл.ответ Сообщение

Ранг: 42.2 (посетитель)
Статус: Участник

Создано: 29 марта 2014 00:17 New!
Цитата · Личное сообщение · #1

Решил запилить свой декомпиллер байт кода .
Для простоты понимания (та и не шибко заморачиваться с самим дизассемблером) цель выбрал MapBasic
Код компиляется в байткод виртуальной машины .
Ушло 2 недели на разбор байткода и написание дизассемблера ( вероятно не все инструкции разобраны , ибо довольно мощные высокоуровневые инструкции свернуты в одну инструкцию байткода )

далее размышления привели к такому алгоритму :

1. Выделяем все загрузки переменных/констант в стек
2. Выделяем вызываемые функции использующие переменные из стека
3. Выделяем математические инструкции ...
4. ... логические

но вопрос как свернуть логические "cmp -> jmp" в "if - else if - if " или в "case" ?

Суть вопроса в том что каков алго декомпиляции (приведения асм кода к высокому уровню) ?


Ранг: 485.6 (мудрец)
Статус: Участник
_Вечный_Студент_

Создано: 29 марта 2014 00:26 · Поправил: plutos New!
Цитата · Личное сообщение · #2

http://www.backerstreet.com/decompiler/control_flow_graph.php

http://web.ist.utl.pt/pedrodaniel/tese/artigos/A%20Structuring%20Algorithm%20for%20Decompilation.pdf

| Сообщение посчитали полезным: kid


Ранг: 300.0 (мудрец)
Статус: Участник

Создано: 29 марта 2014 09:03 · Поправил: Veliant New!
Цитата · Личное сообщение · #3

http://zyloid.com/recomposer/files/decompilation_thesis.pdf

cmp в case врядли свернешь.. даже хексрей еще не научился. Case разве что табличный сворачивается

| Сообщение посчитали полезным: kid



Ранг: 331.2 (мудрец)
Статус: Участник
born to be evil

Создано: 29 марта 2014 10:28 New!
Цитата · Личное сообщение · #4

graywolf или как его там, красиво сворачивает условия, сам не ожидал от такой поделки. с автором попробуй связаться. ну, и GPCH как бы мутит в vb-decompiler

Ранг: 42.4 (посетитель)
Статус: Участник

Создано: 29 марта 2014 10:43 · Поправил: DrVB_5_6 New!
Цитата · Личное сообщение · #5

kid пишет:
Суть вопроса в том что каков алго декомпиляции (приведения асм кода к высокому уровню) ?


Ты бы примерчик кода выложил где-нибудь, абстрактно и универсально проблема тяжеловато решается!
Для байт-кода всё может быть попроще, чем, к примеру, в диссертации Кристины.
А результатов корректных даже для VBasic в паблике нет! Только в привате.

ajax пишет:
graywolf или как его там, красиво сворачивает условия, сам не ожидал от такой поделки


Не подскажешь, где живёт это чудо, а то как-то не попадалось!

ajax
Для Net и для pcode VBasic задача должна быть полностью разрешима (предполагаю так из опыта работы с VBasic),
по крайней мере для VB я её решил практически полностью. Но там используются дополнительная информация о структуре формируемых выражений компилятором.
Насколько я представляю себе Net, там так же должно прокатить.


Ранг: 331.2 (мудрец)
Статус: Участник
born to be evil

Создано: 29 марта 2014 10:50 New!
Цитата · Личное сообщение · #6

DrVB_5_6
http://www.digitalbodyguard.com/graywolf.html

| Сообщение посчитали полезным: DrVB_5_6, kid



Ранг: 748.2 (! !)
Статус: Участник
bytecode!

Создано: 29 марта 2014 12:17 New!
Цитата · Личное сообщение · #7

kid
В сети полно опенсорсных декомпилей, разбирающих (чистый) байткод. Видел как минимум для флэша, дотнета и явы.

Ранг: 42.2 (посетитель)
Статус: Участник

Создано: 29 марта 2014 18:55 · Поправил: Модератор New!
Цитата · Личное сообщение · #8

Всем спасибо за инфо .
Буду курить .

4kusNick пишет:
kid
В сети полно опенсорсных декомпилей, разбирающих (чистый) байткод. Видел как минимум для флэша, дотнета и явы.


Это да , но это еще убить время что бы вкурить что там накодили , а тут вполне вменяемая литература была показана , еще раз спасибо за нее .

От модератора: Пользуйся кнопкой "Правка", не создавай сообщения подряд.
 eXeL@B —› Вопросы новичков —› Декомпиляция (Основополагающие принципы)

Оригинальный DVD-ROM: eXeL@B DVD !

Вы находитесь на форуме сайта EXELAB.RU
Проект ReactOS