Blog. Just Blog

Дизассемблеры и декомпиляторы исполняемых файлов

Версия для печати Добавить в Избранное Отправить на E-Mail | Категория: Темная сторона Силы | Автор: ManHunter
Дизассемблеры и декомпиляторы исполняемых файлов
Дизассемблеры и декомпиляторы исполняемых файлов

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

Скриншот программы dnSpy
Скриншот программы dnSpy

Начнем с популярного нынче дотнета. Не будет преувеличением сказать, что самый мощный на сегодняшний день инструмент для потрошения приложений на .NET - это бесплатный проект dnSpy. Он включает в себя декомпилятор C# и Visual Basic .NET, отладчик, редактор сборки с подсветкой синтаксиса, HEX-редактор и еще множество инструментов. Русский язык в наличии. Самую свежую версию можно всегда скачать с офсайта.

Скриншот программы IDA Pro Advanced
Скриншот программы IDA Pro Advanced

IDA Pro (сокращение от Interactive DisAssembler) - один из моих основных инструментов для реверс-инжиниринга и разбора файлов. Это интерактивный дизассемблер и отладчик с поддержкой множества форматов исполняемых файлов для большого числа процессоров и операционных систем. Чтобы перечислить все его возможности потребуется целая книга. Но даже тут возможности IDA не заканчиваются. Плагин Hex-Rays для IDA Pro позволяет декомплировать ассемблерный листинг в более-менее человекопонятный псевдокод, по синтаксису похожий на C. В некоторых случаях это значительно облегчает работу. Просто так приобрести IDA Pro частным лицам практически невозможно, и дело не только в непомерной цене, а в том, что автор придерживается абсолютно неадекватной политики в плане продаж. К счастью, несколько последних версий этого замечательного дизассемблера, несмотря на все трудности, были успешно слиты в свободный доступ. Это IDA Pro Advanced 6.8, последняя доступная версия, которая работает с 32-битными системами, а также IDA Pro Advanced 7.0 и IDA Pro Advanced 7.2 для 64-битных систем. Если по каким-то причинам вы не можете использовать варез, то на офсайте есть бесплатные демо-версии с урезанным функционалом.

Скриншот программы Relyze
Скриншот программы Relyze

Relyze - бесплатный интерактивный дизассемблер для исполняемых файлов в формате x86, x64, ARM32 и ARM64. Поддерживает многие фичи, присущие IDA, такие как декомпиляция двоичного кода в C-подобный псевдокод или построение графов. Кроме этого имеет и уникальные для дизассемблера функции, такие как сравнение двух файлов, поддержка плагинов на Ruby. Лично для меня особой ценностью является Data Type Manager, который показывает структуры и интерфейсы, использованные в исследуемой программе, и не просто как факт их наличия, а с описанием их полей, параметров вызова, смещениями в структуре и размером каждого поля. Скачать дистрибутив нужной разрядности можно с офсайта.

Скриншот программы Interactive Delphi Reconstructor
Скриншот программы Interactive Delphi Reconstructor

IDR (Interactive Delphi Reconstructor) - бесплатный декомпилятор исполняемых файлов и динамических библиотек. В отличие от IDA Pro, этот декомпилятор создан специально для разбора файлов, написанных на языке Delphi. Сейчас проект прекратил развитие, если какие изменения и вносятся, то исключительно косметические. Исходники для доработки открыты. Лично я пользуюсь стабильным комплектом Interactive Delphi Reconstructor 2.6.0.1.

Скриншот программы VB Decompiler Pro
Скриншот программы VB Decompiler Pro

Еще один специализированный декомпилятор - VB Decompiler Pro. Он работает с программами (EXE, DLL, OCX), написанными на Visual Basic. В случае, если приложение собрано в p-code, декомпилятор может разобрать его практически до исходного кода. Но даже если приложение скомпилировано в native code, в этом случае VB Decompiler анализирует и восстанавливает довольно много инструкций, чтобы насколько это возможно приблизить ассемблерный код к исходному. Это сильно упростит задачу анализа алгоритмов исследуемой программы. Честные граждане могут воспользоваться бесплатной Lite-версией с офсайта, для любителей полных версий софта есть релиз VB Decompiler Pro 10.0. Антивирусы могут ругаться на активатор, но тут вы уже сами решайте что делать.

Конечно, это далеко не полный список инструментов для дизассемблирования и декомпиляции, который есть в свободном доступе. Например, та же набирающая популярность Ghidra от АНБ может составить конкуренцию IDA Pro с Hex-Rays. Но я в этой статье перечислил лишь те программы, которыми пользуюсь сам и которые упоминаются в статьях на этом сайте.

