Каталог расширений

Популярные теги

3gp       avi       fb2       jpg       mp3       pdf      

Как декомпилировать exe файл delphi


Декомпиляция, распаковка .exe архива в Delphi

Нашел уникальное решение проблемы распаковки файлов exe, но платное. Хотя есть тестовый период.

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

Скриншоты редактор ресурсовНа самом деле, это позволяет добавить свой собственный брендинг в приложение, изменить диалоговые сообщения, настраивать панели инструментов действия, и так далее, не имея доступ к актуальной исходного кода. Resource Tuner предлагает захватывающие возможности, даже если вы не программист. Это идеально подходит для переводчиков, твикерами, и всех, кто хочет другой внешний вид для приложения.

Тюнер ресурсов о единственном инструменте вы, вероятно, доверять изменять ресурсы в PE исполняемого файла. Откройте для себя уникальные свойства этого редактора ресурсов , в том числе, как открыть проблемные исполняемые файлы и редактировать скрытые данные, которые другие редакторы просто не может видеть, широкий спектр поддерживаемых типов ресурсов, для распаковки UPX, и многое другое. Вы узнаете, стандартную программу промышленности для перевода и настройки пользовательского интерфейса.

Тюнер ресурсов с огромным количеством функций, которые делают его важным инструментом для тех, кто настройки еще программы. Удачи персонализации любое приложение на свой неповторимый вкус. С помощью мощных Resource Tuner, вам больше не нужно страдать с уродливыми икон и картин по умолчанию. Использование очень просто, просто запустите программу и выберите EXE или DLL файл, чтобы прочитать данные из.

После того, как вы попробуете это, мы думаем, вам будет трудно вернуться на другой ресурс хакерских утилит.

изящная декомпиляция Delphi — «Хакер»

Начинающие хакеры обычно испытывают большие трудности при взломе программ, написанных на Delphi и Builder, поскольку классические трюки, типа бряка на GetWindowTextA, не работают. И чтобы не пилить серпом по яйцам, требуется учитывать особенности библиотеки VCL, которая только с виду кажется неприступной, а в действительности ломается даже проще, чем чистые Си-программы! Не веришь? Убедись сам!

Для начала...

Два основных орудия хакера - это отладчик и дизассемблер, которые могут использоваться как по отдельности, так и совместно друг с другом. Первая (и самая сложная) фаза атаки — разведывательная. Прежде чем наносить основной удар по врагу, необходимо локализовать защитный механизм в мегабайтах мирного программного кода, после чего выстелить битхаком, поменяв JE на JNE, либо, разобравшись с алгоритмом процедуры регистрации, написать свой собственный генератор ключей/серийных номеров.

Ударная фаза практически не зависит от специфики ломаемого приложения и отрабатывается годами, представляя собой неромантичный кропотливый труд, а вот комплекс разведывательных мероприятий гораздо более интеллектуальное занятие, требующее хитрых мозгов и, конечно же, хвойно-новогодних опилок, которые мы будем настойчиво курить. И ожесточенно долбить. По клавиатуре! Ведь Новый год - семейный праздник, и всякий уважающий себя хакер проводит его наедине с самым близким ему существом - компьютером. Для создания атмосферы праздника нужно будет зажечь свечи (не те, что от геморроя), послать всех девушек в /dev/null, зарядить бурбулятор свежей порцией man'ов и начать маньячить. Ведь юзеры ждут
подарков, а лучшего подарка, чем новый кряк, для компьютерщика, пожалуй, и не придумаешь!

Короче, надо хачить. Поехали!

Осваиваем DeDe

DeDe – это такой декомпилятор программ, написанных на Delphi и Builder'е. Бесплатный и очень мощный. Мы будем использовать менее процента от его возможностей. Кто там говорит, что это расточительство? Нет, расточительство - это выбрасывать елку в мусор после праздника. Полная декомпиляция в наши задачи не входит. Наша цель — локализация дислокации штаб-квартиры защитного механизма, то есть определение адресов процедур, проверяющих введенный пользователем регистрационный номер. Вот для этого нам и нужен DeDe, а все остальное можно сделать и руками. То есть дизассемблером. Вообще-то, в состав DeDe входит интегрированный дизассемблер в духе WIN32DASM, однако по своему качеству он значительно
уступает даже халявной версии IDA, не говоря уже о полном боекомплекте тяжелой артиллерии в виде IDA Pro + SoftICE. Это просто ужас какой-то! Это все равно что засунуть еловую ветку Стиву Б. в задницу, даже круче! Намного круче! 🙂

Последняя известная мне версия DeDe носит порядковый номер 3.50.02 и датируется серединой 2003 года. Похоже, что DaFixer полностью утратил интерес к своему детищу, решив похоронить DeDe на свалке истории. Полные исходные тексты версии 3.10b выложены в публичный доступ, однако желающих продолжить благородное дело что-то не наблюдается, и потому DeDe обречен на медленное и мучительное вымирание. Программы, собранные новыми компиляторами от Багдада, DeDe либо вообще не переваривает, либо декомпилирует неправильно (вот потому чуть позже мы рассмотрим, как ломать Борландию своими руками без посторонней помощи).

Архив DeDe.3.10b.realy.complete.src.zip (который, в частности, можно скачать с www.wasm.ru/baixado.php?mode=tool&id=55) на самом деле не совсем полон, в нем отсутствует пара компонентов: RxLib_v2.75 плюс VCLZip. И прежде чем DeDe удастся собрать, их необходимо найти в интернете. Если же ты не собираешься заниматься доработкой DeDe, то лучше скачать с www.xakep.ru/post/18513/default.asp архив без исходных текстов, который на два метра короче.

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

Ладно, не будем впадать в депрессию. Ведь Новый год на дворе! И пока остальные рвут петарды, мы будем рвать себе задницу, декомпилируя интересные программы :). Все очень просто! Берем прогу, загружаем ее в DeDe, давим на кнопку «Процесс» и сидим себе в ожидании, пока DeDe распотрошит дамп памяти. Лучше всего это делать под VMware, а то среди защищенных программ есть всякие твари, начиненные AdWare и прочей малварью.

Честно говоря, я поубивал бы тех, кто придумал механизм идентификации типов в рантайме, благодаря которому названия классов не уничтожаются при компиляции (как в классическом Паскале и Си), а попадают непосредственно в исполняемый файл (как в Visual Basic'е). Взлом упрощается настолько, что ломать становится скучно. Никакого тебе интеллектуального поединка. Все равно что ломом добивать попавшую в капкан мышь.

Но мы же не садисты и не маньяки какие-нибудь. Оставим мышь любоваться праздничным салютом, а сами вернемся к DeDe. Самая левая (можно даже сказать: радикально левая) вкладка с именами классов не содержит для нас ничего интересного. Вкладки Units Info и Forms также отправляются в /dev/null или куда поглубже. А вот вкладка Procedures - это уже то, что нужно.

Открываем ее и смотрим. Ага, здесь перечислены юниты со всеми процедурами в них содержащимися. Причем и сами юниты, и имена классов, и названия событий (events) даны в символьном виде. То есть если в программе есть диалоговое окно регистрации, то DeDe покажет что-то типа: fRegister ? TfrmRegister ? bOKClick. Как нетрудно догадаться, bOKClick - это и есть имя процедуры, получающей управление при нажатии на кнопку ОК и занимающейся проверкой валидности введенного юзером серийного номера. Тут же в колонке RVA DeDe показывает ее относительный виртуальный адрес, по которому функцию легко найти в файле.

А можно и не искать! Двойной щелчок по имени функции открывает окно с интегрированным дизассемблером, перемещая наш хвост непосредственно на зловредный защищенный код, что особенно полезно при анализе упакованных файлов, которые бессмысленно загружать в Иду. DeDe дизассемблирует дамп памяти, и потому упаковщики идут лесом. Как вариант - можно заюзать SoftICE, установив по заданному адресу аппаратную точку останова (команда «BPM адрес X»). Необходимо только помнить, что RVA – это относительный виртуальный адрес, а SoftICE требует абсолютный. Чтобы перевести относительный виртуальный адрес в абсолютный, достаточно загрузить файл в hiew, нажать <F8> (header), посмотреть на базовый адрес
загрузки (base address) и сложить его с RVA-адресом, сообщенным DeDe.

Техника ручного взлома

Ураганный артиллерийский огонь декомпилятора DeDe накрывает практически весь Багдад, ставя моджахедов по стойке смирно, а всех несогласных отправляет на север, где они рубят пихтовый лес и гонят драп, чтобы у всех плановых жителей было по елке. В смысле ПО «Елки», программное обеспечение то есть :).

Недостатков у DeDe как минимум два. Первый: ломать автоматом - это не в кайф и вообще не по понятиям. Настоящие хакеры так не поступают, предпочитая во всем разбираться самостоятельно с помощью кедрового отвара из хрюнделя (в просторечии называемого hiew'ом) и топора. Второй: как уже говорилось, DeDe обречен на вымирание и скоро исчезнет с жестких дисков за ненадобностью, как в свое время исчезли динозавры и мамонты.

А потому во многих ситуациях ручной взлом оказывается намного предпочтительнее, а бывает так, что он становится вообще единственно возможным вариантом. Короче, кто как, а я сразу за демократию! Любовь и IDA Pro - во!

Берем, значит, Иду, переходим в начало сегмента данных (View\Open subviews\Segments или <Shift-F7>) и прокручиваем его вниз до тех пор, пока не встретим текстовые названия элементов управления с прилегающими к ним ссылками. Дизассемблерный текст должен выглядеть так, как показано ниже.

Названия методов класса формы в исполняемом файле прямым текстом:

.data:0040E88B word_40E88B dw 0Bh ; DATA XREF: .data:0040E614^o
.data:0040E88D dw 11h
.data:0040E88F dd offset _TForm1_FormCreate
.data:0040E893 db 10,'FormCreate'
.data:0040E89E dw 12h
.data:0040E8A0 dd offset _TForm1_FormDestroy
.data:0040E8A4 db 11,'FormDestroy'
.data:0040E8B0 dw 17h
.data:0040E8B2 dd offset _TForm1_Comm1ReceiveData
.data:0040E8B6 db 16,'Comm1ReceiveData'
.data:0040E8C7 dw 13h
.data:0040E8C9 dd offset _TForm1_Button1Click
.data:0040E8CD db 12,'Button1Click'
.data:0040E8DA dw 13h
.data:0040E8DC dd offset _TForm1_Button4Click
.data:0040E8E0 db 12,'Button4Click'
.data:0040E8ED dw 13h
.data:0040E8EF dd offset _TForm1_Button2Click
.data:0040E8F3 db 12,'Button2Click'
.data:0040E900 dw 12h
.data:0040E902 dd offset _TForm1_Timer1Timer
.data:0040E906 db 11,'Timer1Timer'
.data:0040E912 dw 13h
.data:0040E914 dd offset _TForm1_Button3Click
.data:0040E918 db 12,'Button3Click'
.data:0040E925 dw 13h
.data:0040E927 dd offset _TForm1_Button5Click
.data:0040E92B db 12,'Button5Click'
.data:0040E938 dw 13h
.data:0040E93A dd offset _TForm1_Button6Click
.data:0040E93E db 12,'Button6Click'
.data:0040E94B dw 13h
.data:0040E94D dd offset _TForm1_Button7Click
.data:0040E951 db 12,'Button7Click'
.data:0040E95E aTform1 db 6,'TForm1' ; DATA XREF: .data:0040E61C^o

Скажем сразу, это довольно сложный для взлома случай, поскольку программист использовал названия элементов по умолчанию, потому и получилось TForm1, Button1Click, Button2Click. Это не названия кнопок, это названия методов класса, отвечающих за обработку нажатий кнопок, а вот каким реально кнопкам они соответствуют, так сразу и не скажешь, поэтому придется хитрить.

Перемещаем курсор на название функции, автоматически назначенное Идой на основе текстовой строки (например, «_TForm1_Button3Click»), и нажимаем <Enter>, переходя на ее тело, где мы видим) мы видим, что функция расположена по адресу, ну скажем, 040286Ch. Загружаем файл в hiew, нажимаем <Enter> для перехода в шестнадцатеричный режим, давим <F5> (goto) и вводим адрес перехода (в данном случае «.040286C»). Точка в начале адреса сообщает hiew'у, что это действительно адрес, а не смещение (по умолчанию). Активируем режим редактирования по <F3> (Edit) и пишем CC – опкод точки останова, соответствующий машинной команде INT 03h. Сохраняем изменения по <F9> и выходим.

Запускаем программу, вызываем обозначенную форму и давим по очереди на все кнопки. Когда мы нажмем Button3, на экран выскочит системное сообщение о том, что у программы рвет крышу и она будет аварийно завершена в добровольно-принудительном порядке. Так и должно быть. В отсутствие отладчика команда INT 03h приводит к критической ошибке, что позволяет довольно быстро найти необходимые нам кнопки, после чего останется только хакнуть соответствующие им функции. Логично? Всенепременно!

Естественно, ручной просмотр секции данных непродуктивен и ненадежен. Так легко проглядеть нужные нам формы, особенно если программист обозвал методы классов короткими и невыразительными именами, особо не бросающимися в глаза, типа a, b, c. Как быть тогда? Очень просто! Указатель на вышеприведенную структуру передается библиотечной VCL-функции Forms::TApplication::CreateForm(System::TMetaClass *,void*) в качестве одного из аргументов. IDA распознает VCL-функции по сигнатурам, автоматически назначая им «неразмангленные» имена. Применительно к нашему случаю это будет @Forms@TApplication@CreateForm$qqrp17System@TMetaClasspv. Просто находим эту функцию и смотрим все перекрестные ссылки,
ведущие к местам ее вызова из программного кода. Ни одна форма не уйдет незамеченной!

Хорошо, а как быть, если в нашем распоряжении нету Иды, а есть только hiew? Первая мысль - идти топиться - отметается как идеологически неправильная. Топиться в Новый год - это по меньшей мере негуманно. У всех людей праздник, настроение соответствующие, и тут бац - дохлый труп с порезанными венами в ванной. Неэстетично! Таким путем мы приходим ко второй мысли: бедность - это не порок, а естественное студенческое состояние; и все, что нас не убивает, делает нас сильнее. Хорошо подумав головой, мы сумеем обойтись одним hiew'ом. Хотя почему бы на Новый год не подарить себе любимому лицензионную Иду?

Ладно, hiew так hiew. Это только с виду кажется, что hiew - беспонтовая программа. На самом деле это очень даже мощный зверь типа «гепард». Сильный и шустрый. К тому же компактный. Правда, увы, с некоторых пор далеко не бесплатный. Но найти hiew намного проще, чем Иду. Да и стоит hiew несоизмеримо дешевле, чем IDA Pro (это при его-то возможностях).

Короче, пока над нашими головами разрываются петарды и прочая реактивная китайская пиротехника, залетающая через открытую форточку, мы загружаем ломаемую программу прямо в hiew, нажимаем <Enter> для перехода в шестнадцатеричный режим, давим <F8> (Header), говорим <F7> (Import) и в списке импортируемых функций находим __imp_@Forms@TApplication@CreateForm$qqrp17System@TMetaClasspv, поставляемую динамической библиотекой vclXX.bpl, где XX – номер версии, например 60. По <Enter> переходим к таблице переходников на импортируемые функции, состоящей из множества команд jmp. Убедившись, что курсор стоит на функции __imp_@Forms@TApplication@CreateForm$qqrp17System@TMetaClasspv (что вовсе не факт,
поскольку тут у hiew'а глюк, и, чтобы его обойти, приходится выбирать соседнюю функцию, а потом поднимать курсор руками), нажимаем <F6> (Ref) для поиска перекрестных ссылок и видим код типа приведенного ниже. Соответственно, <Ctrl-F6> (NexRef) означает поиск следующей ссылки на процедуру создания формы. Вот мы и будем жать <Ctrl-F6>, пока не найдем все формы, какие только есть.

Поиск указателя на структуру формы в hiew'e:

.0040193A: 8B0DE01F4100 mov ecx,[00411FE0]
.00401940: 8B15FCE54000 mov edx,[0040E5FC]
.00401946: E8B9BF0000 call @Forms@TApplication@CreateForm$qqrp17System@TMeta
.0040194B: A134B65900 mov eax,@Forms@Application ;vcl60

Разумеется, это работает только с неупакованными программами, использующими статическую линковку, коих большинство. Если программа упакована, то, прежде чем мы доберемся до таблицы импорта, ее предстоит распаковать, а если разработчик задействовал динамическую компоновку, то один или несколько вызовов __imp_@Forms@TApplication@CreateForm$qqrp17System@TMetaClasspv останутся незамеченными (что плохо). В таких случаях выгоднее прибегнуть к отладчику, установив точку останова на __imp_@Forms@TApplication@CreateForm$qqrp17System@TMetaClasspv, но об этом мы скажем позже, а пока разберемся с аргументами.
Главным образом нас интересует аргумент, загружаемый в регистр EDX и указывающий на структуру, по смещению 18h от начала которой расположен указатель на уже знакомую тебе вложенную структуру.

Вокруг точек останова

Самые сложные случаи взлома - это упакованные программы, загружающие VCL-библиотеку на лету и не использующие никаких вразумительных имен в методах классов. Ломать такие защиты в дизассемблере - напрасно тратить время. Здесь лучше воспользоваться отладчиком, в роли которого может выступать не только тяжелая (SoftICE), но и легкая артиллерия в лице OllyDebbuger.

Загружаем программу в Olly, в списке модулей (<Alt-E>) находим VCLxx.bpl, давим на <Enter> и, просматривая список импорта (<Ctrl-N>), находим желаемое имя. Давим <F2> для установки программной точки останова или <Enter>, <Shift-F10>, Breakpoint, «Hardware, on execution» для установки аппаратной точки останова соответственно. Аппаратные точки намного надежнее, но, увы, их всего четыре, а вот количество программных точек останова ничем не ограничено.

Остается только выбрать подходящие функции для бряканья. Краткий перечень наиболее важных из них (с точки зрения хакера) представлен ниже:

  • @TControl@GetText$qqrv ; TControl::GetText(void) - аналог API-функции GetWindowTextA - считывает текст из элемента управления в буфер.
  • @Mask@TCustomMaskEdit@GetText$qqrv - еще одна функция для чтения текста в буфер (применяется довольно редко, но все-таки применяется).
  • @Controls@TControl@SetText$qqrx17System@AnsiString - установка текста (то есть копирование текста из буфера в элемент управления).
  • @System@@LStrCmp$qqrv ; System:: LStrCmp(void) - сравнение двух текстовых строк (например, расчетного серийного номера с эталонным; очень важная хакерская функция).
  • @System@@LStrCopy$qqrv ; System::LStrCopy(void) - функция копирования строк.
  • @Sysutils@StrToInt$qqrx17System@AnsiString ; Sysutils::StrToInt(System::AnsiString) - функция преобразования текстовой строки в число (достаточно часто используется защитами).

Праздничное заключение

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

Delphi Decompiler — StudioGM Software

Delphi Decompiler

Текущая версия: 1.7 (сборка 929) бета версия
Дата последнего обновления: 24 Апреля 2014
Поддерживаемые форматы файлов: EXE, DLL, BPL, DCU

Описание


Данная программа предназначена для частичного восстановления утерянного исходного кода программ сделанных с помощью компилятора Delphi.

Загрузка

Имя файла Размер Описание Ссылка
DelphiDecompiler.zip 2,24Мб Архив с программой Скачать

История изменений

Версия 1.7 сборка 929 (24.04.2014)
 * Исправлены критические ошибки в DCUDumper

Версия 1.6 сборка 911 (23.04.2014)
 * Добавлена декомпиляция DCU для Delphi XE-X5

Версия 1.5 сборка 888 (24.07.2012)
 * Исправлены критические ошибки при дампировании програм скомпилированных в Delphi 2010,XE и XE2
 * Исправлены мелкие ошибки в окне "Select Process"

Версия 1.4 сборка 808 (19.07.2012)
 * Исправлена критическая ошибка в получении списка процессов в окне "Select Process"
 + Добавлено определение программ скомпилированных в Delphi XE2

Версия 1.3 сборка 777 (18.07.2012)
 * Данная версия предназначена только для тестирования
 + Частичная поддержка Delphi XE and Delphi XE2
 + Полная поддержка декомпиляции DCU для Delphi XE и Delphi XE2
 + Полный рефакторинг интерфейса программы
 - Удалена поддержка языков, теперь только английский язык
 * Исправлено много ошибок в окне "Select Process"
 + Добавлены привилегии отладки
 * Исправлено много других ошибок

Версия 1.1 сборка 211 (26.03.2010)
 * Исправлено определение программ откомпилированных в Delphi 7 (cпасибо GPcH)
 + Добавлена возможность перетаскивать файлы на главное окно программы (drag & drop)

Версия 1.1 сборка 195 (04.03.2010)
 + Доработан DSF редактор
 * Исправлено исчезновение DSF редактора при парсинге
 + В DSF редакторе добавлена поддержка Delphi 2007, 2009, 2010 (пока работает только для парсинга .bpl)
 * Оптимизирован код для отрисовки ассемблерного кода
 * Полная реконструктизация проекта для ускорения работы по выпечке сборок и последующего тестирования

Версия 1.1 сборка 191 (08.02.2010)
 + Доработан PE редактор
 + Доработано окно "Настройки"
 + Добавлена возможность изменения шрифтов:
   - в DFM редакторе
   - в списках ListView
   - в дизассемблере
 * уменьшена задержка таймера на окно заставки

Версия 1.1 сборка 187
 + исправлен PE редактор
 + добавлена возможность дампирования проектов Delphi 2007
 + добавлена возможность дампирования проектов Delphi 2009
 + добавлена возможность дампирования проектов Delphi 2010

Версия 1.1 сборка 180
 + присвоен статус "бета"

Версия 1.1 сборка 177
 + Переписан движок декомпиляции DCU
 + Переписан движок анализа EXE
 + Новый формат doi и dsf
 + Полностью изменен интерфейс
 + Возможность полноценного сохранения проекта (полноценная загрузка проекта на стадии доработки)
 + полноценная поддержка программ написанных на Delphi 2 - 7

Коммандная строка

   nosplash не показывать заставку при запуске
   openfile:"" при запуске открыть файл

top

Все, что нужно знать, чтобы Декомпилировать Delphi

  • Главная
  • Pages
    • гуманитарные науки
      • география
      • вопросы
      • Изобразительное искусство
      • Литература
      • История и культура
      • английский
      • философия
    • Языки
      • испанский
      • Немецкий
      • мандарин
      • русский
      • итальянский
      • английский как второй язык

    Как декомпилировать EXE-файлы

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

    Способы декомпиляции EXE-файлов

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

    Способ 1: VB Decompiler

    Первым рассмотрим VB Decompiler, который позволяет декомпилировть программы, написанные на Visual Basic 5.0 и 6.0.

    Загрузить программу VB Decompiler

    1. Нажмите «Файл» и выберите пункт «Открыть программу» (Ctrl+O).
    2. Найдите и откройте программу.
    3. Декомпиляция должна сразу запуститься. Если этого не произошло, нажмите кнопку «Старт».
    4. По завершении внизу окна появится слово «Декомпилировано». В левой части расположено дерево объектов, а в центральной можно просматривать код.
    5. При необходимости, сохраните декомпилированные элементы. Для этого нажмите «Файл» и выберите подходящий вариант, например, «Сохранить декомпилированный проект», чтобы извлечь все объекты в папку на диске.

    Способ 2: ReFox

    В плане декомпиляции программ, скомпилированных через Visual FoxPro и FoxBASE+, неплохо себя зарекомендовал ReFox.

    Загрузить программу ReFox

    1. Через встроенный обозреватель файлов найдите нужный EXE-файл. Если его выделить, то справа будет отображаться краткая информация о нём.
    2. Откройте контекстное меню и выберите пункт «Decompile».
    3. Откроется окно, где нужно указать папку для сохранения декомпилированных файлов. После нажмите «ОК».
    4. По окончании появится такое сообщение:

    Можно просмотреть результат в указанной папке.

    Способ 3: DeDe

    А DeDe будет полезна для декомпиляции программ на Delphi.

    Загрузить программу DeDe

    1. Нажмите кнопку «Добавление файла».
    2. Найдите файл EXE и откройте его.
    3. Для запуска декомпиляции нажмите кнопку «Процесс».
    4. При успешном завершении процедуры появится такое сообщение:
    5. В отдельные вкладки будет выведена информация о классах, объектах, формах и процедурах.

    6. Для сохранения всех этих данных откройте вкладку «Project», проставьте галочки рядом с типами объектов, которые нужно сохранить, выберите папку и нажмите «Сделать файлы».

    Способ 4: EMS Source Rescuer

    Декомпилятор EMS Source Rescuer позволяет работать с EXE-файлами, скомпилированными при помощи Delphi и C++ Builder.

    Загрузить программу EMS Source Rescuer

    1. В блоке «Executable File» нужно указать нужную программу.
    2. В «Project name» пропишите имя проекта и нажмите «Next».
    3. Выберите необходимые объекты, укажите язык программирования и нажмите «Next».
    4. В следующем окне исходный код доступен в режиме предпросмотра. Осталось выбрать выходную папку и нажать кнопку «Save».

    Мы рассмотрели популярные декомпиляторы для файлов EXE, написанных на разных языках программирования. Если Вам известны другие рабочие варианты, напишите об этом в комментариях.

    Мы рады, что смогли помочь Вам в решении проблемы.
    Опишите, что у вас не получилось. Наши специалисты постараются ответить максимально быстро.
    Помогла ли вам эта статья?
    ДА НЕТ

    DeDe v3.99.0a Build 2005 (Delphi Decompiler) - Decompilers - Каталог файлов

    DeDe - мощный декомпилятор для приложений, написанных на Delphi от DaFixer‘а. В нем есть полезные утилиты + он может определять является ли запущенное приложение написанным на делфи и сдампить его для последующей декомпиляции.

    Features decompilation:
    - All dfm files of the target. You will be able to open and edit them with Delphi.
    - All published methods in well commented ASM code with references to strings, imported function calls, classes methods calls, components in the unit, Try-Except and Try-Finally blocks. (By default DeDe retrieves only the published methods sources, but you may also process another procedure in a executable if you know the RVA offset using the Tools|Disassemble Proc menu.)
    - A lot of additional information.
    - You can create a Delphi project folder with all dfm, pas, dpr files. Note: pas files contains the mentioned above well commented ASM code. They can not be recompiled !

    You can also:
    - View the PE Header of all PE Files and change/edit the sections flags.
    - Use the opcode-to-asm tool for translating intel opcode to assembler.
    - Use RVA-to-PhysOffset tool for fast converting physical and RVA addresses.
    - Use the DCU Dumper (view dcu2int.txt for more details) to retrieve near to pascal code of your DCU files.
    - Use BPL(DPL) Dumper to see BPL exports and create symbol files to use with DeDe disassembler.
    - Disassemble a target EXE directly from memory in case of a packed exe.

    Скачать: DeDe v3.99
    Скачать: DeDe v3.99 Rus

    Компиляция

    - Delphi не создает исполняемых файлов

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    .Ресурсы

    - Как скомпилировать файл Delphi RES из командной строки

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    .

    Как декомпилировать exe или dll на сборку

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики & am
    .].

    1. Вам действительно нужно декомпилировать только тот, который вам нужно изменить. Если вы измените API в DLL, вам может потребоваться изменить EXE.

    2. Существуют инструменты, которые позволяют работать непосредственно с MSIL и изменять внутри инструмента, но я бы предпочел вернуться к коду и перекомпилировать все это. «Лучший» - это тот, который работает в вашей ситуации с наименьшими усилиями.

    3. Я не уверен, что вы имеете в виду под «правильным» исходным кодом. Если вы имеете в виду код без ошибок, попробуйте инструмент, который я указал выше.Он будет преобразован в C #, и люди добились от него хороших результатов. Однако ни один инструмент не является эффективным на 100%, поскольку компилятор может включать оптимизацию, которую невозможно воспроизвести в исходном коде.

    4. Многие декомпиляторы (Reflector - один с этой проблемой) не создают отдельные файлы Designer.cs. Я не уверен, что DotPeek будет создавать файлы дизайнеров, но хорошего способа обойти это не получится. Файлы конструктора существуют исключительно для того, чтобы упростить отделение кода конструктора от кода пользователя, после того, как он проходит через компилятор, невозможно определить, был ли он создан дизайнером или пользователем.

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

    .

    Может ли среда IDE Delphi 2007 использовать cgrc.exe из Delphi 2010 при компиляции файлов RC?

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант
    .

    visual c # express 2010 - декомпиляция файлов .exe с помощью CodeReflect

    Переполнение стека
    1. Около
    2. Продукты
    3. Для команд
    1. Переполнение стека Общественные вопросы и ответы
    2. Переполнение стека для команд Где разработчики и технологи делятся частными знаниями с коллегами
    3. Вакансии Программирование и связанные с ним технические возможности карьерного роста
    4. Талант Нанимайте технических специалистов и создавайте свой бренд работодателя
    .

    Смотрите также