Неужели нельзя для защиты андроид приложений от реверс-инжиниринга?


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

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

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

10 55

10 ответов:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

требуется творческий подход, вот.

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

  • декомпиляция Java простой.

  • декомпиляция руки более трудна (лицензии декомпилятора наговора-лучей начало в 1129 USD... и смесь между кодом большого пальца и стандартным кодом руки в двоичных файлах-это боль) = > вы можете попробовать компилировать с Android НДК.

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

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

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

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