Descomposición de un androide apk?
Posible duplicado:
Android: Cómo obtener código fuente de un archivo APK
¿Es posible que alguien de-compilar mi archivo androide apk y ver las variables públicas o constantes declaradas en mis paquetes?
Mi clave compartida que he definido como constante estática pública luego se exponen …
Cuando deobfuscate código (aquí es un tutorial de vídeo que puede dar una idea: ¿Cómo leer el código ofuscado ), usted será capaz de ver todos los valores codificados como, por ejemplo,
private String key = "Au8aujEWS(jol#9jSd9";
Excepto que no van a ver los nombres de las variables:
private String a = "Au8aujEWS(jol#9jSd9";
Mediante el uso de herramientas como Sunny mencionado , usted será capaz de obtener todo el código cerca de su estado original.
Voy a dar un ejemplo; Si tenía el siguiente código original:
public class MainActivity extends Activity { private String key = "Au8aujEWS(jol#9jSd9"; public void onCreate(Bundle savedInstance) { //Some code here } } public class OtherActivity extends Activity { ... }
Después de ser compilado, y decompiled detrás en el código de java, parecería algo como esto:
public class A extends B { private String a = "Au8aujEWS(jol#9jSd9"; public void a (C b) { //Some code here } } public class D extends B { ... }
Y mediante el uso de conjeturas educadas y herramientas de refactorización, usted será capaz de deobfuscate código, por lo que con suficiente dedicación y trabajo duro la gente será capaz de ver todo su código.
Recomiendo encarecidamente que no haga su seguridad totalmente dependiendo de las cosas codificadas en las aplicaciones cliente. Por supuesto, depende de lo importante que es para su situación no dar a los hackers la posibilidad de acceder a la información que está tratando de asegurar.
Sí, es posible descompilar un apk.
Dependiendo del nivel de ofuscación puede tomar algún tiempo, pero una persona dedicada / doblada eventualmente la descompilará.
Puedes probar herramientas como
# Apktool
Smali
# Mostrar aplicación Java para Android
Fuente: http://geeknizer.com/decompile-reverse-engineer-android-apk/
[UPDATE 1] Aquí hay 2 más opciones para usted:
# Decompileandroid.com
# Javadecompilers.com/apk
Sugerido por @ AndrewRukin
[UPDATE 2]
Otra herramienta: jadx
Sí, es posible, pero no es tan simple – alguien realmente debe tener una razón fuerte para hacerlo.
Dependiendo de la cantidad de seguridad que necesita, puede construir su clave en el tiempo de ejecución en lugar de guardarlo en la cadena final, descargarlo desde Internet (pero esta manera debe ser asegurado aún mejor, puede no valer la pena) o dejar que algunos Otro servidor externo realiza el trabajo en lugar de su aplicación, especialmente si está hablando de pagos y almacenando su clave pública. En ese caso, la clave no se incluirá en su aplicación.
Además, recuerde hacer la vida del hacker más difícil mediante el uso de herramientas de ofuscación mencionadas como ProGuard: http://developer.android.com/tools/help/proguard.html .
Sí, los APK de Android se pueden descompilar fácilmente. Las variables públicas, las constantes y sus valores se pueden ver cuando se descompilan incluso si el código es ofuscado.
Cuando se ofusca un código, los nombres de las variables se renombran. El valor de sus variables permanece igual. La ofuscación es diferente del cifrado. Como tal, su código no está cifrado cuando ofusca su código.
Un ejemplo de un código normal:
String str = "This is a string.";
Un ejemplo de un código ofuscado:
String a = "This is a string.";
Como se puede ver arriba, el nombre de la variable se cambió de "str" a "a", pero su valor sigue siendo el mismo. La ofuscación funciona al renombrar los nombres de las variables a nombres no lógicos cortos que hacen que el tamaño del archivo sea menor y hacer que el código sea más difícil de entender.
Lo que hago es obfuscate mi código completo y luego cifrar mi clave y descifrar en algún lugar de mi programa. Aunque entiendo que un hacker determinado y paciente todavía puede romper mi llave, le hará las cosas más difíciles.