Как декомпилировать dll c

Обновлено: 04.07.2024

Вы когда-нибудь занимались отладкой файла . Теперь вы можете использовать Visual Studio для декомпиляции управляемого кода, даже если у вас нет символов, что позволяет просматривать код, проверять переменные и устанавливать точки останова. …

Законно ли перепроектировать APK?

В США в разделе 103(f) Закона об авторском праве в цифровую эпоху (DMCA) (17 USC § 1201(f) – Реверс-инжиниринг) конкретно указано, что реконструировать и обходить защиту для достижения функциональной совместимости между компьютерные программы (например, передача информации между приложениями).

Можете ли вы декомпилировать сторонний код?

Я вижу, что этот вопрос по-прежнему привлекает внимание к моему блогу, поэтому я добавлю ответ: да, отладка сторонних сборок теперь возможна с помощью декомпилятора JetBrains dotPeek (совершенно бесплатного), используя его в качестве сервера символов. .

Какие 5 лучших инструментов для обратного проектирования доступны?

Вот лучшие из них, на которые стоит обратить внимание.

  • ИДА Про. Инсайдеры отрасли считают IDA Pro от Hex-Rays лучшим инструментом обратного проектирования не только из-за его цены, но и из-за его набора функций.
  • Гидра.
  • Двоичный ниндзя.
  • Хоппер.
  • Радаре2.
  • АпкИнструмент.
  • Обнаружение имеет ключевое значение.

Как редактировать файл класса .jar?

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

  1. Используйте jar -xvf для извлечения файлов в каталог.
  2. Внесите изменения и замените классы.
  3. Используйте jar -cvf для создания нового файла jar.

Можем ли мы изменить класс в Java?

Чтобы изменить файл класса в корпоративном компоненте, вы изменяете исходный код, перекомпилируете его и повторно развертываете приложение. Например, если вы хотите изменить обменный курс в бизнес-методе DollarToYen класса ConverterBean, выполните следующие действия.

Как изменить путь поиска в eclipse?

Редактировать поиск в источнике Выберите команду «Редактировать поиск в источнике…» [ Изменить поиск в источнике ], чтобы открыть диалоговое окно «Путь к источнику», позволяющее вносить изменения в путь поиска в источнике для выбранного целевого объекта отладки. ВАЖНО Перезапустите Eclipse после этого последнего шага.

Как изменить исходный путь редактирования в eclipse?

Прикрепление исходных файлов при отладке с помощью Eclipse

  1. Нажмите «Редактировать путь поиска источника… из источника, не найденного», чтобы открыть диалоговое окно «Редактировать путь поиска источника». Источник не найден.
  2. Нажмите кнопку «Добавить» в диалоговом окне «Редактировать путь поиска источника». Диалоговое окно «Редактировать исходный путь поиска».
  3. Выберите проект Java в качестве источника. Диалоговое окно «Добавить источник».
  4. Выберите проекты.
  5. Подтвердите настройку.

Оглавление

Как остановить декомпиляцию?

  1. Как избежать декомпиляции приложения Android, чтобы предотвратить обратный инжиниринг.
  2. 1) Разместите важный код на сервере.
  3. 2) Методы обнаружения отладчика.
  4. 3) Пишите важные части кода на C/C++.
  5. 4) Нативно записывать файлы в формат .
  6. 5) Запутывайте значения при их хранении на мобильных устройствах.
  7. 6) Добавьте многофакторную защиту.

Как остановить декомпиляцию DLL?

Выберите только «Anti IL Dasm» и «Anti Tamper», этого достаточно, чтобы сделать реверс-инжиниринг для декомпиляторов достаточно сложным. После того, как вы нажмете «Готово», перейдите на вкладку «Защита» и нажмите кнопку «Защитить». Вы можете найти защищенную DLL или EXE в выбранном выходном каталоге.

Декомпилирует ли Visual Studio?

Теперь вы можете использовать Visual Studio для декомпиляции управляемого кода, даже если у вас нет символов, что позволяет просматривать код, проверять переменные и устанавливать точки останова.

