File tree Expand file tree Collapse file tree 2 files changed +25
-1
lines changed
deobfuscator-transformers/src/main/java/uwu/narumi/deobfuscator/core/other/impl/universal Expand file tree Collapse file tree 2 files changed +25
-1
lines changed Original file line number Diff line number Diff line change 22
33import uwu .narumi .deobfuscator .api .transformer .ComposedTransformer ;
44import uwu .narumi .deobfuscator .core .other .impl .clean .peephole .UselessPopCleanTransformer ;
5- import uwu .narumi .deobfuscator .core .other .impl .universal .number .InlineConstantValuesTransformer ;
5+ import uwu .narumi .deobfuscator .core .other .impl .universal .number .* ;
66
77/**
88 * Simplifies number operations on constant values.
@@ -11,6 +11,7 @@ public class UniversalNumberTransformer extends ComposedTransformer {
1111 public UniversalNumberTransformer () {
1212 super (
1313 InlineConstantValuesTransformer ::new ,
14+ EmptyArrayLengthTransformer ::new ,
1415
1516 UselessPopCleanTransformer ::new
1617 );
Original file line number Diff line number Diff line change 1+ package uwu .narumi .deobfuscator .core .other .impl .universal .number ;
2+
3+ import uwu .narumi .deobfuscator .api .asm .MethodContext ;
4+ import uwu .narumi .deobfuscator .api .asm .matcher .impl .*;
5+ import uwu .narumi .deobfuscator .api .transformer .Transformer ;
6+
7+ public class EmptyArrayLengthTransformer extends Transformer {
8+ @ Override protected void transform () throws Exception {
9+ scopedClasses ().forEach (classWrapper -> classWrapper .methods ().forEach (methodNode -> {
10+ MethodContext methodContext = MethodContext .of (classWrapper , methodNode );
11+ OpcodeMatch .of (ARRAYLENGTH )
12+ .and (FrameMatch .stack (0 ,
13+ OpcodeMatch .of (NEWARRAY ).and (FrameMatch .stack (0 , NumberMatch .numInteger ().capture ("array-length" )))))
14+ .findAllMatches (methodContext )
15+ .forEach (matchContext -> {
16+ methodNode .instructions .insert (matchContext .insn (),
17+ numberInsn (matchContext .captures ().get ("array-length" ).insn ().asInteger ()));
18+ matchContext .removeAll ();
19+ markChange ();
20+ });
21+ }));
22+ }
23+ }
You can’t perform that action at this time.
0 commit comments