Есть ли способ использовать ProGuard с MonoDroid?

Наша команда разработчиков только что (в основном) закончила приложение для Android с использованием MonoDroid в Visual Studio. Поскольку это связано с банковскими операциями, мы хотели попытаться запутать его, чтобы добавить некоторую защиту от любого, кто попытается его декомпилировать. Сначала я решил, что могу просто использовать ProGuard, но, похоже, нет файла project.properties, который я мог бы редактировать в Visual Studio. Может ли кто-нибудь пролить свет на эту тему и сказать мне, можно ли использовать ProGuard с Mono, и моя новизна просто затуманивает мое зрение?

(Другой разработчик пытался использовать Dotfuscator, так как мы не смогли сразу найти способ использовать ProGuard, но он потерпел неудачу с многочисленными ошибками; среда выполнения Mono, похоже, создает проблемы.)


person Luke    schedule 06.01.2012    source источник
comment
Я думаю, что команда монодроидов могла бы ответить на этот вопрос лучше всего?   -  person Peterdk    schedule 07.01.2012
comment
На самом деле я отправил им письмо в службу поддержки пару дней назад, но не получил ответа. Думал дать этому предмету последнюю попытку, спросив здесь.   -  person Luke    schedule 07.01.2012
comment
обфускация на самом деле ничего не сделает для существенной защиты вашей кодовой базы. Во-первых, среда выполнения должна реконструировать cil, чтобы запустить его. Если защита опирается на какую-то часть кода, модель вашего приложения неверна. Тем не менее, я вижу, что вы хотите скрыть свою интеллектуальную собственность.   -  person IanNorton    schedule 07.01.2012


Ответы (1)


Набор инструментов Mono для Android на данный момент не поддерживает запуск proguard.

Однако, за одним широким исключением, отсутствие поддержки proguard в значительной степени спорно. Proguard работает только с байт-кодом Java. В архитектуре Mono для Android работает среда выполнения Mono; .NET CIL не "скомпилирован" в байт-код Java, CIL JIT-компилируется Mono. Единственный работающий код Java предназначен для вызываемых оболочек Android, которые позволяют Java/Android для вызова управляемого кода.

Таким образом, единственное, что proguard будет защищать в приложении Mono для Android, — это сгенерированные Android Callable Wrappers, которые в основном состоят из набора объявлений методов native. В Android Callable Wrappers не будет никакой бизнес-логики для декомпиляции.

Вместо этого сборки CIL хранятся в несжатом виде в файле .apk. Сборки, в свою очередь, можно декомпилировать, чтобы получить всю вашу бизнес-логику. Решение здесь состоит в том, чтобы запутать сборки перед их внедрением в файл .apk. Есть отчеты о том, что Postbuild 2010 от Xenocode можно использовать, хотя я не знаю никаких подробностей о том, как подключить это.

Упомянутое выше исключение относится к любому пользовательскому коду Java, включенному в процессы сборки через AndroidJavaSource и AndroidJavaLibrary Создание действий, которые будут использоваться для включения таких вещей, как библиотека AdMob. Для этого сценария мы должны добавить поддержку proguard в процесс сборки, хотя у меня нет ETA, когда будет добавлена ​​поддержка proguard.

person jonp    schedule 08.01.2012