Можно ли реконструировать приложения Android?

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

Можете ли вы декомпилировать сторонний код, чтобы удалить ошибку?

Я вижу, что этот вопрос по-прежнему привлекает внимание к моему блогу, поэтому я добавлю ответ: да, отладка сторонних сборок теперь возможна с помощью декомпилятора JetBrains dotPeek (совершенно бесплатного), используя его в качестве сервера символов. .

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

Когда использовать декомпиляцию в качестве инструмента отладки?

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

Можно ли декомпилировать управляемый код в Visual Studio?

Теперь вы можете использовать Visual Studio для декомпиляции управляемого кода, даже если у вас нет символов, что позволяет просматривать код, проверять переменные и устанавливать точки останова.

Оглавление

NET Reflector экономит время и упрощает разработку, позволяя просматривать и отлаживать исходный код всех файлов . NET-код, с которым вы работаете. Следите за ошибками в собственном коде, сторонних компонентах и ​​любых скомпилированных файлах . Вы можете просматривать сторонний код в Visual Studio и отлаживать его точно так же, как свой собственный.

Запрещена ли декомпиляция кода?

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

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

Для чего используется ILSpy?

ILSpy — это программа с открытым исходным кодом. NET-браузер сборки и декомпилятор. Мы демонстрируем его использование на простом рекламном файле.

Можно ли декомпилировать DLL?

Такая библиотека DLL компилируется в машинный язык и может быть напрямую декомпилирована только в язык ассемблера.

Можем ли мы получить исходный код из DLL?

Нажмите Ctrl + O и выберите файл DLL. Dll будет отображаться на левой панели. Щелкните правой кнопкой мыши Dll и выберите Экспорт исходного кода.

Как посмотреть код DLL?

Перейдите в меню «Файл», нажмите «Открыть» и выберите dll, которую вы хотите декомпилировать. выходной каталог и выберите соответствующие настройки по своему желанию. Нажмите «Создать файлы».

Законно ли обратное проектирование?

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

Могу ли я декомпилировать сторонний код?

Я вижу, что этот вопрос по-прежнему привлекает внимание к моему блогу, поэтому я добавлю ответ: да, отладка сторонних сборок теперь возможна с помощью декомпилятора JetBrains dotPeek (совершенно бесплатного), используя его в качестве сервера символов. .

Конечно, он не восстанавливает исходный код точно так, как он был написан, хотя с именами символов (также хранящимися в PDB) он часто близок к этому. Посмотрите исходный код ILSpy. Это альтернатива Reflector с открытым исходным кодом. В частности, он использует библиотеки Mono.Cecil и Mono.Cecil.Pdb. Я подозреваю, что последнее может помочь вам с тем, что вы хотите сделать.

Как декомпилировать DLL в DotPeek?

В последней версии DotPeek вы можете щелкнуть правой кнопкой мыши сборку в древовидном представлении проводника сборок и выбрать параметр «Экспорт в проект». Это сохранит его как доступное решение Visual Studio, после чего вы сможете вносить изменения, выполнять отладку во время выполнения и перекомпилировать для замены исходной библиотеки DLL.

Можно ли декомпилировать EXE?

Да, декомпилировать можно. exe с помощью таких инструментов, как The dcc Decompiler. Это даст хорошие результаты, если исходная программа была написана на C. Если она была написана на другом языке, возможно, вам придется попробовать другой инструмент, подходящий для этого языка.

Какой лучший декомпилятор?

Лучшие декомпиляторы Java

  • JDProject. JDProject — один из наиболее часто используемых декомпиляторов java в автономном режиме. Он разработан для декомпиляции java 5 или более поздних версий (на данный момент до java8).
  • Процион.
  • Cavaj Java-декомпилятор.
  • Декомпилятор DJ Java.
  • ЖБВД.
  • АндроШеф.
  • Декомпилятор CFR.
  • Папоротник.

Можем ли мы декомпилировать сторонний код в Infosys?

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

Можете ли вы изменить DLL?

Существуют разные способы редактирования DLL-файлов. Вы можете загрузить бесплатное программное обеспечение для редактирования DLL или получить редактор ресурсов DLL. Здесь я настоятельно рекомендую вам редактировать файлы DLL с помощью программы под названием «Resource Hacker», которая является бесплатным и заслуживающим доверия инструментом редактирования DLL. Вы можете легко загрузить эту программу из Интернета.

Можем ли мы конвертировать .EXE в исходный код?

Да, легко. Любой может декомпилировать файл .NET и получить исходный код, который можно снова скомпилировать в ту же сборку.

Можете ли вы декомпилировать C++?

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

Законно ли декомпилировать код?

5 ответов. Декомпиляция абсолютно ЗАКОННА, независимо от того, что говорят зазывалы. В лучшем случае вы можете быть привлечены к ответственности за несанкционированную деятельность, связанную с программным обеспечением, если только вы не распространяете его.

Просто создайте собственное небольшое приложение, а затем скомпилируйте его в файл .exe. Затем декомпилируйте этот .exe-файл тем же декомпилятором, который вы использовали. Теперь вы видите там тот же странный код и знаете, что вы его туда не помещали. Спасибо. Спасибо за ответ на Stack Overflow! Обязательно ответьте на вопрос.

Какие файлы можно декомпилировать в dotPeek?

Декомпилятор поддерживает несколько форматов, включая библиотеки (.dll), исполняемые файлы (.exe) и файлы метаданных Windows (.winmd).

Возможна ли декомпиляция кода?

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

  • ILSpy (от SharpDevelop)
  • JustDecompile (от Telerik)
  • DILE – редактор Dotnet IL (от zsozsop)
  • dotPeek (от JetBrains)

Как декодировать DLL?

Почему обратный инжиниринг является незаконным?

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

Есть ли декомпиляторы для C?

Существует множество декомпиляторов, и нецелесообразно рассматривать их все здесь. Однако в качестве общего замечания: преобразование исходного кода C в исполняемый машинный код происходит с потерями. Например: код редко компилируется так, как он написан. Большинство компиляторов в наши дни радикально изменят ваш код, чтобы оптимизировать его.

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

Есть ли декомпилятор C++ с именами переменных?

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

Вы когда-нибудь занимались отладкой файла . Теперь вы можете использовать Visual Studio для декомпиляции управляемого кода, даже если у вас нет символов, что позволяет просматривать код, проверять переменные и устанавливать точки останова. …

Как остановить декомпиляцию?

  1. Как избежать декомпиляции приложения Android, чтобы предотвратить обратный инжиниринг.
  2. 1) Разместите важный код на сервере.
  3. 2) Методы обнаружения отладчика.
  4. 3) Пишите важные части кода на C/C++.
  5. 4) Нативно записывать файлы в формат .
  6. 5) Запутывайте значения при их хранении на мобильных устройствах.
  7. 6) Добавьте многофакторную защиту.

Как посмотреть код dll?

Как запустить ILSpy?

Сначала загрузите двоичные файлы с веб-сайта ILSpy:

  1. При этом будет загружен ZIP-файл.
  2. Извлеките файл:
  3. Запустите ISpy.exe:
  4. Нажмите, чтобы открыть файл:
  5. Здесь я выбрал исполняемый файл, скомпилированный из ранее написанного кода. Как видите, теперь мы можем видеть декомпилированный код в ILSpy:
  6. СПАСИБО ЗА ПРОЧТЕНИЕ.

Как работают дизассемблер и декомпилятор?

Теперь вы знаете, что дизассемблер переводит вас из бинарной формы в ассемблерную. Декомпилятор переводит вас из ассемблерной формы в код C (или какой-либо другой язык более высокого уровня). Декомпиляция, по существу, обратна компиляции.

Как декомпилировать исходный код в символ в Visual Studio?

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

Можно ли декомпилировать скомпилированный код?

