当前位置: 首页>>代码示例>>Java>>正文


Java MutableMethodImplementation类代码示例

本文整理汇总了Java中org.jf.dexlib2.builder.MutableMethodImplementation的典型用法代码示例。如果您正苦于以下问题:Java MutableMethodImplementation类的具体用法?Java MutableMethodImplementation怎么用?Java MutableMethodImplementation使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。


MutableMethodImplementation类属于org.jf.dexlib2.builder包,在下文中一共展示了MutableMethodImplementation类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: reDexMethods

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private static List<Method> reDexMethods(@Nonnull ClassDef classDef) {
    List<Method> taintedMethods = Lists.newArrayList();
    for (Method method : classDef.getMethods()) {
        MethodImplementation implementation = method.getImplementation();
        MutableMethodImplementation mutableImplementation = new MutableMethodImplementation(implementation);
        taintedMethods.add(new ImmutableMethod(
                method.getDefiningClass(),
                method.getName(),
                method.getParameters(),
                method.getReturnType(),
                method.getAccessFlags(),
                method.getAnnotations(),
                mutableImplementation));
    }
    return taintedMethods;
}
 
开发者ID:alibaba,项目名称:atlas,代码行数:17,代码来源:PatchFieldTool.java

示例2: fixInstructions

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private void fixInstructions(@Nonnull MutableMethodImplementation methodImplementation) {
    List<? extends Instruction> instructions = methodImplementation.getInstructions();

    for (int i=0; i<instructions.size(); i++) {
        Instruction instruction = instructions.get(i);

        if (instruction.getOpcode() == Opcode.CONST_STRING) {
            if (stringSection.getItemIndex(
                    (StringRef)((ReferenceInstruction)instruction).getReference()) >= 65536) {
                methodImplementation.replaceInstruction(i, new BuilderInstruction31c(Opcode.CONST_STRING_JUMBO,
                        ((OneRegisterInstruction)instruction).getRegisterA(),
                        ((ReferenceInstruction)instruction).getReference()));
            }
        }
    }
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:17,代码来源:DexWriter.java

示例3: fixInstructions

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private void fixInstructions( MutableMethodImplementation methodImplementation) {
    List<? extends Instruction> instructions = methodImplementation.getInstructions();

    for (int i=0; i<instructions.size(); i++) {
        Instruction instruction = instructions.get(i);

        if (instruction.getOpcode() == Opcode.CONST_STRING) {
            if (stringSection.getItemIndex(
                    (StringRef)((ReferenceInstruction)instruction).getReference()) >= 65536) {
                methodImplementation.replaceInstruction(i, new BuilderInstruction31c(Opcode.CONST_STRING_JUMBO,
                        ((OneRegisterInstruction)instruction).getRegisterA(),
                        ((ReferenceInstruction)instruction).getReference()));
            }
        }
    }
}
 
开发者ID:AndreJCL,项目名称:JCL,代码行数:17,代码来源:DexWriter.java

示例4: fixInstructions

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private void fixInstructions(@Nonnull MutableMethodImplementation methodImplementation) {
    List<? extends Instruction> instructions = methodImplementation.getInstructions();

    for (int i = 0; i < instructions.size(); i++) {
        Instruction instruction = instructions.get(i);

        if (instruction.getOpcode() == Opcode.CONST_STRING) {
            if (stringSection.getItemIndex(
                    (StringRef) ((ReferenceInstruction) instruction).getReference()) >= 65536) {
                methodImplementation.replaceInstruction(i, new BuilderInstruction31c(Opcode.CONST_STRING_JUMBO,
                        ((OneRegisterInstruction) instruction).getRegisterA(),
                        ((ReferenceInstruction) instruction).getReference()));
            }
        }
    }
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:17,代码来源:DexWriter.java

示例5: main

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
public static void main(String argv[]){
	Configure configure = new Configure(add_path, "test.dex");
	try {
		MethodWithoutParams method = new MethodWithoutParams(configure);
		method.initMethod("Lcom/cc/test/Hello;", 
				"<clinit>", new ModifyMethodWitoutParams() {
					
					@Override
					public void modify(MutableMethodImplementation impl, DexBackedDexFile dexfile) {
						// TODO Auto-generated method stub
						impl.addInstruction(0, InstructionBuilder.newConstStringIns(0, 
		        				"com.cc.test"));
						impl.addInstruction(1, InstructionBuilder.newConst4Ins(1, 0));
						impl.addInstruction(2, InstructionBuilder.newInvokeStaticIns(2, 
		                		0, 1, 0, 0, 0, "Lcom/cc/test/ProxyShell;", "startshell", dexfile));
						if (impl.getRegisterCount() < 2)
							impl.setRegisterCount(2);
					}
				});
		method.modify();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
}
 
开发者ID:CvvT,项目名称:DexTamper,代码行数:27,代码来源:AddInstructions.java

示例6: modifyMethodAndFix

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private static MethodImplementation modifyMethodAndFix(@Nonnull MethodImplementation implementation, Method method) {
    MutableMethodImplementation mutableImplementation = new MutableMethodImplementation(implementation);
    System.out.println(mutableImplementation.getRegisterCount());
    List<BuilderInstruction> instructions = mutableImplementation.getInstructions();
    mutableImplementation.addInstruction(0,
            new BuilderInstruction21c(Opcode.CONST_STRING, 0,
                    new ImmutableStringReference("AndFix:" + method.getDefiningClass().replace("/", "."))));
    mutableImplementation.addInstruction(1,
            new BuilderInstruction35c(Opcode.INVOKE_STATIC, 1,
                    0, 0, 0, 0, 0,
                    new ImmutableMethodReference("Landroid/util/Log;", "e",
                            Lists.newArrayList("Ljava/lang/String;", "Ljava/lang/String;"), "I")));

    return mutableImplementation;
}
 
开发者ID:alibaba,项目名称:atlas,代码行数:16,代码来源:PatchMethodTool.java

示例7: modifyMethodTpatch

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private static MethodImplementation modifyMethodTpatch(@Nonnull MethodImplementation implementation, Method method) {
        MutableMethodImplementation mutableImplementation = new MutableMethodImplementation(implementation);
        System.out.println(mutableImplementation.getRegisterCount());
        List<BuilderInstruction> instructions = mutableImplementation.getInstructions();
        boolean isModified = false;
        for (int i = 0; i < instructions.size(); i++) {
            isModified = false;
            if (instructions.get(i).getOpcode() == Opcode.INVOKE_DIRECT) {
                if (!isModified) {
                    mutableImplementation.addInstruction(i++,
                            new BuilderInstruction21c(Opcode.CONST_STRING, 0,
                                    new ImmutableStringReference("tpatch:" + method.getDefiningClass().replace("/", "."))));
                    mutableImplementation.addInstruction(i++,
                            new BuilderInstruction35c(Opcode.INVOKE_STATIC, 1,
                                    0, 0, 0, 0, 0,
                                    new ImmutableMethodReference("Landroid/util/Log;", "e",
                                            Lists.newArrayList("Ljava/lang/String;", "Ljava/lang/String;"), "I")));
                    isModified = true;
                    break;

                }

            }
//            mutableImplementation.addInstruction(instructions.get(i));
        }

        return mutableImplementation;
    }
 
开发者ID:alibaba,项目名称:atlas,代码行数:29,代码来源:PatchMethodTool.java

示例8: makeMutableMethodImplementation

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
@Nonnull @Override
public MutableMethodImplementation makeMutableMethodImplementation(@Nonnull BuilderMethod builderMethod) {
    MethodImplementation impl = builderMethod.getImplementation();
    if (impl instanceof MutableMethodImplementation) {
        return (MutableMethodImplementation)impl;
    }
    return new MutableMethodImplementation(impl);
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:9,代码来源:BuilderClassPool.java

示例9: makeMutableMethodImplementation

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
@Override
public MutableMethodImplementation makeMutableMethodImplementation( BuilderMethod builderMethod) {
    MethodImplementation impl = builderMethod.getImplementation();
    if (impl instanceof MutableMethodImplementation) {
        return (MutableMethodImplementation)impl;
    }
    return new MutableMethodImplementation(impl);
}
 
开发者ID:AndreJCL,项目名称:JCL,代码行数:9,代码来源:BuilderClassPool.java

示例10: makeMutableMethodImplementation

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
@Nonnull
@Override
public MutableMethodImplementation makeMutableMethodImplementation(@Nonnull BuilderMethod builderMethod) {
    MethodImplementation impl = builderMethod.getImplementation();
    if (impl instanceof MutableMethodImplementation) {
        return (MutableMethodImplementation) impl;
    }
    return new MutableMethodImplementation(impl);
}
 
开发者ID:niranjan94,项目名称:show-java,代码行数:10,代码来源:BuilderClassPool.java

示例11: getMethodImplementationRewriter

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
public Rewriter<MethodImplementation> getMethodImplementationRewriter(@Nonnull Rewriters rewriters) {
    return new MethodImplementationRewriter(rewriters){
    	public MethodImplementation rewrite(@Nonnull MethodImplementation methodImplementation) {
    		MutableMethodImplementation builder = new MutableMethodImplementation(methodImplementation);
    		mListener.modify(builder, dexFile);
    		return builder;
        }
    };
}
 
开发者ID:CvvT,项目名称:DexTamper,代码行数:10,代码来源:MethodWithoutParams.java

示例12: writeDebugAndCodeItems

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
private void writeDebugAndCodeItems(@Nonnull DexDataWriter offsetWriter,
                                    @Nonnull DeferredOutputStream temp) throws IOException {
    ByteArrayOutputStream ehBuf = new ByteArrayOutputStream();
    debugSectionOffset = offsetWriter.getPosition();
    DebugWriter<StringKey, TypeKey> debugWriter =
            new DebugWriter<StringKey, TypeKey>(stringSection, typeSection, offsetWriter);

    DexDataWriter codeWriter = new DexDataWriter(temp, 0);

    List<CodeItemOffset<MethodKey>> codeOffsets = Lists.newArrayList();

    for (ClassKey classKey: classSection.getSortedClasses()) {
        Collection<? extends MethodKey> directMethods = classSection.getSortedDirectMethods(classKey);
        Collection<? extends MethodKey> virtualMethods = classSection.getSortedVirtualMethods(classKey);

        Iterable<MethodKey> methods = Iterables.concat(directMethods, virtualMethods);

        for (MethodKey methodKey: methods) {
            List<? extends TryBlock<? extends ExceptionHandler>> tryBlocks =
                    classSection.getTryBlocks(methodKey);
            Iterable<? extends Instruction> instructions = classSection.getInstructions(methodKey);
            Iterable<? extends DebugItem> debugItems = classSection.getDebugItems(methodKey);

            if (instructions != null && stringSection.hasJumboIndexes()) {
                boolean needsFix = false;
                for (Instruction instruction: instructions) {
                    if (instruction.getOpcode() == Opcode.CONST_STRING) {
                        if (stringSection.getItemIndex(
                                (StringRef)((ReferenceInstruction)instruction).getReference()) >= 65536) {
                            needsFix = true;
                            break;
                        }
                    }
                }

                if (needsFix) {
                    MutableMethodImplementation mutableMethodImplementation =
                            classSection.makeMutableMethodImplementation(methodKey);
                    fixInstructions(mutableMethodImplementation);

                    instructions = mutableMethodImplementation.getInstructions();
                    tryBlocks = mutableMethodImplementation.getTryBlocks();
                    debugItems = mutableMethodImplementation.getDebugItems();
                }
            }

            int debugItemOffset = writeDebugItem(offsetWriter, debugWriter,
                    classSection.getParameterNames(methodKey), debugItems);
            int codeItemOffset = writeCodeItem(codeWriter, ehBuf, methodKey, tryBlocks, instructions, debugItemOffset);

            if (codeItemOffset != -1) {
                codeOffsets.add(new CodeItemOffset<MethodKey>(methodKey, codeItemOffset));
            }
        }
    }

    offsetWriter.align();
    codeSectionOffset = offsetWriter.getPosition();

    codeWriter.close();
    temp.writeTo(offsetWriter);
    temp.close();

    for (CodeItemOffset<MethodKey> codeOffset: codeOffsets) {
        classSection.setCodeItemOffset(codeOffset.method, codeSectionOffset + codeOffset.codeOffset);
    }
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:68,代码来源:DexWriter.java

示例13: makeMutableMethodImplementation

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
@Nonnull @Override
public MutableMethodImplementation makeMutableMethodImplementation(@Nonnull PoolMethod poolMethod) {
    return new MutableMethodImplementation(poolMethod.getImplementation());
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:5,代码来源:ClassPool.java

示例14: MethodNode

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
public MethodNode(@Nonnull Method method) {
    this.method = method;
    this.methodData = new MutableMethodImplementation(method.getImplementation());
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:5,代码来源:MethodNode.java

示例15: getMethodData

import org.jf.dexlib2.builder.MutableMethodImplementation; //导入依赖的package包/类
public MutableMethodImplementation getMethodData() {
    return methodData;
}
 
开发者ID:CvvT,项目名称:andbg,代码行数:4,代码来源:MethodNode.java


注:本文中的org.jf.dexlib2.builder.MutableMethodImplementation类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。