作者:超_级如新公司 | 来源:互联网 | 2023-05-19 01:11
IamtryingtouseSootspaddleframeworktodocontextsensitivepointstoanalysisforandroid
I am trying to use Soot's paddle framework to do context sensitive "points to" analysis for android apps having 20KLOC-50KLOC of Java code. I have modified soot to have multiple entry points as apps don't have a main method. When I run the analysis it throws following exception
我正在尝试使用Soot的paddle框架对具有20KLOC-50KLOC Java代码的Android应用程序进行上下文敏感的“指向”分析。由于应用程序没有主要方法,我修改了soot以具有多个入口点。当我运行分析时,它抛出异常
Exception in thread "main" java.lang.RuntimeException: Value 65543 was too large in domain soot.jimple.paddle.bdddomains.MethodDomain!
at jedd.internal.Domain.setBits(Domain.java:62)
at jedd.internal.Jedd.literal(Jedd.java:158)
I increased the value 14 in SigDomain(14) in SigDomain.jedd file in paddle source code which caused the analysis to run much longer but still at the end it failed giving the same exception. (I have also increased the stack size and heap size of jvm to 1 and 4 GB). If I set this value SigDomain(14) too large like ~20000 the paddle analysis doesn't even start.
我在paddle源代码中的SigDomain.jedd文件中增加了SigDomain(14)中的值14,这导致分析运行得更长但仍然在最后它给出了相同的异常。 (我还将jvm的堆栈大小和堆大小增加到1和4 GB)。如果我将此值设置为SigDomain(14)太大,如~20000,则桨分析甚至不会启动。
I have following options for paddle:
我有以下桨叶选项:
opt.put("verbose","true");
opt.put("bdd","true");
opt.put("backend","javabdd");
opt.put("context","kcfa");
opt.put("k","2");
opt.put("propagator","auto");
opt.put("conf","ofcg");
opt.put("order","32");
opt.put("q","auto");
opt.put("set-impl","double");
opt.put("double-set-old","hybrid");
opt.put("double-set-new","hybrid");
opt.put("pre-jimplify","false");
PaddleTransformer pt = new PaddleTransformer();
PaddleOptions paddle_opt = new PaddleOptions(opt);
pt.setup(paddle_opt);
pt.solve(paddle_opt);
soot.jimple.paddle.Results.v().makeStandardSootResults();
1 个解决方案