JNIF is a C++ library that can read, modify, and write Java bytecode. It is similar to bytecode rewriting frameworks like ASM or BCEL, but instead of being implemented in Java, it is implemented in C++.
The advantage of JNIF is that, unlike ASM or BCEL, it can be used for implementing JVMTI agents (which are written in native code). Thus, JNIF enables the development of dynamic analysis tools that require full bytecode coverage and minimal perturbation.
Check out the doxygen-generated documentation of JNIF.
The JNIF source code is available in our Git repository on GitLab.