一个Java程序分析与变换框架.PDF

  1. 1、本文档共20页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
一个Java程序分析与变换框架

一个Java程序分析与变换框架 过程间分析 唐浩 tanghao13@ 由北京大学信息科学技术学院熊英飞研究员主讲的 《软件分析技术》课程 2015.11.10 主页 http://sable.github.io/soot/ 主页 http://sable.github.io/soot/ • History • Subsequent Products: FlowDroid … Soot: Input Output • Input :Java源代码 • Output :程序分析的结果(例如活跃变量、指 针指向集合) Q: 分析Java源代码首先应该如 何处理? • 困难:直接分析字符串,难以知悉代码结构 • 提示:现代高级语言编译一个(第一个?)关键步骤 • 答案:转为 中间代码 • 词法分析、句法分析、语义分析(、代码变换) • 为什么要转成中间代码? • 保留源码信息(映射关系明确) • 方便机器理解(简单化、结构化) 面向程序分析的中间代码 • 直接利用Java 中间代码Bytecode (字节码) • 太贴近机器码(为执行而设计) • 语句类型达199种 • /wiki/Java_bytecode • /wiki/Java_bytecode_instruction_listi ngs • 基于栈的代码 面向程序分析的中间代码 • 直接利用Java 中间代码Bytecode (字节码) • 基于栈的代码 面向程序分析的中间代码 • Soot的中间代码——适合程序分析 • Baf • Jimple • “Jimple is the principal representation in Soot. The Jimple representation is a typed, 3-address, statement based intermediate representation.” • 实际转换过程:source code - bytecode - Jimple • 15种语句 • Shimple • Grimp • Dava “A Survivors Guide to Java Program Analysis with Soot”: http://www.brics.dk/SootGuide/ 面向程序分析的中间代码 • Jimple http://www.iro.umontreal.ca/~dufour/cours/ift6315/docs/soot-tutorial.pdf 面向程序分析的中间代码 • Jimple http://www.iro.umontreal.ca/~dufour/cours/ift6315/docs/soot-tutorial.pdf 上机实践(1): JavaJimple • 命令行执行Soot • 注意设置-soot -class-path(-cp) • 输出为Jimple 的选项:-f J • 扩展阅读:http://www.bodden.de/2008/08/21/soot- command-line/ • 编写Java程序执行Soot • 模拟命令行执行Soot • soot.Main.main(args); Visualization • eclipse updates • /Sable/soot/wiki/Running-Soot- as-Eclipse-Plugin • Eclipse插件安装地址: • http://www.s

文档评论(0)

l215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档