Predecir el comportamiento de los programas antes de su ejecución es cada vez más importante, especialmente teniendo en cuenta que estos son cada vez más complejos y son utilizados frecuentemente en situaciones críticas. El análisis estático de programas es el proceso por el cual el comportamiento de los programas es analizado sin llegar a ejecutar su código. A la hora de analizar código de bytes una práctica habitual consiste en: (1º) transformar o decompilar el código a una representación de más alto nivel, y (2º) formular el análisis sobre dicha representación. Esta tesis contribuye a mejorar el estado del arte en la transformación y el análisis de lenguajes de código de bytes, en concreto: (1) proponiendo e implementando un esquema formal para la decompilación automática por compilación interpretativa de programas de código de bytes (con orientación a objetos) a representaciones de más alto nivel, en particular utilizando programación lógica; (2) estudiando las aplicaciones prácticas que se tienen gracias a disponer de dichas representaciones; y (3) diseñando e implementando un análisis de consumo de memoria para lenguajes de código de bytes con recolección de basura.