Декомпилятор — decompiler
Содержание:
- Количество ошибок при сборке результата декомпиляции
- использованная литература
- Authors
- Изготовление копии программы
- Инструктор. Прототип инструмента создания быстрых пользовательских инструкций
- Законность
- decompiler
- Как декомпилировать EXE-файл
- Introduction
- Licenses + Acknowledgments
- Build in Docker
- В-третьих, первая демоверсия:
- Delphi Decompiler
- Automated TeamCity Builds
- Exec — Выполнение кода, консоль запросов и не только! Промо
- Design
- Основные возможности
Количество ошибок при сборке результата декомпиляции
Суть сравнения в том, что все декомпиляторы были запущены на одном проекте, а результаты декомпиляции собраны. Это позволило получить общее представление о том, какие ошибки может допускать каждый из декомпиляторов и насколько вообще адекватен получающийся при декомпиляции код.
В этой секции jadx не рассматривается, так как он бросает 39 исключений при декомпиляции и, следовательно, в принципе не декомпилирует большое количество кода.
Для начала заметим, что есть три класса ошибок: синтаксические (их не выявлено ни одной, хотя еще несколько версий назад в CFR их было несколько); семантические ошибки, связанные с типами (неправильно выведенные параметры у дженериков, ненайденные методы, некорректные приведения типов), и все остальные семантические ошибки.
Причины, по которым ошибки, связанные с выведением типов, выделены в отдельную категорию:
- декомпиляторы теоретически не способны полностью корректно восстановить типы;
- эти ошибки встречаются чаще, чем все остальные вместе взятые;
- они относительно мало влияют на читаемость кода.
К тому же, количество ошибок, связанных с выводом типов, примерно одинаково (хотя CFR все-таки проигрывает соперникам).
Из всего этого можно сделать вывод, что нам гораздо интереснее не связанные с типами ошибки.
Синтаксические | Все семантические | Связанные с типами | Остальные | |
---|---|---|---|---|
Fernflower | 101 | 65 | 36 | |
CFR | 82 | 80 | 2 | |
Procyon | 79 | 61 | 16 |
В коде, сгенерированном с помощью Fernflower, таких ошибок больше всего, причем 34 из 36 — это ошибки вида . Две ошибки у CFR тоже связаны с переопределением переменных. В случае Procyon’а большинство (10 из 16) ошибок происходят из-за того, что переменная типа используется в качестве индекса массива. Это происходит из-за некорректной обработки тернарных операторов (подробнее этот случай рассмотрен в ).
Отдельно стоит заметить, что CFR — единственный из трех декомпиляторов, улучшивший свои показатели за последние 4 месяца. Раньше у него было 10 ошибок, не связанных с типами и 72 — про типы. Из этого можно предположить, что большое количество «типовых» ошибок у CFR связано с тем, что остальных ошибок у него меньше и, следовательно, больше пространства для неправильного вывода типов.
использованная литература
- Мечниковский, Иероним; Хендрен, Лори (2002). «Декомпиляция байт-кода Java: проблемы, ловушки и подводные камни». В Хорспул, Р. Найджел (ред.). Конструирование компилятора: 11-я Международная конференция, сборник материалов / CC 2002. Springer-Verlag. С. 111–127. ISBN 3-540-43369-4.
- Майкрофт, Алан (1999). «Типовая декомпиляция». В Swierstra, S. Doaitse (ред.). Языки и системы программирования: 8-й Европейский симпозиум по языкам и системам программирования. Springer-Verlag. С. 208–223. ISBN 3-540-65699-5.
- )
- Роуленд, Дайан (2005). Закон об информационных технологиях (3-е изд.). Кавендиш. ISBN 1-85941-756-6.
- Чарнота, Бриджит; Харт, Роберт Дж. (1991). Правовая защита компьютерных программ в Европе: руководство к директиве ЕС. Лондон: Баттервортс Толли. ISBN 0-40600542-7.
Authors
The decompiler was originally written by Jindra Petřík also known as JPEXS.
The application was made in Czech republic.
Developers
- JPEXS — leader, development of the decompiler, website main admin, github account admin, organization
- honfika — development of the decompiler
- Paolo Cancedda — former developer
- …other pushers on GitHub or Google Code
Translators
- Jaume Badiella Aguilera — catalan translation
- Capasha — swedish translation
- 王晨旭 (Chenxu Wang) — chinese translation
- focus — russian translation
- honfika — hungarian translation
- kalip — italian translation
- Krock — german translation
- Laurent LOUVET — french translation
- MaGiC — portugese translation
- martinkoza — polish translation
- Osman ÖZ — turkish translation
- pepka — ukrainian and dutch translation
- poxyran — spanish translation
- realmaster42 — portugese-brasil translation
- Rtsjx — chinese translation
Изготовление копии программы
Значительное число государств предусмотрели в законодательстве положения о праве пользователя изготавливать копию компьютерной программы для архивных или резервных целей. Способов закрепления данных целей может быть несколько.
Реже дается содержательное описание цели использования копии программы. Этот подход реализован в п. 1 ст. 1280 ГК РФ, определившей резервную цель как замену «правомерно приобретенного экземпляра в случаях, когда такой экземпляр утерян, уничтожен или стал непригоден для использования» . В законе Афганистана изготовление единственной копии разрешено «для архивных целей и документирования или для замены правомерно приобретенной компьютерной программы в случаях, когда такая компьютерная программа уничтожена, утеряна или стала непригодна для использования» .
Чаще всего в законе лишь указывается вид копии, например архивная копия (archive copy) или резервная копия (backup copy), без деталей ее дальнейшего использования. Например, в законе Швейцарии указано, что «лицо, правомерно использующее программное обеспечение, вправе изготовить одну резервную копию; это право не может быть ограничено договором» . Закон Германии гласит, что создание резервной копии лицом, правомерно использующим компьютерную программу, «не может быть запрещено договором, если это необходимо для обеспечения использования компьютерной программы в будущем» .
Что касается количества таких копий, то, как правило, законодатель ограничивается тем, что применяет слово «копия» в единственном числе, как это сделано в российском законодательстве. Соответственно, из грамматического толкования закона очевидно, что изготовление нескольких копий уже будет нарушением. Однако некоторые государства прямо указывают, что изготовление копий возможно лишь в одном экземпляре. Причина кроется скорее не в лингвистических особенностях языка, на котором написан закон, т.к. данные страны относятся к различным языковым группам, а в стремлении внести правовую определенность. Примеры такого подхода можно найти как в приведенных выше выдержках из законов Швейцарии, Афганистана, так и в законодательстве Туниса и Сербии , установивших возможность без разрешения автора и без выплаты дополнительного вознаграждения изготовить и поместить на материальный носитель «резервную копию программы в единственном экземпляре».
Очевидно, что при изготовлении резервной копии намерение пользователя заключается в том, чтобы обезопасить себя от непредвиденных случаев утраты программы в будущем. Такая копия программы может храниться до тех пор, пока пользователь не утратил право на владение оригинальным экземпляром программы. От этих случаев следует отличать создание краткосрочных записей программы, которые носят временный или случайный характер и могут быть вызваны особенностями технологического процесса. Например, разд. 17 Кодекса США содержит положение о том, что создание копии программы не является нарушением, если «такая копия создана в силу активации технического средства, на котором уже установлена программа; для целей обслуживания или ремонта самого технического средства». При этом такая копия программы «не используется никаким другим образом и уничтожается сразу после завершения технического обслуживания или ремонта технического средства».
Таким образом, общим подходом для законодательства различных стран является закрепление следующих условий:
- изготовление копии может осуществляться только с целью ее дальнейшего использования законным владельцем оригинального экземпляра или от его имени и по поручению;
- копия программы может быть изготовлена для архивных целей или в качестве резервной копии;
- положение о праве на изготовление копии не распространяется на те случаи, когда владение оригинальным экземпляром программы являлось неправомерным. Если владение программы перестало быть правомерным, то копия программы должна быть уничтожена.
Инструктор. Прототип инструмента создания быстрых пользовательских инструкций
Прототип дружелюбного и эффективного инструмента для написания пользовательских экспресс-инструкций.
Задействована штатная утилита Windows, о существовании которой многие не знают и которая умеет делать огромную работу по логированию действий и снятию скриншотов на всех ПК с Windows (начиная с версии Win7).
«Инструктор» не требует никакой установки и дополнительных библиотек!
Это означает, что инструмент будет работать и на домашнем ПК и на «чужом ноутбуке» и на терминальном win-сервере у заказчика, где ваши права сильно ограничены.
Вы просто подключаете легкую файловую базу 1С и получаете инструмент по снятию скриншотов с интересной функциональностью…
1 стартмани
Законность
Большинство компьютерных программ защищены законами об авторском праве . Хотя точный объем того, что покрывается авторским правом, отличается от региона к региону, закон об авторском праве обычно предоставляет автору (программисту (программистам) или работодателю) совокупность исключительных прав на программу. Эти права включают право делать копии, в том числе копии, сделанные в ОЗУ компьютера (если создание такой копии не является необходимым для использования программы). Поскольку процесс декомпиляции включает создание нескольких таких копий, как правило, это запрещено без разрешения правообладателя. Однако, поскольку декомпиляция часто является необходимым шагом в достижении функциональной совместимости программного обеспечения , законы об авторском праве как в Соединенных Штатах, так и в Европе разрешают декомпиляцию в ограниченной степени.
В Соединенных Штатах защита авторских прав на основе добросовестного использования успешно применяется в случаях декомпиляции. Например, в деле Sega v. Accolade суд постановил, что Accolade может на законных основаниях участвовать в декомпиляции, чтобы обойти механизм блокировки программного обеспечения, используемый игровыми консолями Sega. Кроме того, Закон об авторском праве в цифровую эпоху (ПУБЛИЧНЫЙ ЗАКОН 105–304) имеет соответствующие исключения как для тестирования безопасности, так и для оценки в §1201 (i), а также для обратного проектирования в §1201 (f).
В Европе Директива по программному обеспечению 1991 г. прямо предусматривает право на декомпиляцию для достижения функциональной совместимости. В результате жарких дебатов между, с одной стороны, сторонниками протекционизма, а с другой — учеными, а также независимыми разработчиками программного обеспечения, статья 6 разрешает декомпиляцию только при соблюдении ряда условий:
Во-первых, физическое или юридическое лицо должно иметь лицензию на использование декомпилируемой программы.
Во-вторых, декомпиляция должна быть необходима для обеспечения взаимодействия с целевой программой или другими программами. Поэтому информация о совместимости не должна быть легко доступна, например, в руководствах или документации API
Это важное ограничение. Необходимость должна быть доказана декомпилятором
Целью этого важного ограничения является прежде всего стимул для разработчиков документировать и раскрывать информацию о совместимости своих продуктов.
В-третьих, процесс декомпиляции должен, по возможности, ограничиваться частями целевой программы, имеющими отношение к взаимодействию. Поскольку одной из целей декомпиляции является понимание структуры программы, это третье ограничение может быть трудновыполнимым. Опять же, бремя доказательства лежит на декомпиляторе.
Кроме того, статья 6 предписывает, что информация, полученная путем декомпиляции, не может использоваться для других целей и не может быть передана другим лицам.
В целом, право на декомпиляцию, предусмотренное статьей 6, кодифицирует то, что считается обычной практикой в индустрии программного обеспечения. Известно, что некоторые европейские иски возникли из-за права на декомпиляцию. Это можно интерпретировать как означающее одно из трех:
- ) право на декомпиляцию используется нечасто, поэтому право на декомпиляцию могло быть ненужным,
- ) право на декомпиляцию функционирует хорошо и обеспечивает достаточную правовую определенность, чтобы не вызывать юридических споров или
- ) незаконная декомпиляция в основном остается незамеченной.
В отчете 2000 года о реализации Директивы по программному обеспечению европейскими государствами-членами Европейская комиссия, похоже, поддержала вторую интерпретацию.
decompiler
Главная / Инструменты / decompiler
Пакеты, которые пытаются преобразовать скомпилированные программы в исходный код.
Всего: 28
Имя | Версия | Описание | Категория | Веб-сайт |
---|---|---|---|---|
avaloniailspy | 202.3cc092b | .NET декомпилятор (порт ILSpy). | decompiler | |
beebug | 25.cddb375 | Это инструмент, который можно использовать для проверки возможности эксплуатации сбоя программы. | decompiler disassembler reversing | |
cafebabe | 0.1.2 | Java bytecode editor & decompiler. | decompiler reversing | |
cfr | 151 | Ещё один Java декомпилятор. | decompiler | |
dnspy | 6.1.8 | Отладчик .NET и редактор сборки. | windows decompiler binary reversing | |
dotpeek | 2021.1.3 | Бесплатный декомпилятор .NET и обозреватель сборок. | windows decompiler binary reversing | |
fernflower | 485.e19aab6 | Аналитический декомпилятор для Java. | decompiler | |
ffdec | 11.0.0 | Открытый декомпилятор и редактор Flash SWF. | decompiler binary misc | |
flasm | 1.62 | Дизассемблер для байт-кода SWF. | reversing decompiler | |
gadgetinspector | 6.ac7832d | A byte code analyzer for finding deserialization gadget chains in Java applications. | decompiler binary | |
hopper | 4.8.2 | Инструмент обратного проектирования, который позволяет дизассемблировать, декомпилировать и отлаживать ваши приложения. | reversing disassembler decompiler binary | |
iaito | 5.3.1 | Qt and C++ GUI for radare2 reverse engineering framework | reversing decompiler disassembler debugger | |
jadx | 1.2.0 | Инструменты командной строки и с графическим интерфейсом для создания исходного кода Java из файлов Android Dex и APK. | decompiler reversing | |
jd-cli | 1.2.0 | Command line Java Decompiler. | decompiler reversing | |
jd-gui | 1.6.6 | Автономная графическая утилита, которая отображает исходные коды Java файлов .class. | decompiler reversing | |
jpexs-decompiler | 14.4.0 | JPEXS бесплатный декомпилятор Flash. | decompiler | |
justdecompile | 22018 | Движок декомпиляции JustDecompile. | windows decompiler binary reversing | |
luyten | 0.5.4 | Графический интерфейс с открытым исходным кодом декомпилятора Java для Procyon. | decompiler misc | |
pcode2code | 6.65ae983 | Декомпилятор p-кода VBA. | decompiler | |
procyon | 0.6 | Набор на Java инструментов метапрограммирования, сфокусированных на генерации кода и анализе. | decompiler code-audit | |
python-uncompyle6 | 3.7.4 | Декомпилятор между различными версиями Python. | decompiler | |
r2cutter | 1:1.12.0 | Qt and C++ GUI for radare2 reverse engineering framework | reversing decompiler disassembler debugger | |
r2ghidra | 5.4.1 | Deep ghidra decompiler integration for radare2 and r2cutter | reversing decompiler disassembler debugger | |
radare2-cutter | 1:1.12.0 | Графический интерфейс на Qt и C++ для radare2 — платформы обратной инженерии. | decompiler reversing disassembler debugger | |
recaf | 2.21.0.2206.846fee98 | Современный редактор байткоода Java. | decompiler reversing | |
recstudio | 4.1 | Кроссплатформенный интерактивный декомпилятор. | decompiler reversing | |
retdec | 1979.5acc1bf6 | Перенаправляемый декомпилятор машинного кода, базируется на LLVM. | decompiler reversing | |
snowman | 0.1.3 | Нативный (родной) декомпилятор C/C++. | windows decompiler |
Как декомпилировать EXE-файл
К сожалению, Windows не предусматривает в своем инструментарии встроенных инструментов, позволяющих выполнить декомпиляцию, поэтому придется пользоваться только сторонним ПО. Такое ПО может быть полезно как пользователям, которые просто желают получше изучить исходный код той или иной программы, так и разработчикам.
Вариант 1: VB Decompiler
Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.
- В верхней части интерфейса кликните по пункту «Файл» и выберите из контекстного меню вариант «Открыть программу». Вместо этого можно воспользоваться сочетанием клавиш Ctrl+O.
- В «Проводнике» отыщите исполняемый файл той программы, декомпиляцию которой вы собираетесь провести. Выделите его и нажмите на кнопку «Открыть», чтобы выполнить загрузку файла в рабочую среду.
- Путь до нужного EXE-файла отобразится в строке «Файл». Нажмите на кнопку «Старт», чтобы запустить процедуру декомпиляции.
- Программа не оповещает о завершении процедуры декомпиляции. О завершении таковой будет свидетельствовать только надпись «Декомпилировано» в нижней левой части окна.
- Для сохранения декомпилированного файла нажмите по кнопке «Файл» в верхнем меню и выберите из выпадающего списка вариант «Сохранить декомпилированный проект». Можете просто воспользоваться сочетанием клавиш Ctrl+S.
Вариант 2: EMS Source Rescuer
Данный декомпилятор корректно работает с файлами, скомпилированными с помощью Delphi и C++ Builder. Работа с другими компиляторами возможна, но официально не поддерживается, поэтому есть риски. Программа распространяется полностью бесплатно.
- Запустите EMS Source Rescuer. Его интерфейс представлен в качестве блоков с шагами. На первом шаге вам требуется указать путь до проекта, который будет декомпилирован. Это можно сделать, нажав на кнопку папки в строке «Executable File».
- Выберите нужный EXE-файл в окошке «Проводника».
- В поле «Project name» пропишите имя декомпилируемого проекта и нажмите «Next».
- На следующем шаге потребуется выбрать язык программирования, используемый в выбранном проекте. Это делается в блоке «Output style». Поставив маркер на нужном месте нажмите «Next».
- Вы перейдете сразу на 3-й шаг. Здесь будет показан исходный код проекта. Ниже выберите папку, в которую будут сохранены исходные файлы, извлеченные из EXE-файла, и нажмите «Save».
Вариант 3: ReFox
ReFox отлично зарекомендовал себя в декомпиляции проектов, созданных через Visual FoxPro и FoxBASE+. Сама программа носит условно-бесплатный характер использования. Есть демонстрационная версия, использование которой бесплатно, но только определенный период времени.
Инструкция по использованию данной программы выглядит так:
- В левую часть интерфейса программы уже встроен обозреватель файлов. Воспользуйтесь им, чтобы найти и открыть нужный EXE-файл. В правой части отображается техническая информация о выбранном элементе.
- Кликните правой кнопкой мыши по выбранному файлу. В контекстном меню выберите пункт «Decompile».
- Появится окошко, в котором будет указана директория декомпилируемого файла. Если там все верно, то нажмите «Ок» для продолжения операции.
- По завершении процесса вы получите соответствующее сообщение. Нажмите там «Ок». Результат можно посмотреть в той папке, которую вы указали во 2 шаге.
Вариант 4: DeDe
Эта программа для декомпиляции не так функциональна и поддерживает только одни язык – Delphi.
- Около самого верхнего поля нажмите на кнопку в виде раскрытой папки. Она отвечает за добавление папки.
- Выберите в «Проводнике» нужный EXE-файл и нажмите «Открыть».
- Чтобы запустить процесс декомпиляции, нажмите на кнопку «Процесс», которая расположена около строки указания проекта.
- При успешном завершении вы получите соответствующее сообщение. Нажмите «Ок» или закройте его.
- Теперь вам осталось сохранить результаты декомпилирования на компьютере. Переключитесь на вкладку «Project».
- Рекомендуется отметить галочками все пункты в блоке «Сохранить Делфи Проект». В строке «Папка проекта» укажите директорию, куда будет выполнено сохранение. Нажмите на кнопку «Сделать файлы», чтобы завершить сохранение.
Представленные декомпиляторы способы выполнить обратное преобразование большинства EXE-файлов, написанных на разных языках программирования. Как видите, в самом процессе, вне зависимости от выбранной программы, нет ничего сложного.
Introduction
machine code decompiler
To download the Decompiler, go to the project page:https://sourceforge.net/projects/decompiler
Since compilation is a non-reversible process (information such as comments and variable data types is irretrievably lost), decompilation can never completely recover the
source code of a machine code executable. However, with some oracular (read «human») assistance, it can go a long way
towards this goal. An oracle can provide function parameter types, the locations of otherwise unreachable code, and
user-specified comments.
The decompiler is designed to be processor- and platform-agnostic. The intent is that you should be able to use
it to decompile executables for any processor architecture and not be tied to a particular instruction set. Although currently only
a x86 front end is implemented, there is nothing preventing you from implementing a 68K, Sparc, or VAX front end if you
need one.
The decompiler can be run as a command-line tool, in which case it can be fed either with a simple executable file, or a
decompiler project file, which not only specifies the executable file to decompile but also any oracular information that assists its work. The decompiler also has a graphical front end, which lets an operator specify oracular information
while examining the decompiled executable.
The outputs of the decompiler are a C source code file containing all the disassembled
code and a header file in which type-reconstructed data types can be found.
Licenses + Acknowledgments
Application
FFDec Application is licensed with GNU GPL v3, see the license.txt.
It uses modified code of these libraries:
And links also these libraries:
- Java Native Access — JNA (Registry association, Process memory reading) — LGPL
- javactivex (Flash Player ActiveX embedding) — LGPLv3
- flashdebugger library (Debugging ActionScript) — LGPLv3
- FFDec Library (LGPLv3) — see below
Library
FFDec Library is licensed with GNU LGPL v3, see license.txt for details.
It uses modified code of these libraries:
- UAB «DKD» NellyMoser ASAO codec (Decoding Nelly Moser sound format) — LGPL
And links also these libraries:
Build in Docker
Docker support is maintained by community. If something does not work for you or if you have suggestions for improvements, open an issue or PR.
Build Image
Building in Docker does not require installation of the required libraries locally. This is a good option for trying out RetDec without setting up the whole build toolchain.
To build the RetDec Docker image, run
This builds the image from the master branch of this repository.
To build the image using the local copy of the repository, use the development Dockerfile, :
Run Container
If your is not 1000, make sure that the directory containing your input binary files is accessible for RetDec:
Now, you can run the decompiler inside a container:
Note: Do not modify the part is. You only need to change . Output files will then be generated to .
В-третьих, первая демоверсия:
1. Функция: изменение класса инструмента печати для реализации выходного журнала печати. 2. Воздействие. Журнал полностью открыт. 3. Рекомендация. Чувствительные журналы следует удалять как можно скорее после использования. После изменения класса инструмента журналы будут полностью открыты. 4. Специальное воспроизведение 4.1. Используйте демо
Вот простой класс инструмента записи журнала, который, вероятно, будет отличаться от обычного использования, но большинство журналов имеют логику переключения. Используйте этот переключатель для управления печатью всех журналов. 4.2. Используйте DexToJar для получения пакета jar (обратитесь к методу получения jar в инструменте), а затем проанализируйте
Можно сказать, что китайцы играют немалую роль в поиске файлов, нам нужно только найти метод в классе a 4.3. Используйте ApkTool для декомпиляции apk (см. метод в инструменте), а затем измените
Log.d может легко найти и изменить местоположение. if-eqz v0,: cond_0 # Значение этого предложения Если v0 == 0 выполнить ветвь cond_0, выполнить ветвь cond_0, метод завершен, поэтому измените значение v0
«#» означает, что возвращаемое значение комментария присваивается v0. Закомментируйте и переназначьте v0 4.4, переупаковка (справочный инструмент) 4.5. Подпись (инструмент подписи находится в активах, ключ также готов, ключ в проекте, найдите его самостоятельно 4.6, установка и печать
Если журнал такой, поздравляю, у вас получилось.
Delphi Decompiler
Текущая версия: 1.7 (сборка 929) бета версияДата последнего обновления: 24 Апреля 2014Поддерживаемые форматы файлов: EXE, DLL, BPL, DCU
История изменений
Версия 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
Automated TeamCity Builds
Our TeamCity servers are continuously generating up-to-date RetDec packages from the latest commit in the branch. These are mostly meant to be used by RetDec developers, contributors, and other people experimenting with the product (e.g. testing if an issue present in the official release still exists in the current ).
You can use these as you wish, but keep in mind that there are no guarantees they will work on your system (especially the Linux version), and that regressions are a possibility. To get a stable RetDec version, either download the latest official pre-built package or build the latest RetDec version tag.
Exec — Выполнение кода, консоль запросов и не только! Промо
Незаменимый инструмент администратора БД и программиста:
Выполняйте произвольный код из режима 1С Предприятие; сохраняйте/загружайте часто используемые скрипты; выполняйте запросы с замером производительности запроса в целом и каждой из временных таблиц в частности, а также с просмотром содержимого временных таблиц; произвольным образом изменяйте любые объекты БД, редактируя даже не вынесенные на формы реквизиты и записывая изменения в режиме «ОбменДанными.Загрузка = Истина»; легко узнавайте ИД объектов БД; выполняйте прямые запросы к SQL с замером производительности и не только!
5 стартмани
Design
- The loading phase loads the executable into memory
and determines what kind of executable is being decompiled. The
executable format usually defines the processor format and the
expected operating system environment. For older formats, such
as plain MS-DOS .EXE files, the processor (x86 real mode) and
operating system environent (MS-DOS) are implicit. Once the
format is determined, the binary is loaded into memory
(uncompressing it if necessary) and pointer or segment
relocations are carried out. These relocations are also helpful
in later stages of the decompiler, as each relocated pointer value
can be given a preliminary type pointer-to(<unknown>) and
each relocated segment selector the type segment-selector. -
The scanning phase follows the loading phase. The executable
will usually have one or more entry points, addresses pointing to
executable code. The code at the the entry points is disassembled and traced,
looking in particular for branch, call,
and return statements. Successively, individual procedures
are discovered, and call graph is built up, whose edges represent
calls between procedures. - The rewriting phase rewrites all machine-specific instructions into
low-level machine-independent instructions. Idiomatic instruction sequences
are rewritten to expressions. From this point on, the decompilation process is processor independent. -
The analysis phase first does a interprocedural reaching definitions analysis.
This is done to determine, for each procedure proc of the program, which
processor registers
are preserved and which processor registers are modified after
a call to proc. A subsequent interprocedural liveness analysis, combined
with the results of the reaching definitions analysis, determins which processor
registers are used as parameters and return value registers for each procedure. Note
that this analysis avoids depending on a specific processor/platform ABI or calling
convention. Once the two interprocedural analyses are complete, the procedures can
be rewritten with their explicit arguments. Subsequent analyses are then performed
on a procedure-by-procedure basis. Procedures are converted into SSA Form,
condition code flags are eliminated and expressions are simplified. Finally the
procedures are converted
out of SSA Form. -
The interprocedural type analysis phase attempts to recover the
data types used in the program by analyzing the way in which values are used by
the program code, incorporating clues obtained from the relocation data
as well as any «oracular»
information provided by the user. Memory access expressions
are converted into their C equivalents: pointer dereferences (*foo), member access
expressions (foo->bar), and array references (foo). -
Finally, a structure analysis rewrites the control structures from
unstructured goto-sphaghetti code to C-language if, while- / do-loops,
and switch-statements.
Основные возможности
Проект написан на C# и .Net framework и оформлен в виде сборок. Это позволяет без особых проблем обращаться ко всем свойствам и методам объектов из кода 1С через Elisy .Net Bridge.
Распознанные файлы записываются в дерево каталогов по видам объектов:
Распознанные файлы выгружаются в XML-структуру. Это делает их совместимыми с многими просмотрщиками, позволяет контролировать логическую целостность формата файлов, а также обрабатывать их программно сторонними средствами:
Распознанные свойства перемещаются в соответствующие разделы (атрибуты или тэги) XML-структуры:
Нераспознанные текстовые файлы во внутреннем формате, совместимом с 1С, переформатируются в удобочитаемый вид для будущего анализа:
Была предпринята попытка увеличить быстродействие за счет многопоточности