Проблема с илазмом - PullRequest
       20

Проблема с илазмом

3 голосов
/ 22 января 2010

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

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

Так как ошибка исходит от ILASM, я подумал, давайте сделаем то, что делает Обфускатор (без запутывания), и выполнил следующие команды:

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

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

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

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

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

1 Ответ

1 голос
/ 15 февраля 2010

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

  • Использовать ILASM из папки framework64
    X64 ILASM работает отлично. Однако я не мог заставить Dotfuscator использовать его.
  • Установка .net Framework 4.0 (бета-версия 2)
    Когда используется ILASM из .net framework 4.0, он работает просто отлично.
  • Запустить Dotfuscator с флагом '/ inpl: on'
    Служба поддержки Dotfuscator посоветовала мне использовать этот флаг, и он работал нормально.
    По их мнению, не должно быть никакой разницы в сгенерированном EXE, поэтому я использую это решение в настоящее время (флаг недоступен в GUI).
...