Декомпилировать программу что это

Декомпилировать программу что это

Полная декомпиляция Android приложений, декомпиляция приложений в исходный Java код

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

Все приложения являются бесплатными, мультиплатформенными и открытыми (кроме Java Decompiler, у него закрыт исходный код).
Их можно скачать с официального сайта.

Инструкцию буду проводить для ОС Windows.

  1. Качаем dex2jar-0.0.9.8.zip (номер версии может изменяться) и извлекаем все файлы в желаемую папку, например D:Decompile .
  2. Качаем Java Decompiler, я использовал JD-GUI и извлекаем файлы для удобства в ту же папку, куда и dex2jar.
  3. Качаем apktool и apktool-install-windows-r04-brut1.tar.bz2 и извлекаем файлы уже в системную папку. По умолчанию C:Windows. (Не забываем скачать второй архив)
  4. Берем нужный apk файл и кладем в папку с dex2jar и Java Decompiler. В примере приведу декомпиляцию приложения Calculator.zip ( 66.18 КБ )
    . (надо извлечь из архива).
  5. Открываем Командную строку (Обработчик команд Windows) в вышеупомянутой папке (В папке по пустому месте при зажатой кнопке Shift нажимаем правую кнопку мыши и выбираем Обработчик команд Windows).
  6. Вводим команду dex2jar Calculator.apk и если все прошло хорошо, в той же папке появится файл Calculator.apk.dex2jar.jar
  7. Запускаем jd-gui и открываем полученный на предыдущем шаге файл. (На Windows 7 открывать с правами администратора и с совместимостью Windows XP SP3)
  8. Выбираем пункт меню File-Save All Sources и сохраняем.
  9. Извлекаем полученный zip архив.
  10. Помещаем полученную папку в папку src (надо предварительно создать).(Что бы получилась примерно такая структура D:DecompileCalculatorsrccomandroid)
  11. Опять же в командной строке вводим команду apktool d Calculator.apk Calculator, где Calculator.apk-имя пакета, Calculator-папка для декомпиляции
  12. Если все хорошо, тогда в указанной папке будут исходники в двух форматах (java и smali), ресурсы и файлы AndroidManifest.xml, apktool.yml
  13. Все готово, исходники получены. Правда после декомпиляции в коде есть, можно сказать, ошибки, я заметил пока только что вместо true и false стоят 1 и 0 соответственно.

Декомпиляция Андройд приложений (подробно)

P.S. Если хочется импортировать полученный код в IDE Eclipse (File-Import), тогда положите содержимое этого архива(Eclipse.zip ( 1.44 КБ )
) в папку с проектом, предварительно изменив на третьей строке PROJECT NAME PROJECT NAME на желаемое название, в моем примере «Calculator» в файле .project
P.P.S. Если apk файл был пропущен при компиляции через обфускатор (proguard), тогда полученный код будет плохо читаем.

КАК ДЕКОМПИЛИРОВАТЬ EXE DLL C# | КАК УЗНАТЬ ИСХОДНЫЙ КОД ПРОГРАММЫ | ДЕКОМПИЛЯЦИЯ | C# ПЛЮШКИ


Источник: http://boomik.ru/polnaya-dekompilyaciya-android-prilozhenij

Источник: 4pda.to

Создание исходного кода из сборок .NET во время отладки

Область применения:yesVisual StudionoVisual Studio для Mac noVisual Studio Code

При отладке приложения .NET вам может потребоваться просмотреть исходный код, которого у вас нет. Например, происходит прерывание в исключении, или стек вызовов используется для перехода к исходному расположению.

  • Создание исходного кода (декомпиляция) возможно только для приложений .NET и построено на проекте ILSpy с открытым кодом.
  • Декомпиляция доступна только в Visual Studio 2019 версии 16.5 и более поздних версий.
  • Атрибут SuppressIldasmAttribute, примененный к сборке или модулю, не позволит Visual Studio выполнить декомпиляцию.

Создание исходного кода

