本文整理汇总了Java中soot.jimple.internal.JAssignStmt.getRightOp方法的典型用法代码示例。如果您正苦于以下问题:Java JAssignStmt.getRightOp方法的具体用法?Java JAssignStmt.getRightOp怎么用?Java JAssignStmt.getRightOp使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类soot.jimple.internal.JAssignStmt
的用法示例。
在下文中一共展示了JAssignStmt.getRightOp方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: readKeysFromTag
import soot.jimple.internal.JAssignStmt; //导入方法依赖的package包/类
private ArrayList<String> readKeysFromTag(Stmt stmt, Value arg) {
ArrayList<String> reachingDef = new ArrayList<String>();
// Value putStringArg = bundleLoc.getValue();
StringConstant strVal = StringConstant.v("dummy");
if (arg instanceof StringConstant){
strVal = (StringConstant) arg;
reachingDef.add(strVal.value);
} else {
// otherwise we have to ask for reaching def.
for (Tag tagEntity : stmt.getTags()) {
if(!(tagEntity instanceof LinkTag)) continue;
LinkTag ttg = (LinkTag) tagEntity;
if ( !(ttg.getLink() instanceof JAssignStmt)) continue;
JAssignStmt asst = (JAssignStmt) ttg.getLink();
// FIXME:can not deal with inter-proc now!
if (asst.getLeftOp().equals(arg)) {
// assert (asst.getRightOp() instanceof StringConstant);
if (asst.getRightOp() instanceof StringConstant) {
strVal = (StringConstant) asst.getRightOp();
String bundleKey = strVal.value;
bundleKey = bundleKey.replaceAll("[\\s]+", "_");
reachingDef.add(bundleKey);
} else { //may be function call or private field from inter-proc.
//reportUnknownRegister(stmt, arg);
_tmp_reportUnknownRegisterDynInfo(stmt, arg, 2);
}
}
}
}
return reachingDef;
}
示例2: lookforTgtArgToInject
import soot.jimple.internal.JAssignStmt; //导入方法依赖的package包/类
private void lookforTgtArgToInject(Chain<Unit> units, Stmt stmt, Value arg) {
String tgtComptName = "";
ClassConstant clazz = ClassConstant.v("dummy");
StringConstant strCont = StringConstant.v("dummy");
InvokeExpr ie = stmt.getInvokeExpr();
if (arg instanceof ClassConstant) {
clazz = (ClassConstant) arg;
tgtComptName = clazz.value;
} else if (arg instanceof StringConstant) {
strCont = (StringConstant) arg;
tgtComptName = strCont.value;
}else {// FIXME: too ugly to grab result in this way
//otherwise we have to ask for reaching def.
for (Tag tagEntity : stmt.getTags()) {
// String tagStr = arg.toString();
if(!(tagEntity instanceof LinkTag)) continue;
LinkTag ttg = (LinkTag) tagEntity;
if ( !(ttg.getLink() instanceof JAssignStmt)) continue;
JAssignStmt asst = (JAssignStmt) ttg.getLink();
if (asst.getLeftOp().equals(arg)) {
// assert (asst.getRightOp() instanceof ClassConstant);
if (asst.getRightOp() instanceof ClassConstant) {
clazz = (ClassConstant) asst.getRightOp();
tgtComptName = clazz.value;
} else if (asst.getRightOp() instanceof StringConstant) {
strCont = (StringConstant) asst.getRightOp();
tgtComptName = strCont.value;
}
}
}
}
if (tgtComptName.equals("")) {
// System.out.println("Can we do better.........** query dynamic analysis.");
// List<ParamInfo> paramList = queryArgumentValues(SootMethod caller, stmt, int argNum);
// for(ParamInfo info : paramList) {
// System.out.println("Analysis result......" + info);
// }
//reportUnknownRegister(stmt, arg);
_tmp_reportUnknownRegisterDynInfo(stmt, arg, 2);
return;
}
tgtComptName = tgtComptName.replace(File.separatorChar, '.');
///Check whether exist such class.
if ( !Scene.v().containsClass(tgtComptName)) {
//reportUnknownRegister(stmt, arg);
_tmp_reportUnknownRegisterDynInfo(stmt, arg, 2);
return;
}
this.instruTgtCompt(tgtComptName);
//begin to instument current invoke method of src.
JimpleLocalBox localBox = (JimpleLocalBox) ie
.getUseBoxes().get(0);
SootMethod toCall = Scene.v().getMethod(
"<" + tgtComptName + ": void set_Intent("
+ intentClass + ")>");
Stmt invokeSetter = Jimple.v().newInvokeStmt(
Jimple.v().newStaticInvokeExpr(
toCall.makeRef(), localBox.getValue()));
units.insertAfter(invokeSetter, stmt);
}