下面是简单的使用Jeb脚本的示例,更多API在JEB目录下的DOC文件夹内
import java.util.List;
import javax.swing.text.Element;
import jeb.api.*;
import jeb.api.ast.*;
import jeb.api.dex.*;
import jeb.api.ui.*;
public class TestJeb implements IScript{
private JebInstance jeb = null;
private static String DecodeSigName =
"Lcom/example/login/LoginActivity;->Encryption(Ljava/lang/String;)Ljava/lang/String;";
public void run(JebInstance arg0) {
jeb = arg0;
JebUI jebui= jeb.getUI();
JavaView javaview = (JavaView)jebui.getView(View.Type.JAVA);
Dex dex = jeb.getDex();
int MethodCount = dex.getMethodCount();//反编译之后的方法
for(int i=0;i<MethodCount;i++){
//遍历所有的方法
DexMethod dexMethod = dex.getMethod(i);
//判断是否和我要找的方法名相同
if(DecodeSigName.equals(dex.getMethod(i).getSignature(true))){
int index = dexMethod.getIndex();
//查找交叉引用
List<Integer> MethodReference = dex.getMethodReferences(index);
for(Integer refIndex:MethodReference ){
//jeb.print(dex.getMethod(refIndex).getSignature(true));//打印引用的方法名
Method DecompiledMethodTree = jeb.getDecompiledMethodTree(dex.getMethod(i).getSignature(true));
List<IElement> elements = DecompiledMethodTree.getSubElements();
//replaceDecMethod(elements,DecompiledMethodTree);
//打印交叉引用的方法
jeb.print(jeb.decompileMethod(dex.getMethod(refIndex).getSignature(true)));
}
}
}
}
}