На практике это означает, что декомпилятор обычно работает нормально для определенного компилятора с определенными (по умолчанию) параметрами компиляции, но не так хорошо с другими. Как сказал Срджан, в общем случае декомпиляция программы C (или C++) невозможна. В процессе компиляции теряется слишком много информации.

Можно ли декомпилировать исполняемый файл?

Можно ли декомпилировать на C++?

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

Можно ли декомпилировать исполняемый файл?

IL был разработан для JIT-компиляции; x86 был разработан для собственного выполнения (по общему признанию, с помощью микрокода). Информация, необходимая компилятору JIT, аналогична той, которая нужна декомпилятору, поэтому декомпилятору легче работать с IL. В некотором смысле это просто переформулировка второго пункта.

Можно ли декомпилировать DLL?

Возможно ли, чтобы код был скомпилирован так, как он написан?

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

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

Декомпиляция и создание PDB с помощью ILSpy

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

Что такое файлы символов? Зачем они вам?

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

Благодаря интеграции декомпиляции непосредственно в процесс отладки мы надеемся предоставить разработчикам самый прямой путь к устранению неполадок в стороннем управляемом коде. Сначала мы интегрируем возможности декомпиляции в окно модуля, страницы без загрузки символов и страницы «Источник не найден».

Символы не загружены/источник не найден

Существует несколько способов, которыми Visual Studio попытается выполнить пошаговое выполнение кода, для которого у нее нет доступных символов или исходных файлов:

  • Взлом в код из точки останова или исключения.
  • Перейти к коду.
  • Переключиться на другую цепочку.
  • Измените фрейм стека, дважды щелкнув фрейм в окне стека вызовов.

В таких случаях отладчик отображает страницу "Символы не загружены" или "Источник не найден" и предоставляет возможность загрузить необходимые символы или источник.

В следующем примере я открыл аварийный дамп в Visual Studio и столкнулся с исключением в коде фреймворка. У меня нет оригинального исходного кода, поэтому, если я попытаюсь переключиться на основной поток, я увижу страницу «Нет загруженных символов». Однако теперь можно декомпилировать код прямо на этой странице и увидеть происхождение исключения.

Окно модуля

Во время отладки окно «Модули» — отличное место для получения информации о сборках и исполняемых файлах, которые в данный момент находятся в памяти. Чтобы открыть окно «Модули», выберите Отладка > Windows > Модули.

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

Также можно будет извлечь исходный код на диск, щелкнув правой кнопкой мыши модуль со встроенным исходным кодом и выбрав «Извлечь встроенный исходный код». Этот процесс экспортирует исходные файлы в папку «Разные файлы» для дальнейшего анализа. В следующем примере я открываю извлеченный файл .cs и устанавливаю точку останова, чтобы лучше понять используемый сторонний код.

