You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-**String Compression** - Compress string literals using deflate/base64 encoding to reduce size and obfuscate content
14
-
-**String Compression** - Compress string literals using deflate/base64 encoding to reduce size and obfuscate content
14
+
-**Method Inlining** - Inline simple methods to reduce call overhead and obfuscate control flow
15
+
-**Fake Interface Flooding** - Generate fake interfaces and implement them to confuse reverse engineering tools
16
+
-**Fake Exception Insertion** - Insert fake exception checks that never execute to complicate static analysis
15
17
-**Anti-Debugging Protection** - Runtime detection and response to debugging attempts
16
18
-**Reference Updating** - Automatically updates all references to renamed elements throughout the codebase
17
19
-**Inheritance-Aware Renaming** - Properly handles interface implementations and method overrides
@@ -577,6 +579,254 @@ The transformer automatically determines which strings to compress based on:
577
579
- Single words and short constants
578
580
- Format strings and patterns
579
581
582
+
## 🔧 Method Inlining
583
+
584
+
Method inlining replaces method calls with the actual method body, reducing call overhead and making the code harder to analyze by eliminating method boundaries.
585
+
586
+
### How It Works
587
+
588
+
The transformer identifies simple methods that are good candidates for inlining and replaces calls to these methods with their actual implementation.
589
+
590
+
**Original Code:**
591
+
```java
592
+
publicclassCalculator {
593
+
publicintadd(inta, intb) {
594
+
return a + b;
595
+
}
596
+
597
+
publicintcalculate() {
598
+
return add(5, 3); // Method call
599
+
}
600
+
}
601
+
```
602
+
603
+
**Obfuscated Code:**
604
+
```java
605
+
publicclassa1 {
606
+
publicinta1(inta, intb) {
607
+
return a + b; // Method still exists but may not be called
608
+
}
609
+
610
+
publicinta2() {
611
+
return5+3; // Method call inlined
612
+
}
613
+
}
614
+
```
615
+
616
+
### Features
617
+
618
+
-**Smart Method Selection** - Only inlines simple methods without complex control flow
619
+
-**Safety Checks** - Avoids inlining methods with field access or complex operations
620
+
-**Conservative Approach** - Prevents inlining that could break functionality
621
+
-**Stack-Safe** - Generates proper bytecode that passes JVM verification
622
+
-**Selective Inlining** - Only processes methods that benefit from inlining
Fake interface flooding generates synthetic interfaces and makes classes implement them, creating false inheritance relationships that confuse reverse engineering tools and static analysis.
660
+
661
+
### How It Works
662
+
663
+
The transformer creates fake interfaces with random methods and makes target classes implement these interfaces, adding noise to the class hierarchy without affecting functionality.
664
+
665
+
**Original Code:**
666
+
```java
667
+
publicclassDataProcessor {
668
+
publicvoidprocess(Stringdata) {
669
+
System.out.println("Processing: "+ data);
670
+
}
671
+
}
672
+
```
673
+
674
+
**Obfuscated Code:**
675
+
```java
676
+
// Generated fake interfaces
677
+
interfacea1 {
678
+
voidm1();
679
+
intm2(Strings);
680
+
}
681
+
682
+
interfacea2 {
683
+
booleanm3();
684
+
}
685
+
686
+
publicclassa3implements a1, a2 {
687
+
publicvoidprocess(Stringdata) { // Original method
-**Pattern Breaking** - Disrupts class hierarchy analysis
739
+
-**Reverse Engineering Difficulty** - Makes understanding class relationships harder
740
+
741
+
## ⚡ Fake Exception Insertion
742
+
743
+
Fake exception insertion adds conditional exception checks throughout the code that appear functional but never actually execute, creating complex control flow that complicates static analysis.
744
+
745
+
### How It Works
746
+
747
+
The transformer inserts exception checks with conditions that are mathematically impossible to satisfy, adding apparent complexity without affecting program execution.
748
+
749
+
**Original Code:**
750
+
```java
751
+
publicvoid processData(String input) {
752
+
if (input !=null) {
753
+
System.out.println("Processing: "+ input);
754
+
}
755
+
}
756
+
```
757
+
758
+
**Obfuscated Code:**
759
+
```java
760
+
publicvoid a1(String a2) {
761
+
// Fake exception check - hash will never equal Integer.MAX_VALUE
0 commit comments