Skip to content

feat: EmptyArrayLengthTransformer#121

Merged
EpicPlayerA10 merged 2 commits intoDiobf:masterfrom
SpigotRCE:empty-array-length-transformer
Oct 26, 2025
Merged

feat: EmptyArrayLengthTransformer#121
EpicPlayerA10 merged 2 commits intoDiobf:masterfrom
SpigotRCE:empty-array-length-transformer

Conversation

@SpigotRCE
Copy link
Copy Markdown
Contributor

before:
image_2025-10-23_14-06-10
after:
{47851340-3861-4138-BC17-96A91EB74ECE}

@Animowany
Copy link
Copy Markdown
Contributor

I would refactor this code for more flow-safety and also for V2 codebase.
That would be my proposal for that transformer.

public class EmptyArrayLengthTransformer extends Transformer {
  @Override
  protected void transform() throws Exception {
    scopedClasses().forEach(classWrapper -> classWrapper.methods().forEach(methodNode -> {
      MethodContext methodContext = MethodContext.of(classWrapper, methodNode);
      OpcodeMatch.of(ARRAYLENGTH).and(
            FrameMatch.stack(0, OpcodeMatch.of(NEWARRAY).and(
                FrameMatch.stack(0, NumberMatch.numInteger().capture("array-length"))
            )
        )
      ).findAllMatches(methodContext).forEach(matchContext -> {
        methodNode.instructions.insert(matchContext.insn(), numberInsn(matchContext.captures().get("array-length").insn().asInteger()));
        matchContext.removeAll();
      });
    }));
  }
}

@SpigotRCE
Copy link
Copy Markdown
Contributor Author

thnx man

@EpicPlayerA10 EpicPlayerA10 merged commit 2d18e61 into Diobf:master Oct 26, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants