soot之Eclipse插件

源链接:https://github.com/Sable/soot/wiki/Running-Soot-as-Eclipse-Plugin 

Eclipse集成soot

注:该插件无法安装在luna版本下,建议使用kepler版本。

Soot是一个Java二进制代码分析和转换框架,它提供了一个用于建立中间表示层(即IR)、分析和转换的Java API,同时支持class文件的注解(annotation)。最近它还被进一步扩展以更好的支持Dalvik/Android二进制码的分析和转换。


1.Soot用于Eclipse插件:用户总是希望他们的开发成果有着简单的接口和开发平台。而The Soot-Eclipse插件在Eclipse中集成了Soot,用户可以:

  • 自动优化class文件并使用更加先进的优化选项
  • 导入class文件并使用Dava反编译它们
  • 使用可以高亮显示的jimple编辑器
  • 在source和IR层观察参数信息
  • 使用交互式控制流图进行分析

此插件可运行在Eclipse3.3版本上(测试版本为3.3.2)

2.Eclipse安装Soot插件的步骤:

  • 菜单中Help-> Software Updates (install new software) 
  • 点击Add,name自己填一个,地址用http://sable.github.io/soot/eclipse/(原文中的地址已经不能用了)
  • 一路next,重启,搞定
注:原文提到eclipse会提示无法找到GEF或Draw2D,这个我没有遇到。
译者注:Java版本一定要用1.7或者以下版本,1.8有些新特性不支持!!

3.Soot-Eclipse插件的使用:建立一个工程给Soot使用,一个Eclipse工程的结构如下所示,"src"文件夹存放源代码文件,"bin"文件夹存放class。Soot会自动识别这些文件的位置。

转换不同的IR:Eclipse插件可以很容易的将java源文件或者二进制文件转成Jimple或者Grimp中间表示层,或者逆向转换。右键点击.java文件,并选择合适的选项,如图所示:

SootOutput:Soot将生成的文件放入工程当前目录下的“SootOutput”文件夹中,这个过程会在console视图下显示。

显示数据流分析的结果:Soot可以使用三种不同的标签来显示数据流分析的结果:String Tag _: 当鼠标悬停在标签上时显示string; _Colour Tag:颜色高亮显示标记的stmt或者值;Link Tag:从标记过的stmt或者value跳转至另一个stmt,通过点击源stmt或value(这句翻的有问题,希望哪位能给点帮助)。例如,右击Testclass,选择 Process Source File –> Run Soot…. 在output选项中选择jimple,在Phase Options/Jimple Annotation Pack选项中激活Reaching Defs Tagger,然后点击run。此时打开.java文件会发现有些不一样的东西,如图。我们可以在我们自己的分析中加入各种各样的标签。

扩展Soot:使用插件扩展Soot很简单,我们甚至在Eclipse中提供了稳定的示例。点击File -> New -> Example然后选中其中一个

soot将新建一个java工程作为项目的载体,输入项目所有必要的信息,Eclipse然后会自动显示示例文件

注意到是soot库一部分的PackManager等文件访问类型,工程是如何访问库的?soot插件自动提供了指向soot库的路径变量SOOTCLASSES,对于示例工程来说,变量是自动添加的。如果你想不使用示例工程扩展soot,你需要自行添加变量。

假设现在我们想将我们新的BodyTransformer应用到Testclass类。再一次,右击Testclass.java,Soot -> Process Source File -> Run Soot。
只有在此时我们需要选择SootMain Class标签然后按照下图所示填写值。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值