Могу ли я использовать функцию AOT mono для «предварительной компиляции» .NET DLL / EXE-файлов, чтобы их было труднее восстановить? - PullRequest
3 голосов
/ 06 апреля 2010

Могу ли я использовать моно AOT (Ahead of Time compilation) функцию для "предварительной компиляции" всех или части некоторых из моих собственных .NET DLL (и / или EXE), чтобы сделать их сложнее для обратного проектирования? Я использую Windows (7 / x64, но у меня есть компьютер с x86 XP) и .NET 3.5 (VS 2008), и мне любопытно, можно ли использовать / моно / AOT для этой цели? (Связывание их с x86 приемлемо на этом этапе.)

См. Также этот вопрос , где я попробовал это и не повезло.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2010

IL-код в сборках может быть удален после предварительной компиляции кода (это то, что мы делаем для monotouch, например, чтобы уменьшить размер загрузки приложения). Есть несколько ограничений, но это работает. Нужно ли идти на все, чтобы запутать своих клиентов запутыванием - это другой вопрос.

1 голос
/ 06 апреля 2010

AFAIK, AOT моно не удаляет метаданные, что означает, что хакер имеет много информации, чтобы попытаться понять логику в вашем коде. Также он доступен не для всех процессоров и платформ (в частности, я думаю, что он недоступен в Windows). Проще попробовать некоторые коммерческие обфускаторы, которые делают именно это, забирая большую часть метаданных.

1 голос
/ 06 апреля 2010

Краткий ответ, нет.

При сборке AOT будет сгенерирована только общая библиотека, поэтому в следующий раз, когда вы будете использовать эту сборку, Mono не придется JIT-компилировать используемые вами методы, а вместо этого загружать их из .so. Ваша сборка должна быть там, потому что метаданные в ней все еще нужны.

...