¿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)
- Cómo ejecutar apk archivo en línea?
- No se puede ejecutar la aplicación de Android, No se pudo encontrar el problema de .apk en eclipse
- Diferentes tipos de APK
- Instalación de APK programáticamente en Marshmallow
- No es posible zipalign apk android android studio 2.2
Por favor, ayúdame gracias
- Ciclo de vida de la aplicación Android cuando la aplicación está siendo actualizada por Play Store
- No se puede descargar e instalar la aplicación APK desde la página web propia
- Al construir el proyecto de android con el comando de la depuración de la hormiga, mi apk tiene la palabra depuración atada al nombre. ¿Cómo lo cambio?
- Android APK instala varios iconos / actividades?
- ¿Cómo puedo crear un "complemento de licencias" para mi aplicación de Android?
- Android: ¿Cómo cambiar el nombre específico del archivo apk generado en Android Studio?
- ¿Cómo dividir los APK divididos creados mientras se usa instant-run, dentro del propio Android?
- Que apk se ejecuta en el dispositivo Android iónico
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 …
- Curl página de izquierda a derecha android
- Acción de zoom en android utilizando appium-python-client