¿Cómo funciona el método de parche AndFix?

Aprendí recientemente de una librería Android AndFix que permite el método de actualización en vivo. Ahora, por lo que sé, Dalvik no permite la manipulación en tiempo de ejecución de bytecode o dex.

¿Puede alguien dar una buena explicación sobre cómo AndFix vive el parche?

Mirando las fuentes, puedes ver el mecanismo de parcheo para Dalvik aquí . La función dalvik_replaceMethod() está modificando el estado interno de Dalvik, cambiando la estructura de Method para apuntar a un método de reemplazo.

No modifica el DEX en disco o en memoria, sólo las rutas de las llamadas de método a un método de reemplazo. Este enfoque es altamente dependiente de la versión, ya que los cambios en el Method o la forma en que funcionan los métodos romperán las cosas. Dalvik no ha cambiado mucho desde mediados de 2011, lo que lo hace fácil, pero si nos fijamos en el directorio de "arte" cercano se pueden ver diferentes implementaciones para cada versión principal de Android.

  • ¿Cuál es la mejor estrategia para recuperarse de un error - descuidando el registro donde ocurre el error
  • ¿Cómo diferencia exactamente JVM de Dalvik y / o ART?
  • ¿Es el modelo de memoria de Dalvik el mismo que el de Java?
  • Cómo depurar "com.android.okhttp"
  • Error de Dalvik con JRuby con SL4A
  • ¿Puede el código nativo causar corrupción de memoria en código Java en Android?
  • Constantemente ... DeviceMonitor] No se pudo iniciar la supervisión
  • No se puede ejecutar dex: se superó el límite superior de GC en Eclipse
  • Interpretar entrada de Logcat: threadid = 8: suspendido después de deshacer (sc = 1 dc = 1 s = Y)
  • La biblioteca de terceros se agrega bajo el directorio dexedLib, pero la biblioteca no tiene classes.dex
  • ¿Fue Dalvik portado a otras plataformas (por ejemplo, Linux, Windows, etc.)?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.