как разобрать программу exe на исходный код
Как извлечь код программы из ехе файла?
Можно ли как-нибудь из ехе-файла получить дизассемблированый код
Можно ли как нибудь из ехе файла получить дизассемблированый код на FASM\MASM?
Как узнать исходный код файла-ЕХЕ для Visual Basic 6.0?
Здравствуйте! Прошу помощи. Как узнать P-Code? Научите, пожалуйста, пользоваться компиляторами и.
Как средствами Delphi реализовать извлечение ехе файла при запуске ехе?
Здорова, народ. Как средствами Delphi реализовать извлечение ехе файла при запуске ехе? Заранее.
смешно, хоть и флуд.
можете поискать, но скорее всего, ничего, удовлетворяющего вашим требованиям вы не найдете.
можете поискать, но скорее всего, ничего, удовлетворяющего вашим требованиям вы не найдете.
и хватит хамить.
я хоть в этом разделе уже и не модератор, но репу загадить могу по самый бан.
и хватит хамить.
я хоть в этом разделе уже и не модератор, но репу загадить могу по самый бан.
ну вот сейчас вменяемое объяснение. это так сложно сразу нормально писать.
То что можно только повторить примерный листинг пользуясь диззасемблером/декомпилятором это и говорилось автору сразу, но он сам этого мало понимает в силу своих очень скудных познаний (да и интелектуальный потенциал этого индивида тоже вызывает сомнения)
>>1)автор хочет исходник для Студии; от бишь с шаблонами диалогов, ДОТНЕТОМ, и прочими финтифлюшками. это специфические реализации С++
с++ это не дотнет, дотнетовские проги просматриваются CLR просмоторщиками (который входит в состав студии)
Как отлаживать и профилировать любой EXE-файл с помощью Visual Studio
Отладка
Как и в обычном проекте, вы можете начать отладку с помощью F5, которая запустит EXE и подключит отладчик. Если вы хотите отладить запуск, вы можете запустить с помощью F11, который запустит EXE и остановится на первой строке пользовательского кода. Оба эти параметра доступны в контекстном меню для проекта EXE в окне Solution Explorer, как показано ниже:
Для отладки понадобятся символы, файлы PDB, для EXE и любых DLL, которые нужно отладить. Visual Studio будет следовать тому же процессу и попытается получить символы также, как и при отладке обычного проекта. Поскольку маловероятно, что файлы PDB были распространены вместе с EXE-файлом, возможно, вы захотите найти их в сборке или, что еще лучше, на сервере символов. Дополнительную информацию и рекомендации по использованию символов можно найти в этом блоге.
Для эффективной отладки вам также понадобится исходный код, который использовался для сборки EXE, или даже для нескольких файлов, которые вас интересуют. Вам нужно найти эти файлы и открыть их в Visual Studio. Если исходный код не совпадает с исходным кодом, который был собран, EXE Visual Studio предупредит вас, когда вы попытаетесь вставить точку останова, и точка останова не будет привязана. Это поведение может быть изменено в окне Settings peek window. В окне просмотра параметров щелкните текст ссылки Must match source, а затем установите флажок, чтобы разрешить несоответствующий источник, как показано ниже. Конечно, с несоответствующим источником вы никогда не знаете, что произойдет, так что используйте это только на свой страх и риск.
Если EXE был собран с SourceLink, то информация об источнике будет включена в PDB, и Visual Studio попытается загрузить источник автоматически. Это действительно хорошая причина использовать SourceLink с вашими проектами. Даже если у вас есть локальный набор, у вас может не быть той версии, которая использовалась для сборки двоичного файла. SourceLink — ваш надежный способ убедиться, что правильный источник связан с правильным двоичным файлом.
Если вы не можете получить исходный код, у вас еще есть несколько вариантов:
Декомпиляция EXE-файлов
Процесс декомпиляции отвечает за воссоздание исходного кода программы на языке или языках, на которых та была написана. В случае с большими программами, они имеют несколько файлов, в каждом из которых может использоваться несколько языков программирования. Чтобы они корректно взаимодействовали друг с другом и не вводили пользователя в тупик, их помещают в EXE-файл. Как раз этот процесс и называется компиляцией. Мы же рассмотрим, как разобрать EXE-файл на отдельные составляющие.
Как декомпилировать EXE-файл
К сожалению, Windows не предусматривает в своем инструментарии встроенных инструментов, позволяющих выполнить декомпиляцию, поэтому придется пользоваться только сторонним ПО. Такое ПО может быть полезно как пользователям, которые просто желают получше изучить исходный код той или иной программы, так и разработчикам.
Вариант 1: VB Decompiler
Корректно способен провести декомпиляцию EXE-файлов, написанных и скомпилированных через Visual Basic 5.0 и 6.0. Это самая популярная среда разработки программ для Windows. Сама программа полностью бесплатна и занимает на диске всего несколько мегабайт.
Вариант 2: EMS Source Rescuer
Данный декомпилятор корректно работает с файлами, скомпилированными с помощью Delphi и C++ Builder. Работа с другими компиляторами возможна, но официально не поддерживается, поэтому есть риски. Программа распространяется полностью бесплатно.
Вариант 3: ReFox
ReFox отлично зарекомендовал себя в декомпиляции проектов, созданных через Visual FoxPro и FoxBASE+. Сама программа носит условно-бесплатный характер использования. Есть демонстрационная версия, использование которой бесплатно, но только определенный период времени.
Инструкция по использованию данной программы выглядит так:
Вариант 4: DeDe
Эта программа для декомпиляции не так функциональна и поддерживает только одни язык – Delphi.
Представленные декомпиляторы способы выполнить обратное преобразование большинства EXE-файлов, написанных на разных языках программирования. Как видите, в самом процессе, вне зависимости от выбранной программы, нет ничего сложного.
Распаковка исполняемых файлов
Привет, хабровчане. В рамках курса «Reverse-Engineering. Basic» Александр Колесников (специалист по комплексной защите объектов информатизации) подготовил авторскую статью.
Также приглашаем всех желающих на открытый вебинар по теме «Эксплуатация уязвимостей в драйвере. Часть 1». Участники вебинара вместе с экспертом разберут уязвимости переполнения в драйверах и особенности разработки эксплойтов в режиме ядра.
Статья расскажет о подходах к анализу запакованных исполняемых файлов с помощью простых средств для обратной разработки. Будут рассмотрены некоторые пакеры, которые применяются для упаковки исполняемых файлов. Все примеры будут проведены в ОС Windows, однако изучаемые подходы можно легко портировать на любую ОС.
Инструментарий и настройка ОС
Для тестов будем использовать виртуальную машину под управлением ОС Windows. Инструментарий будет содержать следующие приложения:
установленный по умолчанию плагин x64dbg Scylla;
Самый быстрый и простой способ провести распаковку любого исполняемого файла — применить отладчик. Но так как мы будем также рассматривать язык программирования Python, то может понадобится проект:
uncompile6 проект, который позволяет разобрать байткод виртуальной машины Python;
pyinstallerExtractor инструмент для распаковки архива pyInstaller.
Общие методы снятия паковки
Разберемся, что же такое паковка. В большинстве случаев исполняемые файлы современных языков программирования имеют довольно большой размер при минимальном наборе функций. Чтобы оптимизировать данную величину, можно применить паковку или сжатие. Наиболее распространенный на сегодняшний день пакер — UPX. Ниже приведен пример того, как пакер проводит сжатие исполняемого файла.
На картинке может показаться, что файл стал по размеру больше, однако это не всегда так. Большинство файлов за счет такой модификации могут уменьшить свой размер до 1.5 раз от исходного объема.
Что же от этого реверс-инженеру? Почему надо знать и уметь определять, что файл упакован? Приведу наглядный пример. Ниже приведен снимок файла, который не запакован:
И файл, который был пропущен через алгоритм UPX:
Изменения коснулись в этом случае двух основных точек исполняемого файла:
Точка входа — в случае с упакованным файлом это начало алгоритма распаковки, настоящий алгоритм программы будет работать только после того, как будет распакован оригинальный файл;
Код оригинального файла: теперь не найти паттернов, которые можно сразу разбирать как команды.
Итак, чтобы снова анализировать оригинальный файл, нужно найти настоящую или оригинальную точку входа. Для этого нужно разбить алгоритм на основные этапы:
Этап подготовки исполнения файла — загрузчик ОС настраивает окружение, загружает файл в оперативную память;
Сохранение контекста — упаковщик сохраняет контекст исполнения файла (набор значений регистров общего назначения, которые были установлены загрузчиком ОС);
Распаковка оригинального файла;
Передача управления оригинальному файлу.
Пример UPX
Попробуем с помощью отладчика найти оригинальную точку входа для приложения. Запечатлим оригинальную точку входа до упаковки UPX:
Как та же точка входа выглядит после упаковки:
Запустим отладчик и попробуем найти место сохранения контекста:
Ждем первого использования ESP — в отладчике при этом значение регистра подсветится красным цветом. Затем устанавливаем точку останова на адрес и просто запускаем приложение:
В результате попадаем на оригинальную точку входа:
Вот так просто, теперь используя плагин Scylla Hide можно сохранить результирующий файл на жесткий диск и продолжить его анализ.
Подобный метод можно применять для любого упаковщика, который сохраняет контекст на стек.
Пример PyInstaller
Не всегда подобный подход работает для приложений, которые используют более сложную структуру исполняемого файла. Рассмотрим файл, который был создан с помощью PyInstaller — пакет, который позволяет преобразовать Python скрипт в исполняемый файл. При генерации исполняемого файла создается архив, который содержит виртуальную машину Python и все необходимые библиотеки. Сам исходный код приложения при этом преобразуется в байт код и его нельзя дезассемблировать.
Попробуем все же получить что-то читаемое. Создадим простое приложение на Python и упакуем с помощью PyInstaller. Исходный код приложения:
Установим пакет pyInstaller и создадим exe файл:
Итак, проведем сбор информации о том, что в итоге получилось. У нас есть архив, который должен запустить виртуальную машину, и код, который мы записали в виде скрипта. Попробуем восстановить исходник и просто его прочесть даже без запуска.
Таким образом можно снова получить исходный код.
Смотреть открытый вебинар по теме «Эксплуатация уязвимостей в драйвере. Часть 1».
Reverse Engineering (получаем исходный код )
Serzhik21
Serzhik21
Serzhik21
Программы, которые используются в Reverse Engineering
Эти программы дают нам возможность декомпилировать приложения, это очень слабо сказано. Возможности у этих программ очень большие и описывать все будет очень долго)
Данная программа и ее аналоги дают нам возможность сделать слепок запущенной программы.
Список можно продолжать еще довольно долго,но на этом мы с вами остановимся.
Пример реверсинга программы написанной на c#
С помощью гугла нашел паблик с «читами» на игру «контра сити». Под видом читов здесь распостраняют разные вирусы.
Для нас это идеальный вариант поупражняться в реверсинге. В паблике с любого поста качаем наш «чит».
Суем наше приложение в DetectItEasy/Аналог и получаем про него информацию.
И нам сразу стает ясно,что это просто SFX архив,который мы распаковываем и получаем файл,который мы также суем в DIE
отлично использовать декомпилятор DnSpy. Отправляем exe в декомпилятор(просто перетаскиваем его в DnSpy).
И получаем полный исходный код этой программы на C#. Если присмотреться к сути,то это стиллер.
Это был самый простой пример реверса программы.
Вот вы и получили самые базовые,основные знания про реверс.
Я старался излагать мысли так,чтобы всем новичкам было максимально понятно)