Поделиться ссылкой ВКонтакте
Просмотров: 62909 | Комментариев: 50

Внимание! Статья опубликована больше года назад, информация могла устареть!

Комментарии

Отзывы посетителей сайта о статье
Гость (09.09.2024 в 19:10):
ManHunter, доброго времени. Пароль к установщику из вашего архива  IDA.Pro.Advanced.7.2.181105.zip подскажите.

А, нашел, спасибо за архивчик.
Григорий (23.07.2024 в 07:57):
Спасибо за IDA! Дано не мог найти рабочую версию без вирусов.
Alex (03.02.2024 в 11:05):
Помогите с маленькой китайской программой -150кбайт, мне нужен ее ассемблер, чтобы потом пересобрать.
Petya (29.01.2024 в 18:43):
Не хватает упоминания о закрытии dnSpy и появлении dnSpyEx.
лада (02.09.2023 в 17:40):
я не знаю ещё не установила но заманчиво
ManHunter (29.03.2023 в 12:43):
Добавил информацию про Relyze. Понравился, неплохая игрушка.
ManHunter (14.09.2021 в 11:49):
Это не так
... (14.09.2021 в 11:31):
Ссылка https://mega.nz/ видимо уже умерла.
Compiller (19.03.2021 в 15:14):
А чем проанализировать кроме PEID файл Slitheris? вроде оно на вижуалбейсике  мсакцесс наваяно
https://www.komodolabs.com/dow...nstaller.exe
ManHunter (20.09.2020 в 23:09):
На 3-м питоне обламывается. Дотнет лучше чем dnSpy все равно ничего не разберет, с ним же надо потом как-то работать, не просто пыриться на файлы. Только декомпилировать андроид тоже смысла никакого, тот же APK Editor делает smali на раз-два, а потом редактирует и собирает обратно. Java тоже лучше разбирать чем-то специализированным, типа JEB. Так что спасибо, но все-таки фтопку.
Иван (20.09.2020 в 22:58):
Есть онлайн декомпилятор для Java, Android (.APK и .DEX), .NET (C#, F#, VB) и Python: http://Decompiler.com/
Snepper (06.05.2020 в 02:03):
Есть сервер игры GTA5 https://vk.com/page-23881761_52652044 установщик https://drive.google.com/file/...cldIUWs/view
в игре такой корявый интерфейс ,закодирован скриптами .lua в папке VMP\resources\RP\client
как то закодированы эти файлы что ни один декомпилятор,который я нашел их не берет,используются lua53.dll и KeraLua.dll,может посоветуете чем их можно отредактировать?
xor (12.04.2020 в 18:47):
ManHunter, благодарю за полезную ссылку! Пошёл изучать.
ManHunter (12.04.2020 в 18:38):
xor, по взлому вот тут https://exelab.ru/kid.php
по ассемблеру 10+ лет практики, никаких курсов тут не может быть в принципе.
xor (12.04.2020 в 17:59):
ManHunter, посоветуй пожалуйста курс молодого бойца по взлому программ. Есть такое вообще в природе? Возможно, у тебя есть статья по общим принципам взлома. Интересуют именно общие принципы, если таковые имеются. Ещё думаю, что было бы очень полезно научиться "чтению с листа", выражаясь музыкальными терминами. Т.е. читать asm-листинг и понимать, что там вообще происходит в глобальном плане, с пониманием логики работы программы. Существуют ли подобные обучалки?
ManHunter (08.04.2020 в 08:21):
И у нас определился главный претендент на приз в категории "самый тупой комментарий"! Конечно я здесь, круглосуточно, сижу и мониторю обстановку, чтобы классно початиться в камментах, они же как раз для этого.
CorVir (07.04.2020 в 22:02):
ManHunter, тьй здесь сейчас?
drdug (28.03.2020 в 06:25):
Огромное спасибо за инфо!!! Ассемблерный кодер всё что ему нужно в статье наидёт. Ну а не ассемблерному это всё равно никчему.
ManHunter (03.02.2020 в 13:20):
Обновил
Xor (05.09.2019 в 08:16):
Обновить надо бы fix папку у Ida Pro 7.2 до Extended_v2 (у китайцев которая), в ней работает плагин dsync, да и в целом стабильнее работает ida.
MaCTeP (24.07.2019 в 06:22):
Добро, как скажешь. Не будет релизов.
ManHunter (22.07.2019 в 21:51):
MaCTeP, давай все-таки не здесь. Есть гитхаб, есть форумы, здесь не надо.
MaCTeP (22.07.2019 в 21:49):
Hello !
IDR v2.6.4.43 mod...
https://drive.google.com/open?...Jnpocxg_N5mG

+ Add search in "CodeViewer"
0110 (14.07.2019 в 09:26):
dma
я не программист и не реверсер, чисто "для души" отладка и лечение нужных программ, тренировка мозгов.. Нет времени, другие интересы и сфера деятельности. Времена КК прошли, как и фантазии заработать проганием/реверсом.. Те, кто что-то может - сидят и молчат, крайне неохотно делятся даже очевидными вещами в том числе на екзелабе (всем известно, почему это единственный сайт, который не прикрыли..). Почему tracing_api не собрался в студии - хз, может, версия студии не та (у меня v15) или что-то в ней не хватает и поэтому вызовы-соглашения-типы и т.п. надо править.. Вот мой python и IDA - всё ставить на c:\. - сами копайтесь-разбирайтесь). IDA - обрезана, пересобрана, лучше от неё взять только папку плагинов.
https://drive.google.com/file/...O_myGV-/view
https://www.datafilehost.com/d/83085868
dma (13.07.2019 в 23:22):
0110

Спешу вас опять рассмешить. Полез я в SDK Иды, чтобы глянуть плагин tracing_api, про который вы писали, а потом думаю: дай ка еще раз посмотрю внимательно - что есть еще интересного в SDK? И о чудо, а там есть как раз плагины на Питоне и с использованием\применением GUI, так что моя просьба частично разрешилась. Почему частично? Потому что не изучал еще внимательно - вдруг это немного не то, что нужно. Поэтому просьбу оставляю, на всякий случай, в силе.

Мне интересно - почему вы не смогли собрать плагин tracing_api? Он вроде не очень сложный. Неужели в Иде от версии 6.3 к версии 6.8 произошли какие-то кардинальные изменения? В том смысле, что может он расчитан на сборку с SDK версии 6.3. А вы его чем собирали, студией? Я позже попробую с ним поэксперементировать - потом отпишусь если что. А на exelab'е не пробовали спрашивать? Может тамошние спецы, что-нибудь бы посоветовали по поводу ваших заморочек с плагинами?
dma (11.07.2019 в 15:47):
0110

> начего не понял из вашего поста.

Да не проблема. Я вас сейчас научу, как понимать такого рода посты. :)
До словосочетания "а если серьезно" - идет обычно юмористическое вступление. На него дипломаты и воспитаные люди, обычно отвечают неправдой или даже иногда откровенным враньем типа: очень понравился ваш юмор, полчаса валялся под столом, жена помогла вылезти, сам бы не справился - так бы и смеялся пока бы кто-нибудь не помог подняться. :)


А если серьезно, то спасибо вам за очередную информацию о хороших плагинах, а то все подряд-то их тестировать - всей жизни не хватит. У вас на примете нет случайно какого-нибудь простенького плагина к Иде на питоне, но так чтобы там были какие-нибудь пару кнопок или ручек для управления? Ну типа такого, как бы, образца с GUI. И желательно с комментариями в коде, что вот эта часть отвечает за отображение кнопок, эта часть - это функция обработки... Может вы даже сами такое в состоянии изобразить.


P.S. А все остальное, мы с вами чуть позже, если вы не против, потихоньку в этой ветке обсудим. (Программирование плагинов к 6.8 версии Иды и т.п...)
0110 (10.07.2019 в 09:27):
dma
начего не понял из вашего поста.
1. ничего не надо изобретать (тем более под хексрейс - мне и asm нравится) - скомпильте готовое (этот и/или другие полезные плагины), т.к. у меня не получается, в открытом доступе их нет - не гуглятся. Не собрался даже "tracing_api" из официального СДК, т.к. руки кривые и нет знаний С++ для сколь-нибудь серьёзной правки исходников.. Или напишите статью как же "завести" некоторые питоновские плагины, VMAttack, например:) - если уровень позволяет. Имхо, это именно то, чего не хватает. На счёт технологий - они уже сейчас поражают, например (пытался установинть, но питон "брыкается") плагин "BinAuthor" позволяет по exe'шнику определить автора, если имеются другие его программы - детектируется "стиль кода"!
2. ники меняю регулярно, раз в полгода-год. Клерка/Малфоя знаю с самого начала, когда Мышъ ещё только собирался в америку, чтобы радовать своих негритянок стеклянными дилдаками..
dma (09.07.2019 в 07:04):
0110,

Скажите пожалуйста, вот уж не думал, что блог ManHunter'а посещает сам бог Иды.
То-то мне ваш ник сразу показался подозрительно знакомым.
Поскольку, полный ноль — это тайный и самый знаковый ник Инди,
а ноль периодически переходящий в единицу (по пятибальной системе) - ваш. :)

> Вы бы новые плагины скомпилили для всех хоть бы под какую версию (но лучше 6.8:)

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

Давайте договоримся так: вы пишете какой уровень сложности вы хотите от плагина,
а я вам оформляю это в самом лучшем виде. В том смысле, что если это будет на уровне "Хекса",
то я обойдусь без помошников, а если сложнее, то, возможно, понадобится помощь ManHunter'а.
С ManHunter'ом-то, я думаю, мы часа за полтора управимся. :)


P.S. А если серьезно, то огромное вам спасибо за напоминание о плагине Deobfuscating Decompiler Plugin
от самого Rolf Rolles'а, за который Ильфак не пожалел 2000$, в качестве премии. Самое интересное буквально зимой
просматривал сайт Ильфака и отметил его для себя и, как это часто бывает - благополучно забыл про него. Ну а теперь,
коль уж даже вы его упомянули - надо его как следует изучить.
0110 (08.07.2019 в 21:48):
dma
к чему эти скины? Кто-то о них не знает или сам не нашёл? Вы бы новые плагины скомпилили для всех хоть бы под какую версию (но лучше 6.8:). Например,Deobfuscating Decompiler Plugin выглядит интересно:
https://www.hex-rays.com/conte.../index.shtml
Ида активно развивается в сторону перевода функционала на pyhton, а к нему уже кучу дополнительных плагинов надо и PyQt с неочевидной установкой, конфликтом версий и т.п. - вот с этим нужна помощь!
dma (08.07.2019 в 21:12):
ЦитатаMaCTeP, а чего ж  на гитхаб то не комитить?

Ну, причин - море:
Во-первых, язык, а не какие-то там английские закорючки. :)
Во-вторых, еды - море.
Ну, и в-третьих, море Средиземное рядом.
В Тунисе имеется в виду. :)

Темные темы для IDA: https://github.com/zyantific/IDASkins
Rustamer (08.07.2019 в 13:59):
Кажись тут появилась площадка для пиара сей сборки IDR.
MaCTeP, а чего ж  на гитхаб то не комитить? Или форк сделать?
MaCTeP (07.07.2019 в 12:16):
Со вкусным обедом Всех !
Достал последний IDR мод от Black Star (v 2.6.4.35), делюсь
https://drive.google.com/open?...K03m_XCpCg-D
- Add Entropy
- Bugs fixed
Руслан (03.07.2019 в 17:51):
TEKTON, "В начале статьи ж написано: "...но теперь настало время самых мощных инструментов...".
Это значит, что это оптимальный выбор на данный момент."

Честно говоря это чисто сугубо личное мнение каждого ЧТО для каждого будет тем или иным мощным инструментом)))
ТС всего лишь субъективно описал свои предпочтения, ведь не зря он сделал P.S., что "Но я в этой статье перечислил лишь те программы, которыми пользуюсь сам и которые упоминаются в статьях на этом сайте."
TEKTON (02.07.2019 в 23:36):
Спасибо за статью.
А те кто начинают впаривать какие то свои предпочтения и т.д. - гуляйте!
В начале статьи ж написано: "...но теперь настало время самых мощных инструментов...".
Это значит, что это оптимальный выбор на данный момент.
Так что вам ещё не хватает?
0110 (02.07.2019 в 10:44):
Имхо, для Иды важнее плагины, знание СДК (чтобы писать свои) и комьюнити, чем версия. Лучше более низкая версия, но с плагинами, чем мифическая "голая"  7.0_х86. Если, конечно, не суперспец, что можешь атаптировать плагины из исходников и скомпилить сам)
xussr (02.07.2019 в 06:46):
Спасибо за глобализацию информации ))) Да здраствует ассемблер пропачим весь этот мир программ )))
dma (01.07.2019 в 21:18):
Andrew, прочитайте последнее предложение статьи.

