2012-06-05 9 views
7

Así que publicaron mi aplicación androide, que proguarded que, aplicado LVL e incluso cambió una parte del código LVL pero offcourse, lo encontré agrietado algún lugar usando una herramienta llamada Lucky Patcher. No voy a preguntar cómo puedo protegerme contra herramientas de 1 clic como esa, ya que supongo que no hay una respuesta única (a menos que tengas una idea y me apuntes).¿Cómo pasar de la APK crackeada al código de Java? herramienta 1-clic agrietado mi aplicación

necesito preguntarle a ayudar a saber cómo estaba roto mi código. Entiendo que esta herramienta toma el archivo APK y elimina la licencia. Ahora, dado que, ¿cómo puedo tener este archivo APK y la ingeniería inversa de nuevo a los archivos Java para ver cómo la herramienta agrietado mi código (así lo fijo)

Por favor, ayúdame Gracias

+0

duplicado posible de [ ¿Hay alguna manera de obtener el código fuente de un archivo APK?] (Https://stackoverflow.com/questions/3593420/is-there-a-way-to-get-the-source-code-from-an- apk-file) –

Respuesta

1

Después Proguard, no hay manera de descompilar el código en Java humanamente legible.
Si bien dificulta el proceso de ingeniería inversa, no es imposible que un inversor inteligente descubra el algoritmo oculto.

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

+0

Gracias. Tengo mapas de semillas y from.proguard, puedo usarlos para deofuscarlo ¿no? – Snake

+0

ese es el mismo comentario que "scorpiodawg" ha escrito, solo que dio un enlace a una publicación que habla de ello. por favor lea la publicación. –

1

la piratería es un gran problema, y ​​no creo que ninguna plataforma o sistema operativo pueda estar completamente protegido de ella. Sin embargo

, Google ya ha hecho algunas clases particulares en materia de protección contra ella, por ejemplo: http://www.google.com/events/io/2011/sessions/evading-pirates-and-stopping-vampires-using-license-verification-library-in-app-billing-and-app-engine.html

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

creo que también se puede poner algunos obstáculos sofisticados usando C en lugar de java.

también, como sugiere Google, considere el uso de un enfoque diferente: hacer que las características básicas libre, y hacer que el resto purchaseable a través de la facturación integrada en la aplicación. también puede agregar anuncios y una función para eliminarlos mediante la facturación integrada en la aplicación.

+0

Gracias, lo sé, pero como dije en mi publicación, quiero proteger mi programa contra herramientas de 1 clic. lo que he implementado es desde la publicación y me gustaría que hubiera ejemplos para que sea más fácil de entender – Snake

+0

, así que puedes probarlo y probarlo hasta que encuentres una forma de que no logre descifrar tu aplicación. sin embargo, es solo cuestión de tiempo hasta que los desarrolladores de la aplicación puedan encontrar la manera de superarlo. –

1

Hay una gran cantidad de información here sobre cómo ir desde un archivo DEX volver a la fuente de Java. Además, ¿ha mirado this blog post que aborda muchas de las formas de proteger su fuente?

+0

Buena respuesta rápida, pero prefiero ver. Algo de información aquí – Snake

+0

Bastante, no quería repetir todo lo que fue capturado muy bien en las otras dos publicaciones. – scorpiodawg

+0

Ojalá pueda aceptar dos respuestas .. +1 :) – Snake

1

Yo estaba pensando en esto y parece que si realmente quería para garantizar la aplicación de los piratas informáticos en realidad sólo hay 1 manera de hacerlo. Puede implementar todo tipo de métodos sofisticados para asegurar que su aplicación tenga licencia y se pague según lo descrito en el artículo de Google, pero lo único que se necesita es un buen hacker para descompilar su aplicación y encontrar dónde está el código y luego comentarlo o cambiar una función para siempre volver verdadero.

En su lugar, aplicar una parte de su aplicación que se requiere para su uso en JNI/NDK, y comprobar para su validación en dicho código. No tiene que ser un código extremadamente complicado, pero no se puede simplemente poner algo así como una función (por ejemplo, checkValidity) ya que un usuario podría comentar fácilmente la llamada java que llama al ndk. En su lugar, debe hacer alguna llamada a su ndk para que realmente haga algo que no sea trivial para que se ejecute su aplicación, algo que el usuario no puede simplemente comentar o cambiar con una función definida que hace lo mismo. Desde dentro del código ndk haga la verificación de la integridad/licencia de su aplicación y, si falla, mate la aplicación o lo que sea que deba hacer.

Para eludir esto, el pirata informático tendría que volver a implementar el código ndk o realizar una ingeniería inversa ... Lo cual debería ser mucho más complicado y no valdría la pena.

Obviamente, esto no es una solución simple y aún así no se garantiza su aplicación nunca está pirateada, pero debería ser mucho más difícil de romper que los otros métodos ..

+0

Awsome. Gracias por la respuesta. Realmente disfruté leyéndolo y creo que es una gran manera. Por lo general, los programas de 1 clic cambian la biblioteca LVL estándar que proviene de google, así que creo que necesito cambiar eso para incluir JNi/NDK. ¿Tiene un ejemplo/enlace a un tutorial sobre cómo implementar jni/ndk en android? Gracias – Snake

+0

pasando los programas de 1 clic para fallar en la eliminación de LVL, probablemente no sea demasiado difícil si sigue esas pautas. Sin embargo, lo que sería difícil es evitar que un buen pirata informático que entiende bien el código pueda eliminar el código de verificación de la licencia a mano con varias horas de trabajo. .. Siempre puede probar y ver si puede revertir su propio código con ellos antes de lanzarlo al mercado. –

0

Personalmente, creo que la ofuscación {Proguard, Dexguard} y native {.so} son una forma bastante efectiva de usar si se usan correctamente.

Definitivamente disuade a los jugadores '' con menos experiencia y sin duda complica la vida de incluso experimentados jugadores ''

No se limite a copiar/pegar los códigos de ejemplo androide de Google ....

Cuestiones relacionadas