Interprocedural distributive environment problem (IDE) & EPICC &SOOT

Slides:



Advertisements
Similar presentations
开发入门 一个 android 初学者的心得与体会. 前言 两周前张老师通知我说,让我根据教练助手的学习与开发的过程讲下 android 开发的心得与体会,我觉得自己在这么多 Android 前辈大佬面前讲 android 简 直是班门弄斧。由于是刚入门的初学者,水平有限,很多方面还很不足,对 错误或不周到之处欢迎批评指正。顺便还得提下,我这个标题有抄袭积聚童.
Advertisements

環境游離輻射 ( 六 ) 輻射與核能發電. 媽!這是我上班的 地方-核電廠。 地方好寬闊喔! 聽說日本原子彈爆炸死好幾 萬人,阿榮啊!你在這裡上 班,安全嗎?
19 《山岳的形成》. 褶皱山 常见形态:连绵的山体 代表:喜马拉雅山脉、阿尔卑斯山脉、 安第斯山脉.
《小狗包弟 》之 从阅读到写作 学校:和风中学 年级:高一 参赛者:彭龙英. 预习检测一 思考:同学们读完作者与包弟 的故事后,说一说作者所表达的情 感是什么?
Mooctest.net- 慕测平台 南京大学陈振宇团队 刘子聪. 慕测平台 特点 真实编程环境( IDE ) 实时编程 / 测试评分 全程编程行为跟踪 自定义度量评估方式 平台免费、平台开放、接口开放.
从第六次全国人口普查主要数据看中国人口国情变化
虹膜识别健康养老服务智能系统项目.
探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆  探究活动课:互联网+历史素材阅读与研讨 古代中国的选官制度 黄天庆 
職校、五專群科簡介.
近年来,出现了一些制作粗糙、违背史实甚至常理的“抗战雷剧”,社会上也出现了一股“戏说”抗战剧的不良风气。
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
©wequick GalenLin All rights reserved
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
江苏省工程造价管理协会 工作报告 2015年4月21日 扬州.
浪漫 碰撞 蜕变 专题八 19世纪以来的文学艺术.
德国波恩明斯特广场修建的贝多芬铜像( 1845年)
101年8月份 嘉義市道路交通安全聯席會報 酒駕行為與肇事現況分析 主講人:內政部警政署交通組科長張夢麟 1.
高校邦在线学习平台 学生学习手册 北京高校邦科技有限公司.
未来协同项目计划书.
第九章日治時期的台灣(下).
OUTLINE Android app Devolpment Flow App反組譯解說 實例 簽名詳解 DalvikByteCode
培训教案 公司审计部
网络游戏对大学生生活的影响 英本1班 鞠申镅 汪晨茹 沈秋云 元文杰 段祺琪.
基隆市立八斗高中 102 學年度第二學期 402 班『親師座談』
103學年度第1階段 志願選填試探後輔導作為 成效檢討與精進建議
活动主题:佛山智造 中国骄傲 随着互联网、云计算、大数据以及移动互联网的快速发展,技术不仅仅是一种工具,正加速重构着品牌的新格局。
荷福威士顿机器人科技有限公司 上海荷福集团
毛泽东思想和中国特色社会主义理论体系概论
四川省卫生监督移动 执法终端介绍 发言人:陈成身 四川省卫生执法监督总队.
獎補助經預計支用報告 105年.
建立Android新專案 建國科技大學 資管系 饒瑞佶 2010/10.
APP課程:Android程式設計開發環境與工具介紹
ANDROID與OSGI平台整合.
Android開發環境建置與設定 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
安裝與設置 Android 發展環境 靜宜大學資工系 蔡奇偉副教授 ©.
Ch5 Android應用程式的主要組成.
教務行政資訊系統 簡介 資訊科技中心 資訊系統組 徐振琦
建立Android新專案 Android智慧型手機程式設計 程式設計與應用班 建國科技大學 資管系 饒瑞佶 2012/4 V1
Android手动测试实践 ——绮珠.
Android 视频教程简介.
App Inventor 2體驗 靜宜大學資管系 楊子青
华东理工大学 关于新校园卡功能启用的相关说明 2018年09月07日.
TinyOS开发环境安装 基于Ubuntu14.04.
01.Java语言概述 讲师:复凡.
金蝶KIS商贸同步服务器1分钟教程 1.设置 2.设备授权 3.同步 4.查看日志 5.Android端下载.
Android 开发入门.
Android 开发入门.
課程網站
空调手机监控用户注册及使用 用户注册 使用说明.
第二章 数控车削加工常用指令及应用 1.常用辅助功能指令 2.直线车削指令——G01/G00 3.圆弧车削指令——G02/G03
App Inventor 2體驗 靜宜大學資管系 楊子青
行動應用App基本資安檢測實驗室 檢測服務說明
生命教育 媒材應用分享 電影 天外奇蹟(UP) 華盛頓高中 巫孟容.
金中移动抄表系统培训手册 广西金中软件有限公司 2015年8月7日.
中国农业科学院博士后学术论坛 博士后基金申请的经验及体会 中国农业科学院生物技术研究所 秦 华 博士
102學年度下學期 班親會 五年仁班 楊曉逸老師.
實驗十六:匯出APK安裝檔與軟體上架.
歹徒透過通訊軟體詐騙手法1-冒用身份 若被害人通訊軟體「允許被加入好友」為開啟狀態 駭侵Google帳戶取得通訊錄
第二階段「校園徒步區建置」 執行成果報告.
學校/系所名稱:樹德科技大學/資訊工程系 參賽隊名:宇宙小超人 參賽同學:沈盈哲、候坤誠、康庭飴、蔡佩諭 指導老師:程毓明教授
方格紙上畫正方形.
第6章 Android客户端模块实现 QQ群(App开发案例教程--清华) :
美和科技大學資訊科技系 助理教授 美和科技大學資訊科技系 學生士
Usage Eclipse 敏捷方法工具介紹 實驗室網站:
為民服務白皮書 台灣電力公司彰化區營業處  彰化區營業處 為民服務白皮書 誠信 關懷 服務 成長 1.
实验课程学习手册.
云控APP说明书 适用于云控平台配置.
云控APP说明书 适用于云控平台配置.
歹徒透過通訊軟體詐騙手法1-冒用身份 若被害人通訊軟體「允許被加入好友」為開啟狀態 駭侵Google帳戶取得通訊錄
Presentation transcript:

Interprocedural distributive environment problem (IDE) & EPICC &SOOT

Soot相关网址 Soot 文档 http://www.sable.mcgill.ca/soot/tutorial/index.html Soot 命令行示例 http://www.bodden.de/2008/08/21/soot-command-line/ Soot eclipse插件 http://www.bodden.de/2008/08/30/soot-eclipse-plugin-tutorial/ Soot 中间过程数据流分析 http://www.bodden.de/2008/09/22/soot-intra/ Soot 自定义分析程序入口点 http://www.bodden.de/2012/07/26/soot-custom-entry-points/ 使用Soot分析Android APP http://www.bodden.de/2013/01/08/soot-android-instrumentation/

Soot 一个开源的、不断扩展的java分析工具,可以分析(class;java;jimple) 实现了向前、向后、向前分支流分析

SOOT Android 支持对Android 中dex文件分析 Dex   Jimple -android-jar [android platform path]  -process-dir [ apk path] -outputformat […..] 其他参数见 Soot options 类

Options.v().set_src_prec(Options.src_prec_apk); 预处理加载apk中dex代码 Soot 需处理main函数,构造伪main函数(Android)

设置soot参数 加载必要的类 构造伪main 解析问题 定义IFDS/IDE问题 难点 设置入口点 利用问题结果进行分析(难点)

实现数据流分析要解决的问题 初始化流 数据流函数问题DefaultIDETabulationProblem getNormalEdgeFunction getCallEdgeFunction getReturnEdgeFunction getCallToReturnEdgeFunction

Interprocedural distributive environment problem (IDE) 程序表示 点:由一个环境environment表示(符号到值的映射) 操作:有一个环境转换器来表示(distributive environment transfer) Data fact:D  L Data fact 属于 Env( D, L)

G*=(N*, E*) G*: G1,G2,……, Gx表示函数x的有向图,Gmain表示main函数的有向图 每个图有唯一Sp,Ep 一个函数调用用两个节点表示Cs, Er

一个环境转换器 t:Env(D,L)  Env(D,L) ,作用在边上面 一个IDE数据流问题,需要对有向超图中所有的边都分配一个环境转换器,由环境转换器对边进行解释,以期获得从开始点(source)到目标点(target)的结果

IDE Problem = (G*,D,L,M) G* 有向超图 D 变量(符号)集合 L 格(值域) E*(Env(D,L)  Env(D,L) ), 对超图中所有的边分配一个环境转换器

Epicc 基本参数设置 见options类

对apk中所有的类都构造一个伪main函数

将所有类都作为入口点加入soot,自动构造CFG 寻找真的有Intent类选为入口点 只有有Intent对象的类才是要分析的类,选为入口点

构造tranformer,IDEProblem,解析器,问题求解定义 重新设置入口点类 构造tranformer,IDEProblem,解析器,问题求解定义 Soot执行分析

IDE问题流函数(环境转换器) getNormalFlowFunction getCallFlowFunction getReturnFlowFunction getCallToReturnFlowFunction

只做了componentName,Intentfilter,Intent,Boudle的转换模型 Contentprovide 预留,但未做

想法 可否根据EPICC结果,在startactivity,startService等函数地方进行代码替换,这样可以在一个main函数中把Android的所有组件都连接起来,可以很直接的获得全局的数据流路径为静态分析提供帮助。 如:if() activity1() else() activity2()

InvokeExpr invokeExpr = stmt. getInvokeExpr(); if(invokeExpr InvokeExpr invokeExpr = stmt.getInvokeExpr(); if(invokeExpr.getMethod().getName().equals("onDraw")) { Local tmpRef = addTmpRef(b); Local tmpString = addTmpString(b); // insert "tmpRef = java.lang.System.out;" units.insertBefore(Jimple.v().newAssignStmt( tmpRef, Jimple.v().newStaticFieldRef( Scene.v().getField("").makeRef())), u); // insert "tmpLong = 'HELLO';" units.insertBefore(Jimple.v().newAssignStmt(tmpString, StringConstant.v("HELLO")), u); // insert "tmpRef.println(tmpString);" SootMethod toCall = Scene.v().getSootClass("java.io.PrintStream").getMethod("void println(java.lang.String)"); units.insertBefore(Jimple.v().newInvokeStmt( Jimple.v().newVirtualInvokeExpr(tmpRef, toCall.makeRef(), tmpString)), u); //check that we did not mess up the Jimple b.validate(); }