А за статью вам спасибо и спасибо так же людям за полезные ссылки в комментариях к статье.
Andrew (01.07.2019 в 15:42):
Manhunter, приветствую! Еще есть кроссплатформенный и опенсорсный Radare2.
Руслан (01.07.2019 в 13:33):
ManHunter, Тон? Ничего предосудительного не было сказано, а что ты там себе надумал...уж только в твоей голове. На счёт большого кол-ва ПОпо тематике - это Да, тут уж спорить смысла нет)
ManHunter (01.07.2019 в 08:19):
pawel97, работает. Зарегистрированным корпоративным клиентам предоставлялся промежуточный дистрибутив версии 7.0 x86 "для облегчения перехода на x64". У меня он действительно есть, но по понятным причинам я его выложить не могу. Не хочу подставлять одну скромную софтовую фирму, а также хорошего человека, который в ней работает.
Пруф: https://i110.fastpic.ru/big/20...edde921a.png

Добавил 6.8 от китайцев.
pawel97 (01.07.2019 в 02:11):
IDA 7.0 НЕ работает с 32-битными системами. Я уж было подумал, что у Вас уникальный дистр, которого нигде больше нет...
Vladimir (30.06.2019 в 20:22):
Сейчас, как это ни печально, софт клепается на электроне/node.js, а проблема взлома зачастую заключается в том, чтобы разобраться в свалке из гигабайтов мусорных библиотек.

Куда ушли времена, когда софт на дискету влазил. Эх...
ManHunter (30.06.2019 в 16:48):
Руслан, во-первых, тон смени, чо-то дерзкий слишком. А во-вторых, загляни в гугл сам:
ILSpy - входит в состав dnSpy. Как самостоятельный продукт слишком слаб и нефункционален.
ImpREC - программа для восстановления импорта. Ни к дизассемблерам, ни к декомпилерам вообще никакого отношения не имеет, совершенно другой класс программ.
Scylla - прежде чем писать эти буковки, уточняй, что имеешь в виду. Scylla Imports Reconstruction - тоже для восстановления импорта. Scylla Wrapper - надстройка над библиотекой от Scylla Imports Reconstruction. ScyllaHide - плаг для отладчиков, чтобы прятать их от обнаружения. Поддерживает IDA, но это единственное, что чуть-чуть подходит под тему, и то ооочень отдаленно.

ЦитатаА ничего, что они из той же категории ПО?

"из той же" - это для взлома/реверса? Так я тут могу 10 страниц названий нашлепать, и все это будет "из той же категории ПО", но все будет не по теме статьи.
Руслан (30.06.2019 в 16:27):
ManHunter, А ничего, что они из той же категории ПО? Или просто тебе они не знакомы? Так погугли...
MaCTeP (30.06.2019 в 14:19):
Пользуюсь модом IDR от Black Star 32 битная версия, вроде работает ;)
В компекте: hex редактор, хэшер, удаление цифровой подписи и ... косметика однако!  Да и интеграция с другим софтом присутствует.
https://drive.google.com/open?...gD2SOmGGVum8
0110 (30.06.2019 в 13:54):
раз на картинке IDA 6.8, поделюсь pin (v3.7) для неё:
https://www25.zippyshare.com/v...K6/file.html
Кроме idadbg.dll и idadbg64.dll, необходимых для работы pin-трейса Иды, в архиве плагин  lighthouse и его батники 32.bat/64.bat для получения трассы (её кстати можно получить и через DynamoRIO. Что лучше pin или DynamoRIO я не знаю):
https://github.com/gaasedelen/lighthouse
а также трейсер api для PE-bear (тоже дизассемблер) и его батник run_me.bat
https://github.com/hasherezade/tiny_tracer
xussr (30.06.2019 в 13:39):
Замечательно подробно и главное ничего лишнего!!!! Спасибо
ManHunter (30.06.2019 в 12:45):
Руслан, для чего тут эти наборы букв? Как они относятся к теме статьи?
Руслан (30.06.2019 в 12:37):
Scylla
ImpREC
ILSpy
Super_DJ (30.06.2019 в 12:25):
Спасибо за труды.

Добавить комментарий

Заполните форму для добавления комментария
Имя*:
Текст комментария (не более 2000 символов)*:

*Все поля обязательны для заполнения.
Комментарии, содержащие рекламу, ненормативную лексику, оскорбления и т.п., а также флуд и сообщения не по теме, будут удаляться. Нарушителям может быть заблокирован доступ к сайту.
Наверх
Powered by PCL's Speckled Band Engine 0.2 RC3
© ManHunter / PCL, 2008-2024
При использовании материалов ссылка на сайт обязательна
Время генерации: 0.07 сек. / MySQL: 2 (0.0047 сек.) / Память: 4.5 Mb
Наверх