0
您好我想使用ASM在/java/lang/String.class文件中搜索特定的字符串。我才知道,下面的方法確實是在.class文件中搜索字符串的ASM
@Override
public String readUTF8(int index, char[] buf) {
String value = super.readUTF8(index, buf);
constantPoolStrings.add(value);
return value;
}
,但不知道如何使用它。我是張貼我的代碼,你可以請告訴我如何都可以在此achived。
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);
}
存儲在類文件中的字符串有很多種。你想要搜索什麼?例如,方法名稱,類型名稱,簽名,字符串文字? –
嗨,感謝您的回覆。它可以是任何像定義變量的字符串;字符串名稱=「約翰邁勒」,我想要約翰。這可以如何實現? – priyank
只需查找常量池中的所有字符串條目即可。看看utf8會讓你看到所有不用於常量的字符串。 – Antimony