diff options
| author | 2014-09-26 00:33:07 -0400 | |
|---|---|---|
| committer | 2014-09-26 00:33:07 -0400 | |
| commit | 575447097876b5cf3dfbae8fa1f6f749819e97b8 (patch) | |
| tree | 50b544e601e295dee5a55e747db85df9d3a25577 /src/cuchaz/enigma/mapping/MappingsRenamer.java | |
| parent | fixed invalid tokens issue (diff) | |
| download | enigma-fork-575447097876b5cf3dfbae8fa1f6f749819e97b8.tar.gz enigma-fork-575447097876b5cf3dfbae8fa1f6f749819e97b8.tar.xz enigma-fork-575447097876b5cf3dfbae8fa1f6f749819e97b8.zip | |
implemented mark-as-deobfuscated and reset-to-obfuscated
Diffstat (limited to 'src/cuchaz/enigma/mapping/MappingsRenamer.java')
| -rw-r--r-- | src/cuchaz/enigma/mapping/MappingsRenamer.java | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/src/cuchaz/enigma/mapping/MappingsRenamer.java b/src/cuchaz/enigma/mapping/MappingsRenamer.java index 182bbd1..957b6d6 100644 --- a/src/cuchaz/enigma/mapping/MappingsRenamer.java +++ b/src/cuchaz/enigma/mapping/MappingsRenamer.java | |||
| @@ -57,6 +57,36 @@ public class MappingsRenamer | |||
| 57 | } | 57 | } |
| 58 | } | 58 | } |
| 59 | 59 | ||
| 60 | public void removeClassMapping( ClassEntry obf ) | ||
| 61 | { | ||
| 62 | ClassMapping classMapping = getClassMapping( obf ); | ||
| 63 | if( obf.isInnerClass() ) | ||
| 64 | { | ||
| 65 | classMapping.setInnerClassName( obf.getName(), null ); | ||
| 66 | } | ||
| 67 | else | ||
| 68 | { | ||
| 69 | boolean wasRemoved = m_mappings.m_classesByDeobf.remove( classMapping.getDeobfName() ) != null; | ||
| 70 | assert( wasRemoved ); | ||
| 71 | classMapping.setDeobfName( null ); | ||
| 72 | } | ||
| 73 | } | ||
| 74 | |||
| 75 | public void markClassAsDeobfuscated( ClassEntry obf ) | ||
| 76 | { | ||
| 77 | ClassMapping classMapping = getOrCreateClassMapping( obf ); | ||
| 78 | if( obf.isInnerClass() ) | ||
| 79 | { | ||
| 80 | classMapping.setInnerClassName( obf.getName(), obf.getName() ); | ||
| 81 | } | ||
| 82 | else | ||
| 83 | { | ||
| 84 | classMapping.setDeobfName( obf.getName() ); | ||
| 85 | boolean wasAdded = m_mappings.m_classesByDeobf.put( obf.getName(), classMapping ) == null; | ||
| 86 | assert( wasAdded ); | ||
| 87 | } | ||
| 88 | } | ||
| 89 | |||
| 60 | public void setFieldName( FieldEntry obf, String deobfName ) | 90 | public void setFieldName( FieldEntry obf, String deobfName ) |
| 61 | { | 91 | { |
| 62 | deobfName = NameValidator.validateFieldName( deobfName ); | 92 | deobfName = NameValidator.validateFieldName( deobfName ); |
| @@ -70,6 +100,18 @@ public class MappingsRenamer | |||
| 70 | classMapping.setFieldName( obf.getName(), deobfName ); | 100 | classMapping.setFieldName( obf.getName(), deobfName ); |
| 71 | } | 101 | } |
| 72 | 102 | ||
| 103 | public void removeFieldMapping( FieldEntry obf ) | ||
| 104 | { | ||
| 105 | ClassMapping classMapping = getClassMappingOrInnerClassMapping( obf.getClassEntry() ); | ||
| 106 | classMapping.setFieldName( obf.getName(), null ); | ||
| 107 | } | ||
| 108 | |||
| 109 | public void markFieldAsDeobfuscated( FieldEntry obf ) | ||
| 110 | { | ||
| 111 | ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() ); | ||
| 112 | classMapping.setFieldName( obf.getName(), obf.getName() ); | ||
| 113 | } | ||
| 114 | |||
| 73 | public void setMethodTreeName( MethodEntry obf, String deobfName ) | 115 | public void setMethodTreeName( MethodEntry obf, String deobfName ) |
| 74 | { | 116 | { |
| 75 | Set<MethodEntry> implementations = m_index.getRelatedMethodImplementations( obf ); | 117 | Set<MethodEntry> implementations = m_index.getRelatedMethodImplementations( obf ); |
| @@ -106,6 +148,34 @@ public class MappingsRenamer | |||
| 106 | classMapping.setMethodName( obf.getName(), obf.getSignature(), deobfName ); | 148 | classMapping.setMethodName( obf.getName(), obf.getSignature(), deobfName ); |
| 107 | } | 149 | } |
| 108 | 150 | ||
| 151 | public void removeMethodTreeMapping( MethodEntry obf ) | ||
| 152 | { | ||
| 153 | for( MethodEntry implementation : m_index.getRelatedMethodImplementations( obf ) ) | ||
| 154 | { | ||
| 155 | removeMethodMapping( implementation ); | ||
| 156 | } | ||
| 157 | } | ||
| 158 | |||
| 159 | public void removeMethodMapping( MethodEntry obf ) | ||
| 160 | { | ||
| 161 | ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() ); | ||
| 162 | classMapping.setMethodName( obf.getName(), obf.getSignature(), null ); | ||
| 163 | } | ||
| 164 | |||
| 165 | public void markMethodTreeAsDeobfuscated( MethodEntry obf ) | ||
| 166 | { | ||
| 167 | for( MethodEntry implementation : m_index.getRelatedMethodImplementations( obf ) ) | ||
| 168 | { | ||
| 169 | markMethodAsDeobfuscated( implementation ); | ||
| 170 | } | ||
| 171 | } | ||
| 172 | |||
| 173 | public void markMethodAsDeobfuscated( MethodEntry obf ) | ||
| 174 | { | ||
| 175 | ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() ); | ||
| 176 | classMapping.setMethodName( obf.getName(), obf.getSignature(), obf.getName() ); | ||
| 177 | } | ||
| 178 | |||
| 109 | public void setArgumentName( ArgumentEntry obf, String deobfName ) | 179 | public void setArgumentName( ArgumentEntry obf, String deobfName ) |
| 110 | { | 180 | { |
| 111 | deobfName = NameValidator.validateArgumentName( deobfName ); | 181 | deobfName = NameValidator.validateArgumentName( deobfName ); |
| @@ -119,6 +189,18 @@ public class MappingsRenamer | |||
| 119 | classMapping.setArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex(), deobfName ); | 189 | classMapping.setArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex(), deobfName ); |
| 120 | } | 190 | } |
| 121 | 191 | ||
| 192 | public void removeArgumentMapping( ArgumentEntry obf ) | ||
| 193 | { | ||
| 194 | ClassMapping classMapping = getClassMappingOrInnerClassMapping( obf.getClassEntry() ); | ||
| 195 | classMapping.removeArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex() ); | ||
| 196 | } | ||
| 197 | |||
| 198 | public void markArgumentAsDeobfuscated( ArgumentEntry obf ) | ||
| 199 | { | ||
| 200 | ClassMapping classMapping = getOrCreateClassMappingOrInnerClassMapping( obf.getClassEntry() ); | ||
| 201 | classMapping.setArgumentName( obf.getMethodName(), obf.getMethodSignature(), obf.getIndex(), obf.getName() ); | ||
| 202 | } | ||
| 203 | |||
| 122 | public boolean moveFieldToObfClass( ClassMapping classMapping, FieldMapping fieldMapping, ClassEntry obfClass ) | 204 | public boolean moveFieldToObfClass( ClassMapping classMapping, FieldMapping fieldMapping, ClassEntry obfClass ) |
| 123 | { | 205 | { |
| 124 | classMapping.removeFieldMapping( fieldMapping ); | 206 | classMapping.removeFieldMapping( fieldMapping ); |
| @@ -167,6 +249,11 @@ public class MappingsRenamer | |||
| 167 | gzipout.finish(); | 249 | gzipout.finish(); |
| 168 | } | 250 | } |
| 169 | 251 | ||
| 252 | private ClassMapping getClassMapping( ClassEntry obfClassEntry ) | ||
| 253 | { | ||
| 254 | return m_mappings.m_classesByObf.get( obfClassEntry.getOuterClassName() ); | ||
| 255 | } | ||
| 256 | |||
| 170 | private ClassMapping getOrCreateClassMapping( ClassEntry obfClassEntry ) | 257 | private ClassMapping getOrCreateClassMapping( ClassEntry obfClassEntry ) |
| 171 | { | 258 | { |
| 172 | String obfClassName = obfClassEntry.getOuterClassName(); | 259 | String obfClassName = obfClassEntry.getOuterClassName(); |
| @@ -180,6 +267,16 @@ public class MappingsRenamer | |||
| 180 | return classMapping; | 267 | return classMapping; |
| 181 | } | 268 | } |
| 182 | 269 | ||
| 270 | private ClassMapping getClassMappingOrInnerClassMapping( ClassEntry obfClassEntry ) | ||
| 271 | { | ||
| 272 | ClassMapping classMapping = getClassMapping( obfClassEntry ); | ||
| 273 | if( obfClassEntry.isInDefaultPackage() ) | ||
| 274 | { | ||
| 275 | classMapping = classMapping.getInnerClassByObf( obfClassEntry.getInnerClassName() ); | ||
| 276 | } | ||
| 277 | return classMapping; | ||
| 278 | } | ||
| 279 | |||
| 183 | private ClassMapping getOrCreateClassMappingOrInnerClassMapping( ClassEntry obfClassEntry ) | 280 | private ClassMapping getOrCreateClassMappingOrInnerClassMapping( ClassEntry obfClassEntry ) |
| 184 | { | 281 | { |
| 185 | ClassMapping classMapping = getOrCreateClassMapping( obfClassEntry ); | 282 | ClassMapping classMapping = getOrCreateClassMapping( obfClassEntry ); |