gpt4 book ai didi

java - ASM 在 .class 文件中搜索字符串

转载 作者:行者123 更新时间:2023-12-02 06:14:47 25 4
gpt4 key购买 nike

嗨,我想使用 ASM 在/java/lang/String.class 文件中搜索特定字符串。我知道以下方法可以做到这一点

         @Override 
public String readUTF8(int index, char[] buf) {
String value = super.readUTF8(index, buf);
constantPoolStrings.add(value);
return value;
}

但不知道如何使用它。我正在发布我的代码,你能告诉我如何实现它吗?

public class DemoClassReader {
public static void main(String[] args) throws IOException {
ClassVisitor v= new ClassVisitor(Opcodes.ASM4) {
@Override

public void visit(int version, int access, String name,
String signature, String superName, String[] interfaces) {

System.out.println(" class: "+name);
super.visit(version, access, name, signature, superName, interfaces);
}
} ;

InputStream in=String.class.getResourceAsStream("/java/lang/String.class");
ClassReader classReader=new ClassReader(in);
classReader.accept(v, 0);
}

最佳答案

要捕获字符串文字,您可以实现以下 MethodVisitor:

ClassReader classReader = new ClassReader(in);
classReader.accept(new ClassVisitor(Opcodes.V1_7) {
public MethodVisitor visitMethod(int access, String name, String desc,
String signature, String[] exceptions) {
return new MethodVisitor(Opcodes.V1_7) {
public void visitLdcInsn(Object cst) {
if(cst instanceof String) {
// capture your string
}
}
};
}
}, 0);

参见visitLdcInsn(..)在 JavaDoc 中。

关于java - ASM 在 .class 文件中搜索字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21596347/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com