Использование Soot программно для анализа исходных файлов.java
Я только начал играть с Soot, чтобы анализировать файлы.java программно. Судя по тому, что я прочитал, Саот кажется очень мощным инструментом для анализа исходного кода, но большая часть материала, который я нашел в Интернете, рассказывает об использовании его в качестве инструмента командной строки.
Мне нужно программно загрузить классы из файлов.java в заданном каталоге, построить график зависимости программ (PDG) и выполнить некоторые программные фрагменты. Я все еще не уверен, предлагает ли Саута нарезку, но я могу реализовать это сам, как только у меня будет PDG.
Чтобы начать, я попробовал использовать код ниже:
Options.v().set_whole_program(true);
Options.v().set_soot_classpath("...");
SootClass c = Scene.v().loadClassAndSupport("MyClass");
c.setApplicationClass();
CHATransformer.v().transform();
CallGraph cg = Scene.v().getCallGraph();
Однако это не работает. Это застревает на loadClassAndSupport
Звоните на несколько секунд, и тогда моя программа просто внезапно существует, без каких-либо исключений или чего-либо еще.
Если кто-то пытался использовать Soot программно, есть ли другие опции, которые мне нужно установить? Или вы можете указать мне на учебник, в котором они программируют сажу с нуля?
1 ответ
Вы не должны использовать loadClassAndSupport. Вместо этого вставьте "Трансформатор сцены". Нарезка может быть достигнута с помощью расширения FlowDroid для сажи. Он поддерживает нарезку кода Android и Java.