summaryrefslogtreecommitdiff
path: root/src/cuchaz/enigma/Deobfuscator.java
diff options
context:
space:
mode:
authorGravatar jeff2014-08-13 00:22:12 -0400
committerGravatar jeff2014-08-13 00:22:12 -0400
commitcc74d0e62cfdcf14c5918234f69d587d264807ed (patch)
tree7a11bd6af9b7cd2f28c3dbd43a281b4036464f77 /src/cuchaz/enigma/Deobfuscator.java
parentgot simple method call graph working! (diff)
downloadenigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.gz
enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.tar.xz
enigma-fork-cc74d0e62cfdcf14c5918234f69d587d264807ed.zip
added support for field access searches
added proper detection/handling for constructors
Diffstat (limited to 'src/cuchaz/enigma/Deobfuscator.java')
-rw-r--r--src/cuchaz/enigma/Deobfuscator.java30
1 files changed, 26 insertions, 4 deletions
diff --git a/src/cuchaz/enigma/Deobfuscator.java b/src/cuchaz/enigma/Deobfuscator.java
index 33eef08..770172e 100644
--- a/src/cuchaz/enigma/Deobfuscator.java
+++ b/src/cuchaz/enigma/Deobfuscator.java
@@ -34,6 +34,7 @@ import cuchaz.enigma.analysis.SourceIndexVisitor;
34import cuchaz.enigma.mapping.ArgumentEntry; 34import cuchaz.enigma.mapping.ArgumentEntry;
35import cuchaz.enigma.mapping.ClassEntry; 35import cuchaz.enigma.mapping.ClassEntry;
36import cuchaz.enigma.mapping.ClassMapping; 36import cuchaz.enigma.mapping.ClassMapping;
37import cuchaz.enigma.mapping.ConstructorEntry;
37import cuchaz.enigma.mapping.Entry; 38import cuchaz.enigma.mapping.Entry;
38import cuchaz.enigma.mapping.FieldEntry; 39import cuchaz.enigma.mapping.FieldEntry;
39import cuchaz.enigma.mapping.Mappings; 40import cuchaz.enigma.mapping.Mappings;
@@ -185,6 +186,10 @@ public class Deobfuscator
185 { 186 {
186 m_renamer.setMethodTreeName( (MethodEntry)obfEntry, newName ); 187 m_renamer.setMethodTreeName( (MethodEntry)obfEntry, newName );
187 } 188 }
189 else if( obfEntry instanceof ConstructorEntry )
190 {
191 m_renamer.setClassName( obfEntry.getClassEntry(), newName );
192 }
188 else if( obfEntry instanceof ArgumentEntry ) 193 else if( obfEntry instanceof ArgumentEntry )
189 { 194 {
190 m_renamer.setArgumentName( (ArgumentEntry)obfEntry, newName ); 195 m_renamer.setArgumentName( (ArgumentEntry)obfEntry, newName );
@@ -210,6 +215,10 @@ public class Deobfuscator
210 { 215 {
211 return translator.translateEntry( (MethodEntry)deobfEntry ); 216 return translator.translateEntry( (MethodEntry)deobfEntry );
212 } 217 }
218 else if( deobfEntry instanceof ConstructorEntry )
219 {
220 return translator.translateEntry( (ConstructorEntry)deobfEntry );
221 }
213 else if( deobfEntry instanceof ArgumentEntry ) 222 else if( deobfEntry instanceof ArgumentEntry )
214 { 223 {
215 return translator.translateEntry( (ArgumentEntry)deobfEntry ); 224 return translator.translateEntry( (ArgumentEntry)deobfEntry );
@@ -235,6 +244,10 @@ public class Deobfuscator
235 { 244 {
236 return translator.translateEntry( (MethodEntry)obfEntry ); 245 return translator.translateEntry( (MethodEntry)obfEntry );
237 } 246 }
247 else if( obfEntry instanceof ConstructorEntry )
248 {
249 return translator.translateEntry( (ConstructorEntry)obfEntry );
250 }
238 else if( obfEntry instanceof ArgumentEntry ) 251 else if( obfEntry instanceof ArgumentEntry )
239 { 252 {
240 return translator.translateEntry( (ArgumentEntry)obfEntry ); 253 return translator.translateEntry( (ArgumentEntry)obfEntry );
@@ -263,6 +276,11 @@ public class Deobfuscator
263 String deobfName = translator.translate( (MethodEntry)obfEntry ); 276 String deobfName = translator.translate( (MethodEntry)obfEntry );
264 return deobfName != null && !deobfName.equals( obfEntry.getName() ); 277 return deobfName != null && !deobfName.equals( obfEntry.getName() );
265 } 278 }
279 else if( obfEntry instanceof ConstructorEntry )
280 {
281 String deobfName = translator.translate( obfEntry.getClassEntry() );
282 return deobfName != null && !deobfName.equals( obfEntry.getClassName() );
283 }
266 else if( obfEntry instanceof ArgumentEntry ) 284 else if( obfEntry instanceof ArgumentEntry )
267 { 285 {
268 return translator.translate( (ArgumentEntry)obfEntry ) != null; 286 return translator.translate( (ArgumentEntry)obfEntry ) != null;
@@ -282,16 +300,20 @@ public class Deobfuscator
282 } 300 }
283 else if( obfEntry instanceof FieldEntry ) 301 else if( obfEntry instanceof FieldEntry )
284 { 302 {
285 return m_jarIndex.getObfClassNames().contains( ((FieldEntry)obfEntry).getClassName() ); 303 return m_jarIndex.getObfClassNames().contains( obfEntry.getClassName() );
286 } 304 }
287 else if( obfEntry instanceof MethodEntry ) 305 else if( obfEntry instanceof MethodEntry )
288 { 306 {
289 return m_jarIndex.getObfClassNames().contains( ((MethodEntry)obfEntry).getClassName() ); 307 return m_jarIndex.getObfClassNames().contains( obfEntry.getClassName() );
308 }
309 else if( obfEntry instanceof ConstructorEntry )
310 {
311 return m_jarIndex.getObfClassNames().contains( obfEntry.getClassName() );
290 } 312 }
291 else if( obfEntry instanceof ArgumentEntry ) 313 else if( obfEntry instanceof ArgumentEntry )
292 { 314 {
293 // arguments only appear in method delcarations 315 // arguments only appear in method declarations
294 // since we only show declrations for obf classes, these are always obfuscated 316 // since we only show declarations for obf classes, these are always obfuscated
295 return true; 317 return true;
296 } 318 }
297 319