Dalvik指令分析(二) 从java文件到dex

写这个系列文章是想了很久但是一直没有时间付诸行动,趁着这两天假期还没有结束,

赶紧动笔,怕上班了就没有时间再静下心来写这些文章,所以有点赶,表现在系列文章的

内容安排上就不是很合理,有些内容还需要丰富,但是聊胜于无吧,先写下再修改,如果

有一些反馈也可以根据反馈来修改。好了,开始第二篇文章。

这篇文章可以成为dx的HelloWorld,在这篇文章里我会介绍如果将一个java文件编译

成一个dex文件。ok,,go!

step1: 准备java文件,文件名HelloWorld.java,内容如下

public class HelloWorld {public void sayHello() {System.out.println("Hello World!");}} 多么熟悉的HelloWorld 🙂

step2:编写脚本,内容如下:

mkdir classesjavac -d classes src/*.javadx -JXmx500m –debug –dex –no-optimize –positions=none –no-locals \–dump-to=classes.lst –output=classes.dex classeszip test.jar classes.dex 这里需要做一些解释,首先利用javac编译java源文件,生成class文件,然后利用dx将

class文件转换成dalvik指令,并打包生成classes.dex,最后将dex打包成jar包。虽然只是

短短的几句话,但是dx进程的内部逻辑其实非常复杂,后续我会单独写一篇文章介绍dx的

过程。简单总结一下上面的编译过程:

.java ————-> .class ———-> .dex javac dx

对应的逆向过程如下:

.java <————- .class <———— .dex

JD-GUI dex2jar

step3: 执行上述脚本就会生成classes.dex文件

这篇文章主要是通过脚本来介绍java to dex的过程,后续文章会详细介绍dx的过程,以及dex

文件的结构。

走过的路成为背后的风景,不能回头不能停留,若此刻停留,

Dalvik指令分析(二) 从java文件到dex

相关文章:

你感兴趣的文章:

标签云: