Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Referencia sobre Dalvik o Java Virtual Machines?

Estoy buscando en bytecode Dalvik actualmente, pero como me falta un fondo de compilador, estoy encontrando un poco difícil de entender el diseño. Estoy bastante seguro de que nadie ha escrito un libro sobre Dalvik (o podría estar equivocado) por lo que alguien puede sugerirme una referencia en la máquina virtual Java que contiene algunos ejemplos prácticos? En concreto, lo que me interesa son:

  • Entender cómo interpretar el código de byte generado
  • Utilizar las especificaciones de VM (Dalvik o Java) para descompilar el código de bytes en una representación intermedia y luego compilarlo de nuevo

En resumen, probablemente lo que estoy buscando es aprender código de bytes de ingeniería inversa para poder analizarlo por vulnerabilidades. ¿Alguna sugerencia?

  • Android Keystore - ¿se puede recuperar una clave de usuario por root si se establece en ese usuario?
  • Proveedor de contenido privado de Android?
  • Cómo proteger mi aplicación contra la piratería
  • Android: Determinar el tipo de seguridad de las redes wifi en el rango (sin conectarse a ellos)
  • Java.security.cert.CertPathValidatorException: Ancla de confianza para ruta de certificación no encontrada. Android 2.3
  • Secretos de OAuth en aplicaciones para móviles
  • Prácticas recomendadas (lo mejor para Android): autenticar a un usuario con acceso a Facebook o Google
  • Poste HTTP seguro en Android
  • 2 Solutions collect form web for “Referencia sobre Dalvik o Java Virtual Machines?”

    Para el material de referencia, nada mejor que los documentos dalvik. Usted puede encontrar estos en el subproyecto dalvik en AOSP, o ahora están disponibles en línea en http://s.android.com/tech/dalvik/index.html

    El formato Bytecode (o dalvik-bytecode.html en el proyecto dalvik) es probablemente el que más le interesa. Formato .dx (dex-format.html) también es útil, al igual que Formatos de instrucciones (instruction-formats.html )

    Para obtener información más general sobre el bytecode, consulta http://code.google.com/p/smali/wiki/Registers y http://code.google.com/p/smali/wiki/TypesMethodsAndFields

    Definitivamente querrá algunas herramientas. Estoy naturalmente muy parcial a smali / baksmali , que es el único ensamblador / desensamblador par actualmente disponible. También hay un desensamblador llamado dedexer (pero no ensamblador), y dexdump, que viene con la base de código AOSP y proporciona un volcado de bajo nivel de archivos dex – no sólo el bytecode, pero todas las estructuras dex también (baksmali tiene salida similar , Con la opción -D).

    También podría interesarle apktool , que utiliza smali / baksmali, pero también tiene la capacidad de revertir los archivos "xml compilados" en un apk.

    Hay un par de herramientas por ahí que convierten bytecode dalvik de nuevo a bytecode java, aunque no creo que estén 100% todavía – undx y dex2jar

    Ya hay herramientas para los archivos .dex de ingeniería inversa para generar una representación legible por humanos de los códigos de bytes. Uno de los más populares es baksmali, que puede encontrar aquí: http://code.google.com/p/smali/ .

    Una descripción de los códigos de bytes se puede encontrar fácilmente por Googling. Aquí estaba el tercer resultado: http://www.netmite.com/android/mydroid/dalvik/docs/dalvik-bytecode.html .

    Si usted es diseños de ingeniería inversa, necesitará un convertidor binario-xml-to-xml también. Hay otra pregunta de desbordamiento de pila que menciona algunas herramientas para hacer eso: Parse versionCode de archivos androide apk

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.