¿Cómo pasar de APK agrietado a código java? Herramienta de 1 clic rompió mi aplicación

Así que publiqué mi aplicación para Android, lo protegí, apliqué LVL e incluso cambié algo del código LVL, pero por supuesto, lo encontré en algún lugar con una herramienta llamada Lucky Patcher. No voy a preguntar cómo puedo proteger contra herramientas de 1 clic como eso, como supongo que no hay una sola respuesta (a menos que tenga una idea y me puede señalar hacia).

Necesito pedirle que me ayude a averiguar cómo se rompió mi código. Entiendo que esta herramienta toma el archivo APK y elimina las licencias. Ahora, dado que, ¿cómo puedo tomar este archivo APK y hacer ingeniería inversa de nuevo a los archivos de Java para ver cómo la herramienta rompió mi código (por lo que lo arreglo)

Por favor, ayúdame gracias

Después de Proguard, no hay manera de descompilar su código en Java humanamente legible.
Aunque hace que el proceso de ingeniería inversa sea más difícil, no es imposible para un inversor inteligente averiguar el algoritmo oculto.

En cuanto a las herramientas,
Usa android-apktool para descompilar a smali y extraer todos los recursos xml codificados.
Utilice dex2jar para traducir Dalvik en jar y finalmente jd-gui para ver el código java invertido resultante

Hay un montón de información aquí sobre cómo ir de un archivo DEX de nuevo a Java fuente. Además, ¿ha mirado esta entrada del blog que aborda muchas de las maneras de proteger su fuente?

La piratería es un gran problema, y ​​no creo que cualquier plataforma o sistema operativo puede ser totalmente protegido de ella.

Sin embargo, google ya ha hecho algunos tutoriales con respecto a la protección contra él, por ejemplo: http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library -in-app-billing-y-app-engine.html

También: http://android-developers.blogspot.co.il/2010/09/securing-android-lvl-applications.html

Creo que también puede poner algunos obstáculos sofisticados con C en lugar de java.

También, como Google sugiere, considerar el uso de un enfoque diferente: hacer las funciones principales libres, y hacer el resto compra a través de facturación en la aplicación. También puede agregar anuncios y una característica para eliminarlos mediante la facturación en la aplicación también.

Estaba pensando en esto y parece que si realmente quería proteger su aplicación de los hackers hay realmente sólo una manera de hacerlo. Usted puede implementar todo tipo de métodos de fantasía de asegurar su aplicación está licenciada y pagada como se describe en el artículo de google, pero todo lo que necesita es un buen hacker para descompilar su aplicación y encontrar dónde está el código y luego comentar o cambiar una función Para siempre devolver verdad.

En su lugar, implemente una parte de la aplicación que se requiere para su uso en jni / ndk y compruebe la validación en ese código. No tiene que ser código muy complicado, pero no se puede poner algo como una función (por ejemplo, checkValidity) como un usuario podría comentar fácilmente la llamada java que llama a la ndk. En su lugar, debe hacer alguna llamada a su ndk para que realice algo que no sea trivial para ejecutar su aplicación. Algo que el usuario no puede comentar o cambiar con una función definida que hace lo mismo. Desde dentro del código ndk hacer la verificación de la integridad de la aplicación / licencias y si falla matar la aplicación o lo que sea necesario hacer.

Con el fin de evitarlo el hacker tendría que volver a implementar el código ndk o hacer ingeniería inversa .. Que debería ser mucho más complicado y no vale la pena.

Esto obviamente no es una solución simple y todavía no garantizará que su aplicación nunca sea hackeada, pero debería ser mucho más difícil de romper que los otros métodos.

Personalmente, creo que la Obfuscación {Proguard, Dexguard} y el nativo {.so} son una forma bastante eficaz de usarlo correctamente.

Definitivamente disuade a los 'jugadores' menos experimentados y complica definitivamente la vida incluso de los 'jugadores'

No sólo copie / pegue los códigos de ejemplo de Google android …

  • Error de Play Store "Subiste un APK firmado con un certificado inseguro"
  • ¿Cómo instalo la misma aplicación Android .apk dos veces en el mismo dispositivo?
  • Diferencia entre las versiones de firma - V1 (Jar Signature) y V2 (Full APK Signature) mientras genera apk firmado en AndroidStudio?
  • Paquete de dos apk en un solo apk?
  • Diferentes firmas de apk
  • Android Studio generado APK se bloquea al ejecutar la aplicación en el mismo teléfono funciona bien. ¿Qué está mal?
  • El archivo APK no existe en el disco
  • Proveedor de contenido INSTALL_FAILED_CONFLICTING_PROVIDER (instalación del proveedor de contenido como un apk independiente)
  • Convertir AndroidManifest.xml en binario
  • Error: La ruta de origen no existe: resources \ android \ icon \ drawable-hdpi-icon.png
  • Intel XDK desactivar la rotación
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.