Я пытаюсь отобразить все строки, используемые в вызове метода, используя структуру анализа программ SOOT. Я могу проверить StringConstant, но как мне получить значения для RefType? Вот пример кода:
for (Value va : iv.getInvokeExpr().getArgs()) {
System.out.println("[ARGS : TYPE] " + va.getType() + " with ");
if (va instanceof StringConstant) {
System.out.print(va + " ");
} else if (va instanceof JimpleLocal) {
JimpleLocal jl = (JimpleLocal) va;
if (jl.getType() instanceof RefType) {
RefType rt = (RefType) jl.getType();
SootClass cls = rt.getSootClass();
String clsName = cls.getName();
// recursion possible - backward analysis ?
if(clsName.equals("java.lang.String")){
System.out.print("GOT STRING CLASS - HOW TO GET THE VALUE ?");
}
}
}
}
Я новичок в области анализа программ, любые указатели будут очень полезны.
благодаря
У StringConstant был метод getValue Methode. Просто введите значение для этого типа. Для локальных жителей ваши вопросы не имеют смысла, поскольку они являются переменными, а не константами.