public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames) { if (visitor == null) { return null; } return visitor.visit(access_flags, className, superClass, interfaceNames); }
/** * Makes the given visitor visit the dex file. * * @param dv * visitor * @param config * config flags, {@link #SKIP_CODE}, {@link #SKIP_DEBUG}, {@link #SKIP_ANNOTATION}, * {@link #SKIP_FIELD_CONSTANT} */ @Override public void accept(DexFileVisitor dv, int config) { dv.visitDexFileVersion(this.dex_version); for (int cid = 0; cid < class_defs_size; cid++) { accept(dv, cid, config); } dv.visitEnd(); }
public void visitEnd() { if (visitor == null) { return; } visitor.visitEnd(); }
public void visitDexFileVersion(int version) { if (visitor != null) { visitor.visitDexFileVersion(version); } }
public void visitEnd() { if (visitor == null) { return; } visitor.visitEnd(); }
@Override public void visitDexFileVersion(int version) { this.dexVersion = version; super.visitDexFileVersion(version); }
@Override public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames) { DexClassVisitor dcv = super.visit(access_flags, className, superClass, interfaceNames); if (dcv != null) { return new DexClassVisitor(dcv) {
/** * Makes the given visitor visit the dex file. * * @param dv * visitor * @param config * config flags, {@link #SKIP_CODE}, {@link #SKIP_DEBUG}, {@link #SKIP_ANNOTATION}, * {@link #SKIP_FIELD_CONSTANT} */ @Override public void accept(DexFileVisitor dv, int config) { for (int cid = 0; cid < class_defs_size; cid++) { accept(dv, cid, config); } dv.visitEnd(); }
@Override public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames) { return wrap(className, super.visit(access_flags, className, superClass, interfaceNames)); } };
public void accept(DexFileVisitor dfv) { DexClassVisitor dcv = dfv.visit(access, className, superClass, interfaceNames); if (dcv != null) { accept(dcv); dcv.visitEnd(); } }
String[] interfaceNames = getTypeList(interfaces_off); try { DexClassVisitor dcv = dv.visit(access_flags, className, superClassName, interfaceNames); if (dcv != null)// 不处理
public static void acceptFile(SmaliParser.SFileContext ctx, DexFileVisitor dexFileVisitor) { DexClassVisitor dexClassVisitor; String className = Utils.unEscapeId(ctx.className.getText()); int access = collectAccess(ctx.sAccList()); List<SmaliParser.SSuperContext> superContexts = ctx.sSuper(); String superClass = null; if (superContexts.size() > 0) { superClass = Utils.unEscapeId(superContexts.get(superContexts.size() - 1).name.getText()); } List<SmaliParser.SInterfaceContext> itfs = ctx.sInterface(); String[] interfaceNames = null; if (itfs.size() > 0) { interfaceNames = new String[itfs.size()]; for (int i = 0; i < itfs.size(); i++) { interfaceNames[i] = Utils.unEscapeId(itfs.get(i).name.getText()); } } dexClassVisitor = dexFileVisitor.visit(access, className, superClass, interfaceNames); List<SmaliParser.SSourceContext> sources = ctx.sSource(); if (sources.size() > 0) { dexClassVisitor.visitSource( Utils.unescapeStr(sources.get(sources.size() - 1).src.getText()) ); } acceptAnnotations(ctx.sAnnotation(), dexClassVisitor); acceptField(ctx.sField(), className, dexClassVisitor); acceptMethod(ctx.sMethod(), className, dexClassVisitor); dexClassVisitor.visitEnd(); }
public String buildInvocationClz(DexFileVisitor dfv) { String typeName = getCurrentInvocationName(); String typeNameDesc = "L" + typeName + ";"; DexClassVisitor dcv = dfv.visit(DexConstants.ACC_PUBLIC, typeNameDesc, "Ljava/lang/Object;", new String[]{ invocationInterfaceDesc});
public DexClassVisitor visit(int access_flags, String className, String superClass, String[] interfaceNames) { if (visitor == null) { return null; } return visitor.visit(access_flags, className, superClass, interfaceNames); }
public void accept(DexFileVisitor dfv) { DexClassVisitor dcv = dfv.visit(access, className, superClass, interfaceNames); if (dcv != null) { accept(dcv); dcv.visitEnd(); } }
String[] interfaceNames = getTypeList(interfaces_off); try { DexClassVisitor dcv = dv.visit(access_flags, className, superClassName, interfaceNames); if (dcv != null)// 不处理