Как запутать код Xamarin Android, если у меня есть собственный рендерер и много внешних библиотек

Я работаю над проектом Xamarin, где хочу, чтобы мое приложение для Android было защищено от обратной разработки. у меня есть собственный рендерер в моих проектах и ​​внешних библиотеках. Я пробовал dotfuscator, но он меняет некоторые методы и не влияет на XAML, из-за чего некоторые функции не работают, а также не работает пользовательский рендерер. Может ли кто-нибудь предложить мне лучший вариант? Я использую Visual Studio 2017 Professional. предложите мне какое-нибудь бесплатное или более дешевое решение с минимальными затратами.


person Jay Bhatia    schedule 28.03.2019    source источник
comment
Может быть, это полезно: stackoverflow.com/questions/36423030/   -  person Volkmar Rigo    schedule 28.03.2019
comment
Спасибо за ваш ответ @VolkmarRigo. Я бы хотел, чтобы это помогло мне, но у меня нет бюджета, а функция AOT доступна только в Enterprise Edition Visual Studio. Есть еще один альтернативный вариант, называемый «Внедрение сборок в собственный код», но он также доступен для Enterprise. Только издание. если вы найдете более дешевое решение, отправьте ответ   -  person Jay Bhatia    schedule 28.03.2019
comment
Babel заявляет о поддержке babelfor.net/products/obfuscator обфускации XAML и BAML. Но у меня нет личного опыта в этом. Может быть, вы можете попробовать. Это не бесплатно, но определенно дешевле, чем Visual Studio Enterprise...   -  person Volkmar Rigo    schedule 28.03.2019
comment
Спасибо @VolkmarRigo за ваш ответ, вы правы, поэтому я могу попробовать, я опубликую, если это сработает, но перед этим мне нужно связаться со службой поддержки, чтобы узнать, поддерживают ли они приложение, которое имеет пользовательский рендерер, поскольку они ничего не упомянули о настраиваемый рендерер и в dotfuscator я столкнулся с некоторыми проблемами в рендерере после обфускации.   -  person Jay Bhatia    schedule 28.03.2019
comment
Progaurd для этого не подходит?? :/   -  person FreakyAli    schedule 28.03.2019
comment
Спасибо за ваш ответ @G.hakim Нет, в Xamarin Progaurd не запутывайте код, я уже пробовал. Я пытаюсь работать с Babel, как сказал Фолькмар Риго. если он работает в пробной версии, то подумает о переходе на профессиональный, но, похоже, он не работает, поскольку запутывает код, но APK не устанавливается ни на одном устройстве.   -  person Jay Bhatia    schedule 28.03.2019


Ответы (1)


Вы можете использовать AOT в версии сообщества Visual Studio. Просто добавьте следующие строки вручную в файл csproj для конфигурации вашего выпуска:

<BundleAssemblies>True</BundleAssemblies>
<EmbedAssembliesIntoApk>True</EmbedAssembliesIntoApk>
<AotAssemblies>True</AotAssemblies>
<AndroidAotAdditionalArguments>no-write-symbols,nodebug</AndroidAotAdditionalArguments>

Также многие рекомендуют использовать LLVM:

<EnableLLVM>True</EnableLLVM>

Добавление всего этого удаляет легко декомпилируемые DLL-файлы, которые обычно присутствуют в пакете apk.

Вместо этого создаются файлы общих объектов (.dll.so). Их, насколько я понимаю, нельзя использовать для воспроизведения исходного кода. Однако я не эксперт, и это утверждение должно быть проверено кем-то более осведомленным.

Общие объектные файлы тоже можно разархивировать, но я не вижу в них легкодоступного кода. Я не знаком с макетом/содержимым этих файлов. Надеюсь, кто-нибудь когда-нибудь добавит о них больше информации.

Будьте осторожны с настройками параметров Android вашего проекта в Visual Studio, так как они могут изменить параметры, введенные вами вручную. Лично я не трогаю эти параметры в Visual Studio и делаю все настройки проекта вручную в текстовом редакторе.

person Aidan    schedule 03.11.2019