Log date · Sun
radare2 6.2.2: stronger JNI, Swift metadata and CIL analysis
radare2 6.2.2 improved typed JNI resolution, Swift metadata recovery and .NET CIL support, making cross-language seams in apps easier to analyze.
What happened on this date
At 2026-09-06T17:32Z (UTC), radare2 released 6.2.2, codenamed infandmore, with notes citing 388 commits from 22 contributors. App-relevant items include structured pseudocode output with loops, switches and try/catch; reworked function argument recovery covering floating-point arguments, calling conventions and variadic detection; analysis-time resolution of typed JNI table calls and native methods, plus a new JNI analysis plugin; parsing of DEX exception handlers; CIL (.NET) token resolution; Mach-O dSYM sideloading matched by architecture slice and UUID, with faster loading of files containing many Objective-C classes; a generic Swift metadata class loader and recovery of Swift struct field offsets from type metadata; and PE64 SEH fixes with MSVC C++ exception region parsing. The notes also list many parser memory-safety fixes.
Why it matters for protecting app logic
This update concentrates on the seams common in cross-platform apps: the JNI boundary between Java or Kotlin and native libraries, the type metadata the Swift runtime needs, and .NET CIL. Some teams move core logic into a .so on the assumption that the JNI boundary makes analysis harder; when a free tool resolves typed JNI calls automatically, that assumption weakens. Swift type metadata is required at runtime and cannot be removed entirely, so the structural information it reveals deserves its own review. To be clear about limits, the notes give no accuracy figures, and we cannot judge how well these improvements work on transformed binaries.
Checks you can run
First, inventory the JNI entry points of your own native libraries: whether they are exported by naming convention or registered dynamically, and how much business meaning the exported names and signatures reveal. Second, review Swift type names and field information in your release build, making sure sensitive meaning is not encoded in type naming. Third, confirm that debug symbols such as dSYM and PDB files stay internal and never ship with releases. Fourth, use current analysis tool versions in internal assessments and run them in an isolated environment, since the parsers themselves keep receiving memory-safety fixes.
Your checklist
- Inventory JNI exported names and signatures in your native libraries
- Check whether Swift type names leak business meaning
- Confirm dSYM/PDB files never ship with releases
Primary sources
- GitHub: radareorg/radare2 release 6.2.2 · Source date 2026-09-06 · Checked 2026-10-12