⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 classfileprinter.java

📁 出色的混淆器
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
/* $Id: ClassFilePrinter.java,v 1.13 2003/02/09 15:22:29 eric Exp $ * * ProGuard -- obfuscation and shrinking package for Java class files. * * Copyright (c) 2002-2003 Eric Lafortune (eric@graphics.cornell.edu) * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the Free * Software Foundation; either version 2 of the License, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along * with this program; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */package proguard.classfile.visitor;import proguard.classfile.*;import proguard.classfile.instruction.*;import java.io.*;/** * This <code>ClassFileVisitor</code> prints out the complete internal * structure of the class files it visits. * * @author Eric Lafortune */public class ClassFilePrinter  implements ClassFileVisitor,             CpInfoVisitor,             MemberInfoVisitor,             AttrInfoVisitor,             InstructionVisitor,             ExceptionInfoVisitor,             InnerClassesInfoVisitor{    private static final String INDENTATION = "  ";    private PrintStream ps;    private int         indentation;    /**     * Creates a new ClassFilePrinter that prints to <code>System.out</code>.     */    public ClassFilePrinter()    {        this(System.out);    }    /**     * Creates a new ClassFilePrinter that prints to the given     * <code>PrintStream</code>.     */    public ClassFilePrinter(PrintStream printStream)    {        ps = printStream;    }    // Implementations for ClassFileVisitor    public void visitProgramClassFile(ProgramClassFile programClassFile)    {        println("_____________________________________________________________________");        println(visitorInfo(programClassFile) + " CLASS: " + programClassFile.getName());        println("Magic: " + Integer.toHexString(programClassFile.u4magic));        println("Minor version: " + Integer.toHexString(programClassFile.u2minorVersion));        println("Major version: " + Integer.toHexString(programClassFile.u2majorVersion));        println("Access: " + Integer.toHexString(programClassFile.u2accessFlags));        println("Superclass: " + programClassFile.getSuperName());        println();        println("Interfaces (count = " + programClassFile.u2interfacesCount + "):");        indent();        for (int i = 0; i < programClassFile.u2interfacesCount; i++)        {            println("+ " + programClassFile.getCpClassNameString(programClassFile.u2interfaces[i]));        }        outdent();        println();        println("Constant Pool (count = " + programClassFile.u2constantPoolCount + "):");        indent();        programClassFile.constantPoolEntriesAccept(this);        outdent();        println();        println("Fields (count = " + programClassFile.u2fieldsCount + "):");        indent();        programClassFile.fieldsAccept(this);        outdent();        println();        println("Methods (count = " + programClassFile.u2methodsCount + "):");        indent();        programClassFile.methodsAccept(this);        outdent();        println();        println("Class file attributes (count = " + programClassFile.u2attributesCount + "):");        indent();        programClassFile.attributesAccept(this);        outdent();        println();    }    public void visitLibraryClassFile(LibraryClassFile libraryClassFile)    {/*        println("_____________________________________________________________________");        println(visitorInfo(libraryClassFile) + "LIBRARY CLASS: " + libraryClassFile.getName());//      println("Access: " + Integer.toHexString(libraryClassFile.u2accessFlags));        println("Superclass: " + libraryClassFile.getSuperName());        println();        println("Interfaces (count = " + libraryClassFile.interfaceClasses.length + "):");        for (int i = 0; i < libraryClassFile.interfaceClasses.length; i++)        {            println("  + " + libraryClassFile.interfaceClasses[i].getName());        }        println("Fields (count = " + libraryClassFile.fields.length + "):");        libraryClassFile.fieldsAccept(this);        println("Methods (count = " + libraryClassFile.methods.length + "):");        libraryClassFile.methodsAccept(this);*/    }    // Implementations for CpInfoVisitor    public void visitClassCpInfo(ClassFile classFile, ClassCpInfo classCpInfo)    {        println(visitorInfo(classCpInfo) + " Class [" +                classFile.getCpString(classCpInfo.u2nameIndex) + "]");    }    public void visitDoubleCpInfo(ClassFile classFile, DoubleCpInfo doubleCpInfo)    {        println(visitorInfo(doubleCpInfo) + " Double [" +                Double.longBitsToDouble(((long)doubleCpInfo.u4highBytes << 32) |                                         (long)doubleCpInfo.u4lowBytes) + "]");    }    public void visitFieldrefCpInfo(ClassFile classFile, FieldrefCpInfo fieldrefCpInfo)    {        println(visitorInfo(fieldrefCpInfo) + " Fieldref [" +                classFile.getCpClassNameString(fieldrefCpInfo.u2classIndex)  + "." +                classFile.getCpNameString(fieldrefCpInfo.u2nameAndTypeIndex) + " " +                classFile.getCpTypeString(fieldrefCpInfo.u2nameAndTypeIndex) + "]");    }    public void visitFloatCpInfo(ClassFile classFile, FloatCpInfo floatCpInfo)    {        println(visitorInfo(floatCpInfo) + " Float [" +                Float.intBitsToFloat(floatCpInfo.u4bytes) + "]");    }    public void visitIntegerCpInfo(ClassFile classFile, IntegerCpInfo integerCpInfo)    {        println(visitorInfo(integerCpInfo) + " Integer [" +                integerCpInfo.u4bytes + "]");    }    public void visitInterfaceMethodrefCpInfo(ClassFile classFile, InterfaceMethodrefCpInfo interfaceMethodrefCpInfo)    {        println(visitorInfo(interfaceMethodrefCpInfo) + " InterfaceMethodref [" +                classFile.getCpClassNameString(interfaceMethodrefCpInfo.u2classIndex)  + "." +                classFile.getCpNameString(interfaceMethodrefCpInfo.u2nameAndTypeIndex) + " " +                classFile.getCpTypeString(interfaceMethodrefCpInfo.u2nameAndTypeIndex) + "]");    }    public void visitLongCpInfo(ClassFile classFile, LongCpInfo longCpInfo)    {        println(visitorInfo(longCpInfo) + " Long [" +                (((long)longCpInfo.u4highBytes << 32) |                  (long)longCpInfo.u4lowBytes) + "]");    }    public void visitMethodrefCpInfo(ClassFile classFile, MethodrefCpInfo methodrefCpInfo)    {        println(visitorInfo(methodrefCpInfo) + " Methodref [" +                classFile.getCpClassNameString(methodrefCpInfo.u2classIndex)  + "." +                classFile.getCpNameString(methodrefCpInfo.u2nameAndTypeIndex) + " " +                classFile.getCpTypeString(methodrefCpInfo.u2nameAndTypeIndex) + "]");    }    public void visitNameAndTypeCpInfo(ClassFile classFile, NameAndTypeCpInfo nameAndTypeCpInfo)    {        println(visitorInfo(nameAndTypeCpInfo) + " NameAndType [" +                classFile.getCpString(nameAndTypeCpInfo.u2nameIndex) + " " +                classFile.getCpString(nameAndTypeCpInfo.u2descriptorIndex) + "]");    }    public void visitStringCpInfo(ClassFile classFile, StringCpInfo stringCpInfo)    {        println(visitorInfo(stringCpInfo) + " String [" +                classFile.getCpString(stringCpInfo.u2stringIndex) + "]");    }    public void visitUtf8CpInfo(ClassFile classFile, Utf8CpInfo utf8CpInfo)    {        println(visitorInfo(utf8CpInfo) + " Utf8 [" +                utf8CpInfo.getString() + "]");    }    // Implementations for MemberInfoVisitor    public void visitProgramFieldInfo(ProgramClassFile programClassFile, ProgramFieldInfo programFieldInfo)    {        visitMemberInfo(programClassFile, programFieldInfo);    }    public void visitProgramMethodInfo(ProgramClassFile programClassFile, ProgramMethodInfo programMethodInfo)    {        visitMemberInfo(programClassFile, programMethodInfo);    }    private void visitMemberInfo(ProgramClassFile programClassFile, ProgramMemberInfo programMemberInfo)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -