Можно ли декомпилировать автономный отдельный исполняемый файл. Net Core 3? - PullRequest
1 голос
/ 02 февраля 2020

Я пытался использовать Dotpeek и ILSpy. Net для декомпиляции (мой собственный код), они потерпели неудачу.

Нужно ли специальное запутывание в распределенных двоичных файлах. Net Core 3 отдельный отдельный исполняемый файл ?

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <PublishTrimmed>true</PublishTrimmed>
    <PublishReadyToRun>true</PublishReadyToRun>
    <PublishSingleFile>true</PublishSingleFile>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
  </PropertyGroup>
</Project>

1 Ответ

1 голос
/ 27 февраля 2020

Однофайловый exe-файл действительно является неуправляемой оболочкой, и ILSpy не поддерживает его декомпиляцию. Но когда вы запускаете исполняемый файл, он разворачивает его содержимое во временную папку. Таким образом, вы можете найти управляемый dll и декомпилировать его с помощью ILSpy.

Чтобы найти временную папку, вы можете использовать любой инструмент, который показывает расположение сборок, загруженных процессом. SysInternals Process Monitor ( procmon ) является хорошим.

Вы можете настроить procmon для фильтрации по имени вашего exe-файла, и при запуске exe-файла procmon должен показать некоторые события для сборок, загружаемых из временной папки:

screenshot

Вы можете перейти к этой папке и найти там свою управляемую dll. И вы можете декомпилировать, используя ILSpy из этого места.

Я написал запись в блоге: https://eersonmez.blogspot.com/2020/02/ilspy-decompiling-net-core-self.html

...