Как стать автором
Обновить

Комментарии 10

Интересно, а может быть есть смысл перепечатать статьи о дизассемблировании бинарного кода из erfaren.narod.ru на Хабр? Особенно, если учесть, что ассемблерный код можно представить в виде Си-кода, с помощью соответствующего плагина IdaPro.
Ну дали Вы ссылку, отлично! Зачем дублировать-то? Тем более, что те статьи хоть и «серьёзны» по содержанию, по своему подходу и реализации, в настоящее время они не более, чем «забавны». Использование, например, Visual FoxPro в процессе решения задачи декомпиляции может (мне кажется) даже ввести в глубокий транс начинающих!.. Хотя, не буду ни в коем разе принижать уровень решений, описанных в тех статьях.
Но так сейчас уже точно не стоит делать, да и тогда-то этот подход был весьма и весьма спорным. Но это отдельный и достаточно длинный разговор (если что).
И ещё: Ильфак никогда не говорил, что результатом плагина (Hex-Rays Decompiler plugin) является «Си-код» (по Вашему выражению выше). Результатом работы плагина является псевдокод. И это отнюдь не одно и то же. Не советую питать иллюзии по поводу результатов плагина, хотя для «Hello, World» будет «вполне» Сишный результат!
Ильфак никогда не говорил, что результатом плагина (Hex-Rays Decompiler plugin) является «Си-код» (по Вашему выражению выше). Результатом работы плагина является псевдокод. И это отнюдь не одно и то же.

Если причесать псевдокод, то получим код, как я это делал на упомянутом сайте, для дизассемблерного листинга, переводя его в ассемблер (см. мою последнюю статью там).

Ну, а что именно говорил Ильфак Гильфанов, в 2003 году, в интервью: fcenter.ru/online/hardarticles/interview/6704-IDA_Pro_samyj_moschnyj_dizassembler_v_mire:

Конечно, еще одно направление — это выдача кода на языке высокого уровня, например С, т.е. написание декомпилятора. Задача достойная, и мы над ней работаем. Очень много деталей, которые нужно учитывать для работы с программами из реальной жизни.
Тут надо сразу сказать, что декомпилятор никогда не будет входить в состав IDA. Если (и это — большое «если») декомпилятор будет сделан, то только в виде отдельного продукта.

TanaT: Декомпилятор на язык С был бы отличным инструментов для многих профессионалов в reverse engineering. Думаете, это реально?

Ильфак: Это реально, если ставить перед собой разумные цели. Если цель — сделать систему, которая выдаст код для последующей компиляции и использования в составе другой программы, то ответ отрицательный. Вернее, такой декомпилятор сделать можно, и даже очень легко, но это меня лично совсем не интересует. Такая система была бы очень удобна для кражи кода. Если кто хочет заниматься этим, то, пожалуйста, без меня. Да, если хорошенько поискать, то такие системы можно найти в Интернете.

Если же целью является облегчение понимания программ, т.е. представление логики программы на языке высокого уровня так, чтобы это было читаемо человеком, то задача намного сложнее, но тоже решаема. Объем работ очень велик, а рынок для декомпиляторов — маленький. Может этим и объясняется тот факт, что настоящих декомпиляторов, способных разбирать реальные программы, не существует?
Кстати, уже существует маленький декомпилятор на основе IDA. Он был создан одним студентом как master thesis. Вы можете найти сайт, поискав его по имени: desquirr.

так это можно понимать по-разному.

Не советую питать иллюзии по поводу результатов плагина, хотя для «Hello, World» будет «вполне» Сишный результат!

Я встречал в Интернете упоминания, что полученный, с помощью плагина HexRays «псевдокод» Си, вполне успешно переводился в реальный Си-код. Вы думаете, это сложнее, чем дизассемблерный листинг превратить в ассемблерный код?
Вы уверены, что с 2003 года, когда декомпилятора у Ильфака не было, и он только «мечтал» об этом, что с тех пор ничего не поменялось?!
Эти вещи он утверждал ещё до «нашей эры». В принципе, он вроде и тогда уже был знаком с трудами Кристины Г., но тогда он ещё мог говорить что угодно, ведь декомпилятора-то у него ещё не было. А при реальной разработке реального декомпилятора… Как говорят у нас на Руси: «Весна покажет, кто где с...», ну или на вполне литературном: «Не говори „гоп“, пока не перепрыгнул»… Могло и его мировоззрение поменяться!
Так что ссылки на 2003 год — извините, это уже абсолютно не актуально. Много воды с тех пор утекло и многое поменялось!..
Я встречал в Интернете упоминания, что полученный, с помощью плагина HexRays «псевдокод» Си, вполне успешно переводился в реальный Си-код.
Это известный факт, более того, могу подтвердить, что среди таких проектов были достаточно серьёзные. Но подобная процедура — это далеко не тривиальная задача, а людей, способных на подобные подвиги, можно на пальцах пересчитывать. И речь идёт об серьёзных проектах, а не тех, где Си-шные исходники всего-то на сотню другую строк.
А всё потому, что выхлопом Hex-Rays Decompiler plugin является Си подобный псевдокод, а не Си-шный код. А получить нормальный Си-шный код из псевдокода очень часто отнюдь не тривиальная задача (специально повторился)!!!
И да, это должно быть значительно проще, чем получать ассемблерный код (компилируемый) из выхлопа Иды.
Честно говоря, мне не хотелось бы поднимать эту тему и тем более давать оценку самой процедуре получения ассемблерного кода после Иды для процедуры его компиляции ассемблером. Это абсолютно «несерьёзное» занятие для серьёзных проектов!..
Хотя никто не запрещает заниматься подобными вещами ради интереса или ещё зачем либо, но всерьёз воспринимать откомпилированный результат и тем более его использовать в реальной жизни… Я даже обсуждать это не буду...!!!
Начинающим могу рекомендовать «Reverse Engineering для начинающих» Дениса Юричева. Доступно в pdf на сайте автора

Или другие подобные статьи на Хабре. Десятки их уже.

НЛО прилетело и опубликовало эту надпись здесь
Прежде, чем давать читателю что-то о дизассемблировании, он (читатель) должен понимать,

зачем нужна очередная статья и чем она лучше других таких же на Хабре.

Почти слезу пустил. =)
По сути. Забыли упомянуть про УК РФ и тп при реверсе приложений.

и оффтоп: а проект OllyDbg еще жив ?

x64dbg наше всё, естественно под виндой и на текущий момент
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории