ProGuard
A Java bytecode optimization and obfuscation tool used to shrink, optimize and obfuscate code. R8 is its replacement.
Timeline (last 90 days)
Code obfuscation (such as ProGuard, R8) only increases the difficulty of reading and cannot hide plaintext string constants, nor can it prevent reverse engineering from extracting hardcoded credentials.
Keep rules (ProGuard/R8 rules) are used to tell the optimizer which classes, methods or fields cannot be removed or renamed; for example, `-keep class com.example.** { *; }` retains all members under an entire package.
Obfuscation (such as ProGuard/R8 replacing class and method names with meaningless short identifiers), hardening (such as Bangcle, ijiami and the like protecting DEX with encrypted shells) and anti-debugging (detecting ptrace, debugger ports, emulator environments and so on) are the three most common categories of adversarial measures in Android reverse engineering.
All Facts (3)
Code obfuscation (such as ProGuard, R8) only increases the difficulty of reading and cannot hide plaintext string constants, nor can it prevent reverse engineering from extracting hardcoded credentials.
50%UnverifiedKeep rules (ProGuard/R8 rules) are used to tell the optimizer which classes, methods or fields cannot be removed or renamed; for example, `-keep class com.example.** { *; }` retains all members under an entire package.
50%UnverifiedObfuscation (such as ProGuard/R8 replacing class and method names with meaningless short identifiers), hardening (such as Bangcle, ijiami and the like protecting DEX with encrypted shells) and anti-debugging (detecting ptrace, debugger ports, emulator environments and so on) are the three most common categories of adversarial measures in Android reverse engineering.
50%