[Soot学习笔记][3]通过Soot API生成Hello World程序
周末的时候,抽时间继续学习了一下Soot。主要是看这个页面:http://www.sable.mcgill.ca/soot/tutorial/index.html 中第二栏“Using Soot as a Compiler Framework”中的最基础的教程:Creating a Class File from Scratch,这个教程的PDF文件可以点击此处下载。
通过昨天的学习,明白了这个教程的意义,是通过手动调用Soot API生成Hello World程序这种方式来了解基于Soot框架的最基本编程方法,熟悉Soot中Scene,SootClass等类的基本使用方法。下面以Soot 2.4.0为例,说明配置Soot Framework的方法。
一、首先需要配置Soot的集成开发环境,在这个页面中:http://www.sable.mcgill.ca/soot/soot_download.html 选择“sootall-2.4.0.tar.gz”,下载后解压,生成文件夹“sootall-2.4.0”。
二、其次,要运行上面教程的例子,可以在:http://www.sable.mcgill.ca/soot/tutorial/createclass/Main.java 下载源代码。在Eclipse中选择“File”——“New”——“Java Project”,任意命名并创建好工程后,点击下载的“Main.java”文件,在新建的工程的“src”图标上点击右键——粘贴,就把刚下载的文件导入到新建工程的src目录中了。
三、将Main.java导入后,可以看到Eclipse IDE会报错,这时在新建工程名上点击右键——“Properties”——“Java Build Path”——“Add External JARs”——选择刚才第一步中解压好的文件夹“sootall-2.4.0”中的“soot-2.4.0\lib”文件夹中的三个jar包,导入到新建工程中。可以看到IDE报错消失。
以上三步配置好Soot Framework后,就可以正常运行Main.java文件了,实际上这个文件的思想很简单。我们要写一个HelloWorld程序,需要 1.引入JDK相应开发包;2.建立一个类;3.建立一个main method和其他method;4.实现method的内部实体;5.最后编译生成class文件。而上面这个Main.java程序实现的,就是把我们上面这5步通过调用Soot API实现(和直接实现相比在底层,是介于字节码和Java语言之间的IR(中间表示,Intermediate Representation),所以实现代码更多一些,但是这个文件有助于我们理解Soot的基本调用方法及IR),当我们理解了以上几点,就很容易看懂Main.java的主要内容了。
上面代码运行后,在创建的工程的“sootOutput”文件夹中,看到我们手动创建的HelloWorld.class文件,该文件可以正常运行。
【未完待续】