資源簡介
用FlowDroid的靜態分析方法來分析android應用程序,描繪出android應用程序的函數調用圖

代碼片段和文件信息
package?flowdroidcg;
import?it.uniroma1.dis.wsngroup.gexf4j.core.EdgeType;
import?it.uniroma1.dis.wsngroup.gexf4j.core.Gexf;
import?it.uniroma1.dis.wsngroup.gexf4j.core.Graph;
import?it.uniroma1.dis.wsngroup.gexf4j.core.Mode;
import?it.uniroma1.dis.wsngroup.gexf4j.core.Node;
import?it.uniroma1.dis.wsngroup.gexf4j.core.data.Attribute;
import?it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeClass;
import?it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeList;
import?it.uniroma1.dis.wsngroup.gexf4j.core.data.AttributeType;
import?it.uniroma1.dis.wsngroup.gexf4j.core.impl.GexfImpl;
import?it.uniroma1.dis.wsngroup.gexf4j.core.impl.StaxGraphWriter;
import?it.uniroma1.dis.wsngroup.gexf4j.core.impl.data.AttributeListImpl;
import?java.io.File;
import?java.io.FileWriter;
import?java.io.IOException;
import?java.io.Writer;
import?java.util.List;
public?class?CGExporter?{
????private?Gexf?gexf;
????private?Graph?graph;
????private?Attribute?codeArray;
????private?AttributeList?attrList;
????public?CGExporter()?{
????????this.gexf?=?new?GexfImpl();
????????this.graph?=?this.gexf.getGraph();
????????this.gexf.getmetadata().setCreator(“liu3237“).setDescription(“App?method?invoke?graph“);
????????this.gexf.setVisualization(true);
????????this.graph.setDefaultEdgeType(EdgeType.DIRECTED).setMode(Mode.STATIC);
????????this.attrList?=?new?AttributeListImpl(AttributeClass.NODE);
????????this.graph.getAttributeLists().add(attrList);
????????//可以給每個節點設置一些屬性,這里設置的屬性名是?codeArray,實際上后面沒用到
????????this.codeArray?=?this.attrList.createAttribute(“0“?AttributeType.STRING“codeArray“);
????}
????public?void?exportMIG(String?graphName?String?storeDir)?{
????????String?outPath?=?storeDir?+?“/“?+?graphName?+?“.gexf“;
????????StaxGraphWriter?graphWriter?=?new?StaxGraphWriter();
????????File?f?=?new?File(outPath);
????????Writer?out;
????????try?{
????????????out?=?new?FileWriter(f?false);
????????????graphWriter.writeToStream(this.gexf?out?“UTF-8“);
????????}?catch?(IOException?e)?{
????????????e.printStackTrace();
????????}
????}
????public?Node?getNodeByID(String?Id)?{
????????List?nodes?=?this.graph.getNodes();
????????Node?nodeFinded?=?null;
????????for?(Node?node?:?nodes)?{
????????????String?nodeID?=?node.getId();
????????????if?(nodeID.equals(Id))?{
????????????????nodeFinded?=?node;
????????????????break;
????????????}
????????}
????????return?nodeFinded;
????}
????public?void?linkNodeByID(String?sourceID?String?targetID)?{
????????Node?sourceNode?=?this.getNodeByID(sourceID);
????????Node?targetNode?=?this.getNodeByID(targetID);
????????if?(sourceNode.equals(targetNode))?{
????????????return;
????????}
????????if?(!sourceNode.hasEdgeTo(targetID))?{
????????????String?edgeID?=?sourceID?+?“-->“?+?targetID;
????????????sourceNode.connectTo(edgeID?““?EdgeType.DIRECTED?targetNode);
????????}
????}
????public?void?createNode(String?m)?{
????????String?id?=?m;
????????String?c
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2015-12-14?14:06??flowdroidcg\
?????文件????????1004??2015-12-14?13:57??flowdroidcg\.classpath
?????文件?????????387??2015-12-14?13:49??flowdroidcg\.project
?????目錄???????????0??2015-12-14?13:49??flowdroidcg\.settings\
?????文件?????????598??2015-12-14?13:51??flowdroidcg\.settings\org.eclipse.jdt.core.prefs
?????目錄???????????0??2015-12-14?13:58??flowdroidcg\bin\
?????目錄???????????0??2015-12-14?13:59??flowdroidcg\bin\flowdroidcg\
?????文件????????5795??2015-12-14?13:59??flowdroidcg\bin\flowdroidcg\CGExporter.class
?????文件????????4326??2015-12-14?14:06??flowdroidcg\bin\flowdroidcg\CGGenerator.class
?????文件??????941963??2015-12-14?14:06??flowdroidcg\flowdroidCFG.gexf.gexf
?????目錄???????????0??2015-12-14?13:56??flowdroidcg\Refrenced?Libraries\
?????文件???????28108??2015-12-14?13:56??flowdroidcg\Refrenced?Libraries\Axm
?????文件???????72232??2015-12-14?13:56??flowdroidcg\Refrenced?Libraries\gexf4j-0.4.4-BETA.jar
?????文件??????182112??2015-12-14?13:56??flowdroidcg\Refrenced?Libraries\stax2-api-3.1.1.jar
?????文件??????482465??2015-12-14?13:56??flowdroidcg\Refrenced?Libraries\woodstox-core-asl-4.0.6.jar
?????目錄???????????0??2015-12-14?14:04??flowdroidcg\sootOutput\
?????文件???????????0??2015-12-14?14:02??flowdroidcg\sourcesAndSinks.txt
?????目錄???????????0??2015-12-14?13:58??flowdroidcg\src\
?????目錄???????????0??2015-12-14?13:59??flowdroidcg\src\flowdroidcg\
?????文件????????3280??2015-12-14?13:59??flowdroidcg\src\flowdroidcg\CGExporter.java
?????文件????????3911??2015-12-14?14:06??flowdroidcg\src\flowdroidcg\CGGenerator.java
- 上一篇:Android通用搜索頁的分析與封裝配套資源
- 下一篇:java數據結構課程設計
評論
共有 條評論