Некоторые соображения

  • Декомпилированный исходный код не всегда похож на оригинальный исходный код.Декомпиляцию лучше всего использовать для понимания того, как выполняется программа, а не для замены исходного кода.
  • При отладке кода, декомпилированного из сборки, созданной с использованием оптимизации компилятора, могут возникнуть следующие проблемы:
    • Точки останова не всегда привязаны к соответствующему источнику
    • Пошаговое изменение не всегда может привести к исправлению.
    • Конечные автоматы Async/await и yield могут быть не полностью разрешены
    • Имена локальных переменных могут быть неточными.
    • Некоторые переменные нельзя оценить, если IL Stacks не пуст
    • Имя и расположение созданных файлов нельзя изменить.
    • Они являются временными и будут удалены Visual Studio.
    • Файлы помещаются в одну папку, и любая иерархия папок, которая была в исходных источниках, не используется.
    • Имя файла для каждого файла содержит хэш контрольной суммы файла.

    Попробуйте прямо сейчас!

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

    DLL to C — это инструмент, который может преобразовывать любые файлы DLL и некоторые файлы EXE в компилируемый код C/C++. Когда вы потеряли исходный код DLL, вы можете восстановить исходный код с помощью DLL на C. Он может генерировать структуры данных для всех разделов данных и дизассемблировать раздел кода. Он также может генерировать дерево взаимосвязей функций, а затем вы можете легко экспортировать указанную функцию в DLL. И он может преобразовывать ассемблерный код в код C, а код C также является компилируемым и надежным.

    Преобразование DLL или EXE в компилируемый код C/C++
    Создание структур данных для всех разделов данных
    Создание файла определения модуля
    Дизассемблирование раздела кода
    Дизассемблирование в режиме структуры
    Дизассемблировать в режиме Complete
    Дизассемблировать в режиме Complete Structure
    Дизассемблировать в режиме комментариев
    Дизассемблировать в режиме Precise Mode
    Декомпилировать ассемблерный код в код C/C++ с высокой скоростью
    Инициализировать таблицу адресов импорта в динамическом режиме
    Инициализировать таблицу адресов импорта в статическом режиме
    Инициализировать таблицу адресов импорта с прямыми адресами
    Поставляется с инструментом Анализатор декомпилированных файлов
    Генерировать дерево отношений функций
    Экспорт всех функций
    Экспорт только указанных функций
    Автоматический экспорт ресурсов в DLL или EXE
    Создание инструментов отладки
    Динамический журнал вызовов функций
    Автоматическое определение всех используемых аргументов функций и локальных переменные
    Экспорт любых функций в DLL или EXE без каких-либо анализ
    Автоматическое определение функций статической библиотеки C
    Преобразование ассемблерного кода в код C

    DLL to C

    Пример дизассемблированного кода:

    Пример декомпилированного кода:

    Вам просто нужно нажать кнопку "Начать преобразование", после чего вы получите компилируемый код C/C++ библиотеки DLL.

    Добавьте выходные файлы в свой проект.

    Затем вы можете вызвать новый код.

    DLL to C может даже преобразовывать некоторые очень сложные файлы EXE.

    Версия 3.91 — 2 июня 2020 г.
    Новые возможности:
    1. Изобрел новый тип технологии декомпиляции, который делает результирующий код C/C++ намного более надежным и качественным.

    Версия 3.74 — 9 мая 2020 г.
    Новые возможности:
    1. Декомпилировать сложные инструкции вызова
    2. Продолжить декомпиляцию по неизвестным инструкциям

    Версия 3.62 — 24 сентября 2019 г.
    Новые возможности:
    1. Автоматически декомпилировать несколько функций

    Версия 3.52 — 5 сентября 2019 г.
    Новые возможности:
    1. Разрешить импортировать функции с файлом .lib

    Версия 3.48 — 1 июля 2019 г.
    Новые возможности:
    1. Обрабатывать разделы с одинаковыми именами

    Версия 3.44 — 30 июня 2019 г.
    Новые возможности:
    1. Поддержка файлов DLL/EXE с экспортированными данными
    2. Улучшен метод перестроения таблицы экспорта.

    Версия 3.42 — 12 июня 2019 г.
    Новые возможности:
    1. Вывод оригинального имени файла

    Версия 3.38 — 9 июня 2019 г.
    Новые возможности:
    1. Запрашивать, если зависимая DLL не существует

    Версия 3.36 — 5 июня 2019 г.
    Новые возможности:
    1. Разделить разделы, но соединить их во время загрузки

    Версия 3.32 — 20 мая 2019 г.
    Новые возможности:
    1. Создать порядковый номер в файле определения модуля

    Версия 3.28 — 12 мая 2019 г.
    Новые возможности:
    1. Экспорт ресурсов в DLL или EXE автоматически
    2. Конвертируйте DLL или EXE, в которых есть раздел .text
    3. Соедините все секции
    4. Конвертируйте файлы EXE, если они конвертируемые
    5. Управление каталогом TLS
    6. Отображение всех разделов DLL или EXE
    7. Выберите разделы для вывода

    Версия 3.18–14 января 2019 г.
    Новые возможности:
    1. Инструкции цикла обработки

    Версия 3.16 — 20 ноября 2018 г.
    Новые возможности:
    1. Увеличьте скорость конверсии

    Версия 3.06 — 16 сентября 2018 г.
    Новые возможности:
    1. Сделайте механизм декомпиляции намного быстрее

    Версия 3.04 — 5 июля 2018 г.
    Новые возможности:
    1. Преобразование зашифрованных файлов DLL

    Версия 3.01 — 14 июня 2018 г.
    Новые возможности:
    1. Экспорт функций-членов класса C++

    Версия 2.99 — 19 мая 2018 г.
    Новые возможности:
    1. Использовать простой режим

    Версия 2.96 — 24 ноября 2017 г.
    Новые возможности:
    1. Показать текущую позицию разборки

    Версия 2.94 — 29 июля 2017 г.
    Новые возможности:
    1. Создайте файлы проекта
    2. Создайте проект EXE
    3. Создать проект DLL

    Версия 2.93 — 11 июля 2017 г.
    Новые возможности:
    1. Переименуйте функции и ярлыки
    2. Замена функции пользовательской функцией

    Версия 2.92 — 7 июля 2017 г.
    Новые возможности:
    1. Свернуть/развернуть функцию
    2. Отменить определение функции
    3. Перейти к конечному/начальному адресу функции
    4. Перейти на предыдущую позицию
    5. Перейти к следующей позиции
    6. Определить SEH-фильтр и обработчик

    Версия 2.88 — 14 мая 2017 г.
    Новые возможности:
    1. Декомпилировать оператор switch case
    2. Декомпилировать магические числа
    3. Установить конечный адрес функции

    Версия 2.78 — 19 апреля 2017 г.
    Новые возможности:
    1. Добавлен инструмент Око Бога
    2. Прототип функции анализа
    3. Анализ значений ESP/EBP в функции
    4. Преобразование ассемблерного кода в код C
    5. Вывод оптимизированного кода C
    6. Вывод неоптимизированного кода C

    Версия 2.76 — 22 марта 2017 г.
    Новые возможности:
    1. Интегрировать таблицу переходов в функцию

    Версия 2.72 — 25 февраля 2017 г.
    Новые возможности:
    1. Зарегистрируйте ESP EBP, чтобы определить все используемые аргументы функций и локальные переменные
    2. Переименовать аргументы функции и локальные переменные

    Версия 2.68 — 15 февраля 2017 г.
    Новые возможности:
    1. Создание ссылок на функции

    Версия 2.66 — 14 февраля 2017 г.
    Новые возможности:
    1. Поддержка имен C++
    2. Оптимизировать скорость компиляции для режима полной структуры

    Версия 2.64 — 29 января 2017 г.
    Новые возможности:
    1. Автоматически идентифицировать статические библиотечные функции C

    Версия 2.62 — 18 января 2017 г.
    Новые возможности:
    1. Создайте средства отладки
    2. Вызовы функций динамического журнала

    Версия 2.52 — 12 января 2017 г.
    Новые возможности:
    1. Создать файл определения модуля

    Версия 2.48 — 10 января 2017 г.
    Новые возможности:
    1. Добавлен инструмент Анализатор декомпилированных файлов

    Версия 2.42 — 24 декабря 2016 г.
    Новые возможности:
    1. Разборка в режиме полной структуры

    Версия 2.36 — 16 декабря 2016 г.
    Новые возможности:
    1. Разобрать участок кода
    2. Дизассемблировать в режиме комментариев
    3. Разборка в точном режиме
    4. Разборка в полном режиме

    Версия 2.32 — 7 декабря 2016 г.
    Новые возможности:
    1. Создать структуры данных для всех разделов данных

    Версия 2.28 — 5 декабря 2016 г.
    Новые возможности:
    1. Инициализируйте таблицу адресов импорта в динамическом режиме
    2. Инициализировать таблицу адресов импорта в статическом режиме
    3. Инициализировать таблицу адресов импорта с прямыми адресами

    Какой инструмент может декомпилировать DLL в исходный код C++?

    Это может быть невозможно или, по крайней мере, очень сложно. Содержимое DLL
    не сильно зависит от того, написано ли оно на C++; это все машинный код. Этот
    код мог быть оптимизирован, поэтому большая часть информации, которая присутствовала
    в исходном коде, просто исчезла.

    Об обфускации файлов, скомпилированных FreePascal/Lazarus и Delphi

    Простая компиляция с оптимизацией (-O2 и выше) и удаление всей
    отладочной информации и информации профиля, а также применение интеллектуальных ссылок сделает его почти
    недекомпилируемым. Не только FPC, но и Delphi. Я помню, как использовал
    декомпиляторы Delphi для Delphi 6, и они не смогли декомпилировать какой-либо
    фактический код, кроме ресурсов.

    Спасибо,
    Амин Мулай Рамдан.

    Бонита Монтеро

    Я не думаю, что декомпилятор C++ имеет смысл, поскольку
    метаинформация о классах, шаблонах, исключениях и т. д.
    нельзя восстановить из машинного кода.
    Единственный декомпилятор, который я знаю, это декомпилятор IDA, и он декомпилирует
    в C-код.

    Рик С. Ходгин

    В среду, 17 апреля 2019 г., в 13:23:46 UTC-4, Horizon68 написал:
    > Какой инструмент может декомпилировать DLL в исходный код C++?

    Недавний инструмент, выпущенный АНБ, может быть хорошей отправной точкой.
    Я читал об этом только краткое изложение, но если оно соответствует
    рекламе.

    "Одной из наиболее примечательных особенностей Ghidra является процессорный
    язык моделирования под названием Sleigh, который определяет, как
    инструкции машинного языка дизассемблируются и преобразуются в
    промежуточное представление инструмента, называемое P-кодом.
    br />Другими важными функциями являются функция отмены/возврата,
    репозиторий для совместной работы с несколькими пользователями и сценарии."

    "Ghidra — это платформа обратного проектирования программного обеспечения (SRE),
    разработанная Управлением исследований АНБ для обеспечения
    миссии кибербезопасности. Она помогает анализировать вредоносный код и вредоносное ПО, например
    вирусы, профессионалы лучше
    понимают потенциальные уязвимости в их сетях
    и системах."

    Мне задают этот вопрос. Можно ли декомпилировать Dll? Обычно я говорю «Нет». Но я пытался проверить, правда ли это.

    Кажется, я могу ошибаться.

    Есть какие-нибудь мысли по этому поводу?

    Железный дождь

    Единственный и неповторимый (насколько мне известно)

    Урвумпе

    Уже не смешно

    Мне задают этот вопрос. Можно ли декомпилировать Dll? Обычно я говорю «Нет». Но я пытался проверить, правда ли это.

    Кажется, я могу ошибаться.

    Есть какие-нибудь мысли по этому поводу?

    Глядя на результаты на главной странице, можно сказать, что это всего лишь грубое сопоставление кода дизассемблирования с образцом в C-подобный код, но он даже не похож на какой-либо стандартный API Windows.

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

    Черт возьми, я уверен, что он даже не смог правильно включить вставки для OrbiterAPI, не говоря уже о том, чтобы правильно идентифицировать стандартную библиотеку Orbiter.

    Лучше держитесь от этого подальше, если у вас нет опыта реверс-инжиниринга.

    Гаттиспилот

    Разработчик дополнений

    Спасибо. Я не собираюсь это пробовать.

    Возможно, это инструмент, помогающий увидеть, как работает dll из прошлого, и, возможно, переработать его, как AFcs.

    Сумья-8974

    Разработчик дополнений

    Присоединился 14 августа 2018 г. Сообщений 806 Оценка реакции 236 Баллы 43 Местоположение Индия Предпочтительные местоимения he/his/him

    Известный участник

    В принципе можно декомпилировать DLL, потому что вы, безусловно, можете ее дизассемблировать. Если у вас есть дизассемблирование, вы можете поискать шаблоны, которые компиляторы C обычно выдают при компиляции кода, а затем как бы угадать, из какого C-кода он произошел.

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

    Гаттиспилот

    Разработчик дополнений
    Известный участник

    Посмотрите на IDA Pro и ollydbg. Особенно первый довольно хорошо показывает не только ассемблерный код, но и диаграммы взаимосвязей кода (например, циклы и вызовы). Более поздний инструмент позволяет выполнять код во время работы программы.

    Оба по существу создают нумерованный список мнемоник ассемблера, представляющий машинный код вашего двоичного файла. Обычно у вас есть адрес в первом столбце, за которым следуют несколько байтов в шестнадцатеричном представлении, за которыми следует мнемоника ассемблера для этих байтов. Большинство также дают дополнительную информацию в 4-м столбце, например, например. перекрестная ссылка на статическое текстовое содержимое или уже известные точки входа в функцию.
    Кроме того, хорошие дизассемблеры также могут обнаруживать различные соглашения о вызовах функций и отображать сигнатуру функции вместе с автоматическим присвоением имен аргументам (например, arg1, arg2 и т. д.).

    Col_Klonk

    Новый участник

    Обычный язык ассемблера.
    IDA выпустила более позднюю бесплатную версию.

    DLL — это не что иное, как «объектный код»

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

    Это все скрыто от вас, C/C++/ и выше.. разработчика.

    Гаттиспилот

    Разработчик дополнений

    Col_Klonk

    Новый участник

    Давно я не играл с DLL, но IIRC.

    Первой функцией будет функция входа. Я думаю, что это называется конструктором в C++ и других RAD.

    Эта функция устанавливает все внутренние управляющие переменные DLL.
    Где-то там должна быть таблица экспорта функций/процедур.
    Функция выгрузки (Destructor) также будет там.

    WinAPI Loadlibrary обрабатывает загрузку и инициализацию библиотеки DLL.

    Остальная часть DLL должна быть обычным кодом на ассемблере из IDA.
    IDA также можно использовать для загрузки других DLL и модулей, которые использует эта DLL.

    OAPI Orbiter использует аналогичную структуру.

    Гаттиспилот

    Разработчик дополнений

    Гаттиспилот

    Разработчик дополнений

    O2cWTR0.jpg

    Мартинс

    Основатель Orbiter

    Возможно, вам повезет больше, если вы посмотрите на функцию, которая фактически реализована в этой библиотеке DLL. VESSEL2::clbkPostStep — нет. Это реализовано в orbiter.exe. Итак, все, что вы видите здесь, — это точка входа в функцию, которая, я полагаю, связана с DLL vla orbiter.lib. Любопытно, что сюда входит преобразование интерфейса из формата в стиле C (с объектом, переданным в качестве первого параметра) в формат в стиле C++, где функция вызывается как член этого объекта.

    Известный участник

    O2cWTR0.jpg

    На самом деле IDA — это экспертный инструмент. Вам нужно немного глубже изучить формат PE и внутреннюю работу DLL, чтобы понять, что вы видите. Я знаю, что пока понимаю только половину.

    То, что вы там разместили, выглядит как таблица переходов импорта для виртуальных методов, которая разрешается после загрузки DLL. Единственный JMP там будет указывать на основную функцию орбитального аппарата. По сути это означает, что эта функция не была реализована в DLL, и поэтому вместо нее используется базовая функция класса VESSEL2, которая, конечно же, реализована в ядре.

    Если у вас есть «настоящая» реализация обратного вызова, IDA, вероятно, перечислит ее в меню функций как что-то вроде «sub_10001040», а не с аккуратным именем библиотеки, которое она получает из таблиц импорта/экспорта. IIRC, все эти имена функций с розовым фоном являются переходами, возникающими в результате того, что виртуальные методы указывают на ядро, а не на фактические реализации переопределения.

    ---------- Сообщение добавлено в 13:41 ---------- Предыдущее сообщение было в 13:38 ----------

    Читайте также: