Red de conocimiento informático - Conocimiento informático - Ejemplo de cómo realizar la descompilación ODEX

Ejemplo de cómo realizar la descompilación ODEX

Descompilar archivos APK normales:

Para descompilar archivos APK/DEX normales, existen muchas herramientas, entre ellas:

ByteCode Viewer: una herramienta de integración visual, pero, para ser honesto, no muy bueno, no lo suficientemente estable y la calidad del código generado es mediocre.

dex2jar jd_gui: La combinación de estas dos herramientas está bien, es un poco más engorrosa que ByteCode Viewer, pero más estable y la calidad del código generado es promedio.

Descompilar archivos ODEX:

Después de Android 5.0 Lollipop, Google usó ART para reemplazar el Dalvik anterior. Para aplicaciones normales, todavía podemos usar el método anterior para descompilar el archivo dex en Java. código fuente. Pero para las aplicaciones preinstaladas, especialmente tiendas de aplicaciones, reproductores, etc., encontrará que no hay un archivo class.dex en el archivo apk de estas aplicaciones, pero hay un archivo .odex en su subdirectorio. ¿Cómo descompilar este archivo odex? Lo busqué en Google y sé que debería usar baksmali, pero descargué varias versiones de github y ninguna funciona e informa varios errores diferentes.

El siguiente es el método de operación específico:

1. Descargue el paquete de herramientas desde aquí y descomprímalo localmente. La versión baksmali aquí es 2.0.3. Las diferentes versiones de baksmali se dirigen a diferentes núcleos de Android. A veces, las versiones más nuevas de baksmali no funcionan bien.

2. Abra el directorio donde se encuentra la herramienta, mantenga presionada la tecla Mayús y haga clic derecho para abrir la ventana de comandos de Windows

3. /p>

4. Ejecute en la ventana de comandos: oat2dex.bat *.odex. En circunstancias normales, debería mostrarse información como OK. Si se produce un error, el archivo no se puede convertir y no es necesario intentar nada más.

5. Ejecute oat2dex.bat *.odex temp.dex. Se creará un archivo temp.dex después de la ejecución.

6. Ejecute java -jar baksmali-2.0.3.jar -a 21 -x temp.dex -o source . Después de ejecutarlo, se creará una carpeta de código fuente y se descompilará temp.dex. en esta carpeta. -a 21 indica la versión 21 del kernel de Android

7. Ejecute java -jar small-2.0.3.jar -a 21 source -o Classes.dex y descompile en Classes.dex.

Nota: en comparación con el archivo Classes.dex local, el archivo Classes.dex descompilado de esta manera todavía carece de cierta información, por lo que el código Java generado al descompilar este archivo Classes.dex es más legible.

8. Utilice la herramienta en línea JADX para descompilar clases.dex en código java.

8.