Использование 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.

Другие вопросы по тегам