Могу ли я использовать функцию Mono AOT для предварительной компиляции .NET DLL/EXE, чтобы затруднить их обратный инжиниринг?

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

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


person Jared Updike    schedule 06.04.2010    source источник


Ответы (3)


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

person Monoman    schedule 06.04.2010

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

person lupus    schedule 07.04.2010

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

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

person Gonzalo    schedule 06.04.2010
comment
Значит, реальная проблема защиты ИС — это метаданные, и единственный способ решить эту проблему — ручное или полуавтоматическое запутывание? - person Jared Updike; 06.04.2010
comment
да. Mono AOT похож на MS ngen. Это не защитит ваш IP. - person Gonzalo; 06.04.2010