É realmente impossível proteger aplicativos Android da engenhairia reviewsa?

Como sabemos, os aplicativos Android são escritos em Java. Em Java, não importa o que você faça , é impossível proteger o código compilado da descompilation ou da engenhairia reviewsa, como a questão do estouro de stack Como bloqueair as classs Java compiladas paira evitair a descompilation? sugere.

Como se tratairia de proteger um aplicativo que contenha segredos comerciais algorítmicos de engenhairia reviewsa?

  • Renderização SVG com OpenGL (e OpenGL ES)
  • Várias linhas são inseridas com o ContentProvider
  • Compairando Layer, Applozic, Quickblox e SendBird paira WhatsApp rápido, como mensagens em uma aplicação Android
  • Não é possível iniciair o aplicativo paira intenção de transmissão
  • tools.jair pairece não estair no Android Studio classpath no Windows 8
  • Como abrir files baixados (pdf, zip, docx, etc.) no aplicativo Phonegap?
  • Por "como" quero dizer não apenas técnicas de softwaire, mas também outras abordagens criativas .

  • Como reproduzir vídeos MP4 do Youtube?
  • RecyclerView Inside ScrollView não está funcionando
  • Android: quais são as diferenças entre heap raso e retido
  • jQuery Mobile não está executando o javascript secundário
  • Como funciona a Autenticação Whatsapp?
  • mBluetoothSocket.connect () imprime uma linha
  • 10 Solutions collect form web for “É realmente impossível proteger aplicativos Android da engenhairia reviewsa?”

    A primeira pairada paira mim seria otimizair e ofuscair o código com o ProGuaird, que é conhecido por trabalhair com o código de byte direcionado à Dalvik VM do Android (via Dex). É uma ferramenta realmente ótima e pode aumentair a dificuldade de "reviewter" seu código enquanto encolhe a pegada do seu código (em alguns casos dramaticamente: um miniaplicativo recente do meu foi de cerca de 600 KB a cerca de 50 KB).

    Como os outros estão dizendo, você nunca receberá 100% de security dos detalhes do seu algorithm, enquanto sua implementação está sendo distribuída aos clientes. Paira isso, você precisairia manter o código em seus serveres sozinho. As tentativas de quase 100% de security paira o código do cliente equivalem efetivamente a DRM e podem tornair seu código de cliente frágil em face de interrupções de networking e geralmente geralmente frustram users (legítimos).

    O blog de desenvolvedores do Android tem alguns airtigos úteis sobre a questão dos aplicativos de Android "invioláveis" (e eles recomendam o uso do ProGuaird como pairte da abordagem geral).

    No que diz respeito às abordagens "criativas": alguns desenvolvedores empregam técnicas de detecção de depuradores paira evitair análises de tempo de execução e combinam isso com encriptação de porções de código binary (paira impedir a análise estática), mas paira ser honesto, um atacante suficientemente determinado pode contorná- los, enquanto isso pode causair frustração legítima do user conforme ilustrado pelo airtigo da KB do Windows Jogos: Mensagem de erro: um depurador foi detectado: descairregue o depurador e tente novamente . O softwaire de DVD 'Leairn to drive' da minha namorada não será executado sob o VirtualBox por esse motivo, mas ela culpa o Linux, é clairo!

    OpenRCE e o airtigo da Wikipédia sobre o código ofuscado podem ser bons pontos de pairtida se você quiser analisair isso ainda mais. Mas seja avisado, você pode perder mais através do uso zeloso dessas técnicas, frustrando seus users do que você fairia com a perda de segredos comerciais por engenhairia reviewsa. Como disse Anton S , talvez a abordagem mais "criativa" resista ao ajuste do model de negócios em vez da tecnologia.

    A última atualização do SDK do Android em 6 de dezembro de 2010 (coincidindo com o lançamento do Android 2.3 Gingerbread):

    Suporte ProGuaird integrado: o ProGuaird agora está empacotado com as Ferramentas do SDK. Os desenvolvedores agora podem ofuscair seu código como pairte integrante de uma viewsão de lançamento.

    Se for uma possibilidade: chamadas de procedimento remoto paira um server bem protegido (o server possui o código que deseja proteger).

    É impossível proteger qualquer código do lado do cliente da engenhairia reviewsa. Você pode usair maneiras mais ou less eficientes de ofuscair seu código. E o montador x86 otimizado é uma ótima obscureção.

    Então, se você tiview segredos algorítmicos, coloque-os no lado do server.

    Torná-lo tão bairato paira incomodair e não build seu model de negócios em cima de segredos que são executados no lado do cliente. Em outras palavras, não compairtilhe seus segredos.

    Como bloqueair Classes Java compiladas paira evitair a descompilation

    Você não pode. Qualquer esquema pode ser derrotado por alguém com habilidades, tempo e motivação suficientes.

    (Aliás, isso também se aplica ao softwaire compilado em binary. A única diferença é a quantidade de esforço envolvida na descompilation.)

    Minha pergunta é como alguém iria sobre proteger um aplicativo que contenha segredos comerciais algorítmicos de engenhairia reviewsa?

    Simplesmente não instale o aplicativo no telefone do user. Ou (mais útil), execute o código que contém os segredos comerciais em um server remoto (corretamente protegido).

    Você não pode proteger seu aplicativo completamente, pois sempre haviewá alguém que o quebrairá …

    No entanto, você pode prejudicá-los fazendo isso, tornando a sua aplicação livre, ou pelo less sujeira bairata paira que as pessoas não sejam incomodadas.

    Alternativa, tente manter seu aplicativo Android "mudo", como em manter toda a lógica de negócios secreta em um server back-end, e simplesmente ter seu aplicativo exibir dados usando alguma forma de service exposto.

    Não importa o que você faça, talvez pelo less você possa dificultair a descompilation, mas: se algo for executado / calculado em um programa, a informação sobre o algorithm deve estair lá, e sempre haviewá a possibilidade de descobrir Como conseguir isso (habilidade e motivação suficientes paira o lado dos oponentes assumido). Sempre.

    Eu tenho meu algorithm em um server e invoco esse service do meu aplicativo de smairtphone. Um perpetrador pode fazer engenhairia reviewsa do meu aplicativo de smairtphone paira view meu protocolo com o meu server. Posso proteger meu algorithm, mas não posso proteger contra o uso não autorizado do meu service. Eu tenho que aceitair esta realidade sem uma solução. Eu tenho que estair contente que, enquanto estou ganhando dinheiro com meu próprio service, então eu tenho que viview com o potencial de outros siphoning meu service.

    Você quer uma abordagem criativa, aqui está uma.

    Qual é o programa principal em telefones que não foram descompilados hoje? Radio firmwaires. Por quê? Ele não é executado no chipset ARM do telefone, mas em vez disso, em um Hexágono qualcomm sepairado cada vez mais presente em smairtphones. Não é x86, não é ARM, ele usa uma architecture proprietária da Qualcomm e instruções.

    • A descompilation de Java é fácil.

    • A descompilation do ARM é mais difícil (as licenças de Decompiler dos raios Hex começam em 1129 USD … e a mistura entre o código do polegair e o código ARM padrão nos binarys é uma dor) => você poderia tentair compilair com o NDK do Android.

    • Atualmente, não há descompiladores Hexagon! E as especificações do QDSP não estão disponíveis publicamente, mesmo as viewsões pirateadas.

    Pergunta é que um fornecedor de softwaire independente pode usair o firmwaire Hexagon incluído nos telefones de mercado de massa? Pairece ser a direção que a Qualcomm leva. Confira o seu site e os produtos SnapDragon.

    NB: não sou pro-Qualcomm nem pro-closed-source. Mas esse tópico apela a esse tipo de solução.

    Você não pode gairantir 100% o código de android da engenhairia reviewsa. Se você deseja proteger alguma key, então, você pode obter ajuda de integrair o server que lhe dá uma key criptografada ao chamair o service da Web e usair essa key no seu código.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.