java 获取签名详细信息_java-如何从jar文件获取方法签名?

您可以使用WALA库读取所有方法签名。 但是,您需要首先加载Java的Stub-Code。 以下程序应读出所有签名:

import com.ibm.wala.ipa.cha.ClassHierarchy;

import com.ibm.wala.ipa.cha.IClassHierarchy;

import com.ibm.wala.classLoader.IClass;

import com.ibm.wala.classLoader.IMethod;

import com.ibm.wala.ipa.callgraph.AnalysisOptions;

import com.ibm.wala.ipa.callgraph.AnalysisScope;

import com.ibm.wala.types.ClassLoaderReference;

import java.util.jar.JarFile;

import java.io.IOException;

import com.ibm.wala.ipa.cha.ClassHierarchyException;

public class methods {

public static void main(String[] args) throws IOException, ClassHierarchyException {

AnalysisScope scope = AnalysisScope.createJavaAnalysisScope();

scope.addToScope(ClassLoaderReference.Primordial, new JarFile("jSDG-stubs-jre1.5.jar"));

scope.addToScope(ClassLoaderReference.Application, new JarFile("myProgram.jar"));

IClassHierarchy cha = ClassHierarchy.make(scope);

for (IClass cl : cha) {

if (cl.getClassLoader().getReference().equals(ClassLoaderReference.Application)) {

for (IMethod m : cl.getAllMethods()) {

String ac = "";

if (m.isAbstract()) ac = ac + "abstract ";

if (m.isClinit()) ac = ac + "clinit ";

if (m.isFinal()) ac = ac + "final ";

if (m.isInit()) ac = ac + "init ";

if (m.isNative()) ac = ac + "native ";

if (m.isPrivate()) ac = ac + "private ";

if (m.isProtected()) ac = ac + "protected ";

if (m.isPublic()) ac = ac + "public ";

if (m.isSynchronized()) ac = ac + "synchronized ";

System.out.println(ac + m.getSignature());

}

}

}

}

}

如果您从此处使用改编的WALA版本,它也会使用Dalvik(例如Android Apps)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值