@Nonnull @Override public String getReturnType() { return method.getReturnType(); }
private String buildDescriptor(Method method) { StringBuilder sb = new StringBuilder(); sb.append('('); method.getParameterTypes().forEach(sb::append); sb.append(')'); sb.append(method.getReturnType()); return sb.toString(); }
private void visitMethod(ClassDef classDef, Method method, MethodVisitor mv) { mv.visitCode(); String methodName = method.getName(); if (methodName.equals("<clinit>")) { visitClInitStub(mv); } else if (methodName.equals("<init>")) { visitInitStub(classDef, mv); } else if (methodName.equals("hashCode") && method.getReturnType().equals("I")) { visitCallObjectHashCode(mv); } else { visitMethodStub(mv); } // Do this at the end so ASM can calculate max stack and locals sizes mv.visitMaxs(0, 0); mv.visitEnd(); }
method.getName(), method.getParameters(), method.getReturnType(), method.getAccessFlags(), method.getAnnotations(),
public static void writeEmptyMethodTo(IndentingWriter writer, Method method, BaksmaliOptions options) throws IOException { writer.write(".method "); writeAccessFlags(writer, method.getAccessFlags()); writer.write(method.getName()); writer.write("("); ImmutableList<MethodParameter> methodParameters = ImmutableList.copyOf(method.getParameters()); for (MethodParameter parameter: methodParameters) { writer.write(parameter.getType()); } writer.write(")"); writer.write(method.getReturnType()); writer.write('\n'); writer.indent(4); writeParameters(writer, method, methodParameters, options); String containingClass = null; if (options.implicitReferences) { containingClass = method.getDefiningClass(); } AnnotationFormatter.writeTo(writer, method.getAnnotations(), containingClass); writer.deindent(4); writer.write(".end method\n"); }
/** * Retrieve the SootMethod equivalent of this method * * @return the SootMethod of this method */ public SootMethod makeSootMethod(final Method method) { int accessFlags = method.getAccessFlags(); // get the name of the method String name = method.getName(); List<SootClass> thrownExceptions = getThrownExceptions(method); List<Type> parameterTypes = getParameterTypes(method); // retrieve the return type of this method Type returnType = DexType.toSoot(method.getReturnType()); // Build soot method by all available parameters SootMethod sm = declaringClass.getMethodUnsafe(name, parameterTypes, returnType); if (sm == null) { sm = Scene.v().makeSootMethod(name, parameterTypes, returnType, accessFlags, thrownExceptions); } // if the method is abstract or native, no code needs to be transformed int flags = method.getAccessFlags(); if (Modifier.isAbstract(flags) || Modifier.isNative(flags)) { return sm; } if (Options.v().oaat() && declaringClass.resolvingLevel() <= SootClass.SIGNATURES) { return sm; } // sets the method source by adding its body as the active body sm.setSource(createMethodSource(method)); return sm; }
writer.write(method.getReturnType()); writer.write('\n');
@Override @Nonnull public String getReturnType() { return method.getReturnType(); }
@Override @Nonnull public String getReturnType() { return method.getReturnType(); }
@Nonnull @Override public String getReturnType() { return method.getReturnType(); }
@Override @Nonnull public String getReturnType() { return method.getReturnType(); }
private String getMethodFullName(Method method) { StringBuilder stringBuilder = new StringBuilder(); String methodName = method.getName(); stringBuilder.append(methodName).append("("); for (CharSequence c:method.getParameterTypes()){ stringBuilder.append(c); } stringBuilder.append(")").append(method.getReturnType()); return stringBuilder.toString(); }
private boolean methodSignaturesMatch(@Nonnull Method a, @Nonnull Method b) { return (a.getName().equals(b.getName()) && a.getReturnType().equals(b.getReturnType()) && a.getParameters().equals(b.getParameters())); }
public ControlFlowGraph(Method method) { this(getFlatMethod(method)); String definingClass = method.getDefiningClass(); this.identifier = definingClass + "." + method.getName() + "()" + method.getReturnType(); // this.identifier = definingClass.substring(definingClass.lastIndexOf("/")+1) + method.getName() + "(" + method.getReturnType() + ")"; this.identifier = this.identifier.replace(";", ""); this.shortIdentifier = identifier.substring(definingClass.lastIndexOf("/")+1); }
private void listClassVtable(ClassProto classProto) throws IOException { List<Method> methods = classProto.getVtable(); String className = "Class " + classProto.getType() + " extends " + classProto.getSuperclass() + " : " + methods.size() + " methods\n"; System.out.write(className.getBytes()); for (int i = 0; i < methods.size(); i++) { Method method = methods.get(i); String methodString = i + ":" + method.getDefiningClass() + "->" + method.getName() + "("; for (CharSequence parameter : method.getParameterTypes()) { methodString += parameter; } methodString += ")" + method.getReturnType() + "\n"; System.out.write(methodString.getBytes()); } System.out.write("\n".getBytes()); }
private void listClassVtable(ClassProto classProto) throws IOException { List<Method> methods = classProto.getVtable(); String className = "Class " + classProto.getType() + " extends " + classProto.getSuperclass() + " : " + methods.size() + " methods\n"; System.out.write(className.getBytes()); for (int i = 0; i < methods.size(); i++) { Method method = methods.get(i); String methodString = i + ":" + method.getDefiningClass() + "->" + method.getName() + "("; for (CharSequence parameter : method.getParameterTypes()) { methodString += parameter; } methodString += ")" + method.getReturnType() + "\n"; System.out.write(methodString.getBytes()); } System.out.write("\n".getBytes()); }
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; }
public static ImmutableMethod of(Method method) { if (method instanceof ImmutableMethod) { return (ImmutableMethod)method; } return new ImmutableMethod( method.getDefiningClass(), method.getName(), method.getParameters(), method.getReturnType(), method.getAccessFlags(), method.getAnnotations(), method.getImplementation()); }
public static ImmutableMethod of(Method method) { if (method instanceof ImmutableMethod) { return (ImmutableMethod)method; } return new ImmutableMethod( method.getDefiningClass(), method.getName(), method.getParameters(), method.getReturnType(), method.getAccessFlags(), method.getAnnotations(), method.getImplementation()); }
public static ImmutableMethod of(Method method) { if (method instanceof ImmutableMethod) { return (ImmutableMethod)method; } return new ImmutableMethod( method.getDefiningClass(), method.getName(), method.getParameters(), method.getReturnType(), method.getAccessFlags(), method.getAnnotations(), method.getImplementation()); }