Changelog
3.7.0
- Java 21 support
- Improved memory efficiency of loader
- Hardened string encryption and flow obfuscation against JVM-side hooking
- Improved performance of generated native code with CSE on JNI ID caches
3.6.0
- Java 20 support
- Zig 0.11.0 support (Zig 0.10.1 or newer is now required)
- New
<useIntrinsics>
option to enable supported Java methods, such asString#equals
, to be implemented directly in native code, preventing instrumentation. - Added static analysis to improve code generation by eliding null checks where they are not required.
3.5.1
- Fixed a rare mistranslation of long arithmetic
- Fixed a rare segfault on ARM compiles when multiple native threads attempt to load a class concurrently
- Optimised some corner cases in code generation
- Zig 0.10.0 or newer is now required
3.5.0
- Java 19 support
- New
<fastCompile>
option to improve compilation times for large projects - Faster, more compact and more secure native string encryption based on ChaCha20
- Support for annotations to include and exclude methods from translation
- Hardened
<flowObf>
against reverse engineering - Hardened invokedynamic translation against reverse engineering
3.4.0
- Java 18 support
- New
<flowObf>
option to enable native control flow obfuscation - New
<options>
section in the config which encloses<stringObf>
,<mangle>
and the new<flowObf>
option - Randomised data layouts in native code
3.3.0
- Up to a 40% reduction in file size for large projects
- Translations of
instanceof
andathrow
now handlenull
correctly - Targets are now compiled in parallel
- Hardened protection mechanisms against static analysis
3.2.0
- JNIC now requires Java 11+ and Zig 0.9.1+ to run, but can still process Java 8 classes
- Fixed a bug with
invokedynamic
translation on Java 9+ - Hardened protection mechanisms with
stringObf
enabled
3.1.1
- Loader class name is now randomly generated to prevent conflicts
3.1.0
- All native methods are now compiled into a single library
- Improved performance of generated code by up to 4x
- Improved performance of
invokedynamic
emulation by up to 10x - Significantly reduced file size overhead of string encryption
- Various bugfixes
3.0.0
- Java 17 support
- Obfuscation is now a single step
- Multi-platform support without needing to compile on each platform separately
- Various bugfixes
2.1.0
- Implemented per-user / online licencing
- Changed default optimisation level to
-O1
from-O3
2.0.0
- Implemented XOR based string encryption
<clinit>
is now translated by moving it to$jnicClinit
- Added
methodDesc
attribute to<match>
tags
1.0.1
- Java 14 support
- Relocated main package to
dev.jnic
1.0.0
Initial release