plugin encrypt java android encryption cordova obfuscation

java - encrypt - ionic crypt file



¿Cómo encriptar los activos HTML+JS en la aplicación móvil Android Phonegap? (4)

Hace algún tiempo tuve el mismo problema pero en iOS. Y el resultado fue solo después de parchar PhoneGap para iOS. He escrito un artículo en http://oleksiy.pro/2011/09/20/phonegap-application-encryption/ . Además, para Android, este método podría ser débil, porque el código de Java podría tener un 99% de decompilación y el pirata informático vería su clave.

Tengo la aplicación móvil creada con Phonegap basic wrapper y HTML5. Mi objetivo es encriptar archivos en el directorio de activos (archivos JS y HTML) para que no puedan leerlos las personas que descompriman el archivo APK y quieran ver las fuentes de JS.

Ok, sé que no hay una solución absolutamente perfecta. En mi camino a esta pregunta, ya he probado opciones de cómo solucionar la protección contra copia de mis fuentes (minificación JS, ofuscación, etc.), pero descubrí que es muy sencillo llegar al código original (usando JSBeautifier, firebug , incluidos scripts ofuscados, etc.).

Entonces mi pregunta es: ¿hay alguna forma simple de encriptar los archivos JS + HTML (para que no sean legibles y útiles cuando simplemente se descomprime el archivo APK) y cómo implementarlo en la plataforma JAVA para Android?

Nota: No conozco el lenguaje JAVA, así que incluya un ejemplo de trabajo que pueda usar.

Editar: también investigué la función ProGuard al hacer el paquete APK final, sin embargo, es inútil para mí, porque solo trata con archivos JAVA, pero deja el directorio de activos como está.


La mejor combinación que he encontrado es DojoToolkit y el compilador de cierre en modo avanzado.

El cierre en modo avanzado hace que el código de JavaScript sea casi imposible de aplicar ingeniería inversa, incluso después de pasar por un embellecedor. Una vez que su código JavaScript se ofusca más allá de cualquier reconocimiento y posibilidad de ingeniería inversa, su HTML no revelará gran parte de sus secretos.

Este enlace para usar Dojo Toolkit con el compilador de cierre en modo avanzado para aplicaciones móviles:

http://dojo-toolkit.33424.n3.nabble.com/file/n2636749/Using_the_Dojo_Toolkit_with_the_Closure_Compiler.pdf?by-user=t

Y, por supuesto, Dojo Toolkit funciona bien con PhoneGap.


No hay una manera fácil de hacer esto. Si quieres encriptar tu JavaScript necesitarías algún tipo de clave para descifrarlo. La clave no se puede almacenar en el dispositivo ya que es fácil encontrar la clave y descifrar el código fuente. Si su aplicación requiere que un usuario inicie sesión, es posible que pueda devolver la clave de cifrado una vez que el usuario haya iniciado sesión y usar esa clave para descifrar los archivos JS y HTML. Existen bibliotecas de cifrado estándar de Android que puede usar a través de un complemento PhoneGap.

Habiendo dicho eso, es solo JavaScript, así que si hay algo que realmente necesitas cifrar, probablemente deberías considerar cambiar tu enfoque.


Puede usar una vista web y cargar una cadena base64:

protected String base64Str = "+wL00h2L...."; wv1.loadData(base64Str, "text/html; charset=utf-8", "base64");