Вопрос

У меня есть довольно большая программа в .net 3.5 SP1, которая отлично компилируется.Однако когда я хочу запутать его с помощью Obfuscator Pro (на данный момент ознакомительная версия), Obfuscator останавливается со следующей ошибкой:

[Вывод сборки] Это приложение необычным образом запросило среду выполнения завершить его.
[Вывод сборки] Для получения дополнительной информации обратитесь в службу поддержки приложения.
[Вывод сборки] ilasm вернул 3
[Вывод сборки] Ошибка сборки.

Поскольку ошибка возникает из-за ILASM, я подумал, давайте сделаем то, что делает Obfuscator (без обфускации), и выполнил следующие команды:

=> ildasm.exe /OUT=C:\MyApp.exe.il /TEXT /NOBAR /RAWEH /QUOTEALLNAMES /UTF8 /LINENUM /FORWARD C:\MyApp\bin elease\MyApp.exe
=> ilasm C:\MyApp.exe.il

Первая команда (ILDASM) проходит нормально, я получаю IL-файл размером 450 МБ.
Однако вторая команда (ILASM) завершается со следующей ошибкой:

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

Кто-нибудь знает, в чем может быть ошибка?
Моя система — Windows 7 x64 с инструментами Visual Studio 2008 (SP1).

ОБНОВЛЯТЬ:
Я связался со службой поддержки Obfuscator и провел для них несколько тестов.Кстати, там есть очень отзывчивые люди.
Мы обнаружили, что ошибка возникает только при использовании x86 ILASM из папки платформы .net 2.0.При использовании из framework64\v2.0...тогда ошибки не происходит.
Кроме того, при использовании ILASM (x86 или x64) из .net 4.0 (бета-2) все проходит нормально.
Так что это действительно похоже на ошибку в ILASM .net 2.0 для x86.

Это было полезно?

Решение

Хотя проблема с ILASM на самом деле не решена, проблему удалось устранить следующим образом:

  • Используйте ILASM из папки framework64.
    ILASM x64 работает нормально.Однако я не смог заставить Dotfuscator использовать его.
  • Установите .net framework 4.0 (бета-версия 2)
    Когда используется ILASM из .net framework 4.0, он работает нормально.
  • Запустите Dotfuscator с флагом «/inpl:on».
    Служба поддержки Dotfuscator посоветовала мне использовать этот флаг, и все сработало нормально.
    По их мнению, в сгенерированном EXE-файле не должно быть никакой разницы, поэтому в настоящее время я использую это решение (флаг недоступен в графическом интерфейсе).
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top