Если при выполнении отладки исходный код недоступен, в Visual Studio отображается документ Исходный код не найден, а если отсутствуют символы для сборки, отображается документ Символы не загружены. Оба документа имеют параметр Декомпилировать исходный код, который создает код C# для текущего расположения. Созданный код C# можно использовать так же, как любой другой исходный код. Вы можете просматривать этот код, проверять переменные, устанавливать точки останова и т. д.

Символы не загружены

На следующем рисунке показано сообщение Символы не загружены.

Screenshot of no symbol loaded document

Исходный код не найден

На следующем рисунке показано сообщение Исходный код не найден.

Screenshot of source not found document

Создание и внедрение исходного кода для сборки

Можно создать не только исходный код для определенного расположения, но и весь исходный код для конкретной сборки .NET. Для этого перейдите в окно Модули и в контекстном меню сборки .NET выберите команду Декомпилировать исходный код. Visual Studio создает файл символов для сборки, а затем внедряет исходный код в файл символов. На последующем этапе можно извлечь внедренный исходный код.

Читайте также:
Что за программа saver not

Screenshot of assembly context menu in modules window with decompile source command.

Извлечение и просмотр внедренного исходного кода

Исходные файлы, внедренные в файл символов, можно извлечь с помощью команды Извлечь исходный код в контекстном меню окна Модули.

Screenshot of assembly context menu in modules window with extract sources command.

Извлеченные исходные файлы добавляются в решение как прочие файлы. В Visual Studio функция «Прочие файлы» по умолчанию отключена. Чтобы включить эту функцию, установите флажок Инструменты>Параметры>Среда>Документы>Показывать прочие файлы в Обозревателе решений. Без включения этой функции вы не сможете открыть извлеченный исходный код.

Screenshot of tools option page with miscellaneous files option enabled.

Извлеченные исходные файлы отображаются в разделе прочих файлов в Обозревателе решений.

Screenshot of solution explorer with miscellaneous files.

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

Известные ограничения

Требуется режим прерывания выполнения

Break all icon

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

Ограничения декомпиляции

Создание исходного кода из промежуточного языка (IL), используемого в сборках .NET, имеет некоторые внутренние ограничения. Поэтому созданный исходный код не выглядит в точности как оригинальный исходный код. Большая часть различий сосредоточена в тех местах, где информация в оригинальном исходном коде не нужна во время выполнения. Например, во время выполнения не нужна такая информация, как пробелы, комментарии и имена локальных переменных. Рекомендуется использовать созданный исходный код, чтобы понять, как выполняется программа, а не в качестве замены оригинального исходного кода.

Отладка оптимизированных сборок или сборок выпуска

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

  • точки останова могут не всегда быть привязаны к соответствующим исходным расположениям;
  • при пошаговом выполнении шаг может не всегда переходить в правильное место;
  • имена локальных переменных могут быть неточными;
  • некоторые переменные могут быть недоступны для оценки.

Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.

Надежность декомпиляции

Относительно небольшой процент попыток декомпиляции может привести к сбою. Это происходит из-за ошибки пустой ссылки точки последовательности в ILSpy. Мы устранили этот сбой путем перехвата таких проблем и корректного завершения попытки декомпиляции.

Дополнительные сведения можно найти в описании проблемы GitHub Интеграция ICSharpCode.Decompiler с отладчиком VS.

Ограничения при работе с асинхронным кодом

Результаты декомпиляции модулей с шаблонами кода async/await могут быть неполными или неудачными в целом. Шаблоны кода async/await и машины состояния yield state-machine в ILSpy реализованы только частично.

Дополнительные сведения можно найти в описании проблемы GitHub Состояние генератора PDB.

Только мой код

Параметры режима Только мой код (JMC) позволяют Visual Studio выполнять шаг с обходом системы, платформы, библиотеки и других вызовов непользовательского кода. Во время сеанса отладки в окне Модули отображаются модули кода, которые отладчик воспринимает как «Мой код» (т. е. пользовательский код).

При декомпиляции оптимизированных модулей или модулей выпуска создается непользовательский код. Если отладчик прерывается в декомпилированном непользовательском коде, появляется окно Отсутствует источник. Чтобы отключить режим «Только мой код», перейдите в раздел Инструменты>Параметры (или Отладка>Параметры) >Отладка>Общие и снимите флажок Включить только мой код.

Извлеченный исходный код

Исходный код, извлеченный из сборки, имеет следующие ограничения.

  • Имена и расположение созданных файлов нельзя настроить.
  • Файлы являются временными и будут удалены Visual Studio.
  • Файлы помещаются в одну папку без использования какой-либо иерархии, которая была в оригинальных исходных файлах.
  • Имя каждого файла содержит хэш контрольной суммы файла.

Создается только код C#

При декомпиляции создаются только файлы исходного кода на C#. Возможность создавать файлы на каком-либо другом языке отсутствует.

Источник: learn.microsoft.com

Что такое Декомпиляция?

Компиляция программы — это превращение команд, написанных на языке программирования в понятный компьютеру вид. Когда программа компилируется, на выходе мы получаем исполняемый файл, который можем запустить.

Приставка «де» означает отсутствие, отмену, устранение чего-либо. То есть, это обратный процесс.

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

автор вопроса выбрал этот ответ лучшим
в избранное ссылка отблагодарить
Mbest4 [12.1K]

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

Читайте также:
Что за программа милли

MaiAsim [40.4K]

Декомпилируя исполняемые файлы (и другие, вроде библиотек) мы получаем эквивалентный исходный код на языке высокого уровня (а это не нолики и единички). А современные декомпиляторы могут показывать код чуть ли не в первозданном виде. Прогресс идёт вперёд. — 5 лет назад

комментировать
Mbest­ 4 [12.1K]
5 лет назад

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

Опять же, очень разная картина будет от используемого компилятора. Ради примера, попробуйте закодить тот же баян, тот же «привет мир», или «хелло уорлд» на нескольких различных компиляторах. Декомпилируйте, и попробуйте отыскать команды вывода на экран. А если усложнить задачу, и выводить на экран не слова, но буквы, согласно некоей логике? Да задолбаетесь решать эту проблему.

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

Декомпилируйте себе на здоровье, в надежде получить исходный код. Желаю удачи! Я верю в вас, и в ваш уникальный декомпилятор, который даже авторские комментарии воссоздаёт!

P.S. Прошу прощения, но в этом своём ответе я обращался к предыдущему автору, MaiAs­im, его (её) ответ выбран лучшим видимо по недоразумению, или просто не из чего было выбирать.

Источник: www.bolshoyvopros.ru

Декомпилировать программу что это

APK_how_to_decompile

Очень редко у пользователя устройств под управлением Android возникает необходимость изменить программу под себя. Добавить что-то, или наоборот убрать. Например, надоедливый баннер с рекламой. Или, к сожалению, проверку лицензии. Ведь программы надо покупать, а не ломать!

Но сейчас поговорим не об этом, а о том, какими средствами и когда следует прибегать к декомпиляции приложений на Android.

Кому это нужно

Как правило, начинающим реверсерам или исследователям. Этим людям интересно ковырять приложения сторонних разработчиков для разных целей. От банального интереса как реализовано, до поиска уязвимостей в приложении. Также у направления есть и более низкие интересы, причем эти интересы наиболее распространенные: взлом приложения для использования без покупки, либо с целью читерства.

Теория

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

Итак, суть декомпиляции заключается в следующем: Вы можете либо просматривать декомпилированный код виртуальной машины Dalvik, а также все файлы ресурсов приложения (манифест, разметка и т.д.). А можете преобразовать код Dalvik в код Java. В первом случае программе передается путь к apk-файлу. Во втором из apk-файла (который по сути обычный архив) нужно вытащить файл.

Этот файл содержит весь исполняемый код для машины Dalvik (да, весь код объединен в один файл). Специальная программа преобразует код Dalvik в код Java, который потом можно открыть любым java-декомпилятором. Казалось бы, второй способ предпочтительнее, но есть одна хитрость.

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

Решение

Прежде всего поговорим о полной декомпиляции приложения. То есть, вместе с распаковкой всех вложенных в apk xml-файлов. Для этого потребуется утилита apktool. Все что нужно — это запустить утилиту с правильными параметрами: java -jar apktool.jar d app.apk. Флаг d означает, что приложение будет декомпилировано. Последний параметр – путь к apk-файлу.

Для удобства я создал bat-скрипт и положил его рядом с программой.

java -jar apktool.jar d app.apk pause

Теперь достаточно просто скопировать интересующее Вас приложение в папку с программой под именем app.apk и запустить скрипт. Консоль покажет вывод работы программы, а после Вы увидите папку, в которой все разложено по своим местам: ресурсы, манифест, код. Также, как и проект во время разработки.

За исключением, конечно же, того, что код будет выглядеть в виде опкодов для Dalvik. Что касается второго способа, то для этого нам потребуется две другие утилиты: dex2jar и jdgui. Они обе также бесплатные и с открытым кодом. Вам необходимо открыть apk-файл с помощью архиватора (7zip, например) и извлечь в папку с dex2jar файл classes.dex.

apk_opened_in_7zip После чего запустить утилиту следующей командой. Это преобразует код машины Dalvik в код Java. Если преобразование завершилось успешно, Вы получить файл classes.jar. Этот файл открываем в jdgui.

Читайте также:
Google sketchup что это за программа

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

Источник: dfvgbh.com

Декомпиляция EXE-файлов

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

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

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

Вариант 1: VB Decompiler

Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.

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

Вариант 2: EMS Source Rescuer

Данный декомпилятор корректно работает с файлами, скомпилированными с помощью Delphi и C++ Builder. Работа с другими компиляторами возможна, но официально не поддерживается, поэтому есть риски. Программа распространяется полностью бесплатно.

  1. Запустите EMS Source Rescuer. Его интерфейс представлен в качестве блоков с шагами. На первом шаге вам требуется указать путь до проекта, который будет декомпилирован. Это можно сделать, нажав на кнопку папки в строке «Executable File».
  2. Выберите нужный EXE-файл в окошке «Проводника».
  3. В поле «Project name» пропишите имя декомпилируемого проекта и нажмите «Next».
  4. На следующем шаге потребуется выбрать язык программирования, используемый в выбранном проекте. Это делается в блоке «Output style». Поставив маркер на нужном месте нажмите «Next».
  5. Вы перейдете сразу на 3-й шаг. Здесь будет показан исходный код проекта. Ниже выберите папку, в которую будут сохранены исходные файлы, извлеченные из EXE-файла, и нажмите «Save».

Вариант 3: ReFox

ReFox отлично зарекомендовал себя в декомпиляции проектов, созданных через Visual FoxPro и FoxBASE+. Сама программа носит условно-бесплатный характер использования. Есть демонстрационная версия, использование которой бесплатно, но только определенный период времени.

Инструкция по использованию данной программы выглядит так:

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

Вариант 4: DeDe

Эта программа для декомпиляции не так функциональна и поддерживает только одни язык – Delphi.

  1. Около самого верхнего поля нажмите на кнопку в виде раскрытой папки. Она отвечает за добавление папки.
  2. Выберите в «Проводнике» нужный EXE-файл и нажмите «Открыть».
  3. Чтобы запустить процесс декомпиляции, нажмите на кнопку «Процесс», которая расположена около строки указания проекта.
  4. При успешном завершении вы получите соответствующее сообщение. Нажмите «Ок» или закройте его.
  5. Теперь вам осталось сохранить результаты декомпилирования на компьютере. Переключитесь на вкладку «Project».
  6. Рекомендуется отметить галочками все пункты в блоке «Сохранить Делфи Проект». В строке «Папка проекта» укажите директорию, куда будет выполнено сохранение. Нажмите на кнопку «Сделать файлы», чтобы завершить сохранение.

Представленные декомпиляторы способы выполнить обратное преобразование большинства EXE-файлов, написанных на разных языках программирования. Как видите, в самом процессе, вне зависимости от выбранной программы, нет ничего сложного.

Источник: public-pc.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru