diff options
| author | 2014-08-13 00:22:12 -0400 | |
|---|---|---|
| committer | 2014-08-13 00:22:12 -0400 | |
| commit | cc74d0e62cfdcf14c5918234f69d587d264807ed (patch) | |
| tree | 7a11bd6af9b7cd2f28c3dbd43a281b4036464f77 /src/cuchaz/enigma/Deobfuscator.java | |
| parent | got simple method call graph working! (diff) | |
| download | enigma-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.java | 30 |
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; | |||
| 34 | import cuchaz.enigma.mapping.ArgumentEntry; | 34 | import cuchaz.enigma.mapping.ArgumentEntry; |
| 35 | import cuchaz.enigma.mapping.ClassEntry; | 35 | import cuchaz.enigma.mapping.ClassEntry; |
| 36 | import cuchaz.enigma.mapping.ClassMapping; | 36 | import cuchaz.enigma.mapping.ClassMapping; |
| 37 | import cuchaz.enigma.mapping.ConstructorEntry; | ||
| 37 | import cuchaz.enigma.mapping.Entry; | 38 | import cuchaz.enigma.mapping.Entry; |
| 38 | import cuchaz.enigma.mapping.FieldEntry; | 39 | import cuchaz.enigma.mapping.FieldEntry; |
| 39 | import cuchaz.enigma.mapping.Mappings; | 40 | import 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 | ||