1 21 package proguard.obfuscate; 22 23 import proguard.classfile.*; 24 import proguard.classfile.constant.*; 25 import proguard.classfile.constant.visitor.ConstantVisitor; 26 import proguard.classfile.editor.ConstantPoolEditor; 27 import proguard.classfile.util.SimplifiedVisitor; 28 import proguard.classfile.visitor.*; 29 30 39 public class ClassRenamer 40 extends SimplifiedVisitor 41 implements ClassVisitor, 42 MemberVisitor, 43 ConstantVisitor 44 { 45 private ConstantPoolEditor constantPoolEditor = new ConstantPoolEditor(); 46 47 48 50 public void visitProgramClass(ProgramClass programClass) 51 { 52 programClass.constantPoolEntryAccept(programClass.u2thisClass, this); 54 55 programClass.fieldsAccept(this); 57 programClass.methodsAccept(this); 58 } 59 60 61 public void visitLibraryClass(LibraryClass libraryClass) 62 { 63 libraryClass.thisClassName = ClassObfuscator.newClassName(libraryClass); 64 65 libraryClass.fieldsAccept(this); 67 libraryClass.methodsAccept(this); 68 } 69 70 71 73 public void visitProgramMember(ProgramClass programClass, 74 ProgramMember programMember) 75 { 76 String name = programMember.getName(programClass); 78 String newName = MemberObfuscator.newMemberName(programMember); 79 if (newName != null && 80 !newName.equals(name)) 81 { 82 programMember.u2nameIndex = 83 constantPoolEditor.addUtf8Constant(programClass, newName); 84 } 85 } 86 87 public void visitLibraryMember(LibraryClass libraryClass, 88 LibraryMember libraryMember) 89 { 90 String newName = MemberObfuscator.newMemberName(libraryMember); 91 if (newName != null) 92 { 93 libraryMember.name = newName; 94 } 95 } 96 97 98 100 public void visitClassConstant(Clazz clazz, ClassConstant classConstant) 101 { 102 String newName = ClassObfuscator.newClassName(clazz); 104 if (newName != null) 105 { 106 classConstant.u2nameIndex = 108 constantPoolEditor.addUtf8Constant((ProgramClass)clazz, 109 newName); 110 } 111 } 112 } 113 | Popular Tags |