Подтвердить что ты не робот

Действительно ли невозможно защитить приложения Android от обратного проектирования?

Как известно, приложения для Android написаны на Java. В Java, независимо от что вы делаете, невозможно защитить скомпилированный код от декомпиляции или обратного проектирования, так как вопрос о переполнении стека Как заблокировать скомпилированные классы Java для предотвращения декомпиляции? предлагает.

Как можно защитить приложение, которое содержит алгоритмические секреты торговли от обратного проектирования?

Под "как" я подразумеваю не только программные приемы, но и другие креативные.

4b9b3361

Ответ 1

Первой остановкой для меня будет оптимизация и обфускация кода с помощью ProGuard, который, как известно, работает с байтовым кодом, нацеленным на Android Dalvik VM (через Dex). Это действительно отличный инструмент и может увеличить сложность "реверсирования" вашего кода при одновременном сокращении вашего кода (в некоторых случаях резко: недавний апплет удалился с примерно 600 килобайт КБ до 50 КБ).

Как утверждают другие, вы никогда не получите 100% -ную защиту данных вашего алгоритма, пока его реализация распространяется на клиентов. Для этого вам нужно будет хранить код только на своих серверах. Попытки обеспечить почти 100% -ную защиту кода клиента эффективно DRM и могут сделать ваш клиентский код неустойчивым перед сбоями в сети и, как правило, разочаровать (законных) пользователей.

В блоге разработчиков Android есть полезно articles по вопросу о "защищенных от несанкционированного доступа" Android-приложениях (и они рекомендуют использовать ProGuard как часть общего подхода).

Что касается "творческих" подходов: некоторые разработчики используют методы методы отладки, чтобы предотвратить анализ во время выполнения и объединить это с шифрованием частей из двоичного кода (для предотвращения статического анализа), но, честно говоря, достаточно решительный атакующий может обходить эти, в то время как это может вызвать недовольство пользователя как показано в статье Windows KB Игры: сообщение об ошибке: обнаружен отладчик: выгрузите отладчик и повторите попытку. По этой причине моя девушка "Научится водить" DVD-программу не будет работать под VirtualBox, но она обвиняет Linux, конечно!

OpenRCE и Статья в Википедии об обфускационном коде могут быть хорошими отправными точками, если вы хотите изучить это дальше. Но будьте осторожны, вы можете потерять больше благодаря усердному использованию этих методов, которые разочаровывают ваших пользователей, чем вы могли бы потерять коммерческую тайну путем обратной инженерии. Как Антон S говорит, возможно, самый "креативный" подход заключается в настройке бизнес-модели, а не на технологии.

Последняя версия Android SDK от 6 декабря 2010 года (совпадающая с выпуском Gingerbread от Android 2.3):

Интегрированная поддержка ProGuard: теперь ProGuard поставляется с SDK Tools. Разработчики теперь могут запутать свой код как интегрированную часть сборки релиза.

Ответ 2

Если это возможно: удаленные вызовы процедур на хорошо защищенный сервер (сервер имеет код, который вы хотите защитить).

Ответ 3

Сделайте так дешево, чтобы беспокоиться и не строите свою бизнес-модель поверх секретов, которые выполняются на стороне клиента. Другими словами, не разделяйте ваши секреты.

Ответ 4

Невозможно защитить код клиентской стороны от обратного проектирования. Вы можете использовать более или менее эффективные способы обфускации кода. И оптимизированный ассемблер x86 оказывается довольно хорошей обфускацией.

Итак, если у вас есть алгоритмические секреты, поставьте их на серверной стороне.

Ответ 5

Как заблокировать скомпилированные классы Java для предотвращения декомпиляции

Вы не можете. Любая схема может быть побеждена кем-то с достаточными навыками, временем и мотивацией.

(Кстати, это также относится к программному обеспечению, которое скомпилировано в двоичный файл. Единственное различие заключается в том, сколько усилий при декомпиляции.)

Мой вопрос в том, как можно было бы защитить приложение, которое содержит алгоритмические секреты торговли от обратного проектирования?

Просто не устанавливайте приложение на телефон пользователя. Или (более полезно), запустите код, содержащий секреты торговли на удаленном (правильно защищенном) сервере.

Ответ 6

Вы не можете полностью защитить свое приложение, так как всегда будет кто-то, кто его взломат...

Однако вы можете помешать им сделать это, сделав ваше приложение бесплатным или, по крайней мере, дешевым, чтобы люди не беспокоились.

Альтернатива, попробуйте, чтобы ваше приложение для Android было "немым", как в том, чтобы хранить всю скрытую бизнес-логику на сервере бэкэнд, и просто показывать вам данные приложения с помощью какой-либо открытой службы.

Ответ 7

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

Ответ 8

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

Ответ 9

Вам нужен креативный подход, здесь один.

Какова основная программа на телефонах, которые не были декомпилированы сегодня? Радиопрограммы. Зачем? Он не работает на чипсете ARM телефона, а вместо этого на отдельном Qualcomm Hexagon, который все больше присутствует в смартфонах. Это не x86, это не ARM, он использует проприетарную архитектуру и инструкции Qualcomm.

  • Декомпиляция Java проста.

  • Декомпиляция ARM сложнее (лицензии на декомпилятор Hex-Rays начинаются с 1129 долларов США... и сочетание между кодом большого пальца и стандартным кодом ARM в двоичных файлах является болью) = > вы можете попробовать скомпилировать с помощью Android NDK.

  • В настоящее время нет декомпиляторов Hexagon! И спецификации QDSP не являются общедоступными, даже пиратскими версиями.

Вопрос: может ли независимый поставщик программного обеспечения использовать прошивку Hexagon, включенную в телефоны массового рынка? Кажется, это направление Qualcomm. Проверьте их сайт и продукты SnapDragon.

NB: Я не про-Qualcomm и не закрыт. Но этот поток обращается к такому решению.

Ответ 10

Вы не можете на 100% защитить ваш Android-код от обратного проектирования. Если вы хотите защитить какой-то ключ, тогда вы можете получить помощь от интеграции сервера, который дает вам зашифрованный ключ при вызове веб-службы и использовать этот ключ в вашем коде.