Skip to content

Releases: ykus4/kagura

v0.2.0

Choose a tag to compare

@ykus4 ykus4 released this 30 Jun 14:38
407aecc

What's New in v0.2.0

A wide-coverage release. Two new IR passes, three platform attestation runtime stubs, a full documentation site with Japanese translations, a CI fix for Windows / MSVC compatibility, two post-build CLI utilities, and a single-source-of-truth refactor for the pass registry.

📖 Full documentation: https://ykus4.github.io/kagura
📜 Full changelog: CHANGELOG.md

New passes

  • -kagura-cse-break — Defeats decompiler CSE-recovery (Ghidra, IDA hex-rays, Binary Ninja MLIL) by duplicating shared SSA expressions so every user sees a fresh definition.
  • -kagura-string-split — Fragments long string literals (≥16 bytes) across multiple smaller globals; recombines at runtime. Composes with kagura-str to ensure neither plaintext nor ciphertext lives contiguously.

Platform attestation

  • runtime/ios/device_attest.c — Apple DeviceCheck (iOS 11+) and App Attest (iOS 14+) C bindings
  • runtime/windows/etw_detection.c — Windows ETW-based analysis tool detection
  • (Android Play Integrity already shipped in 0.1.x)

Documentation site

  • Full MkDocs site at https://ykus4.github.io/kagura — auto-deployed from main
  • Cookbook: Banking / FinTech · Mobile game / anti-cheat · SDK vendor · DRM — recipe-style pages with threat models, policies, build commands, and verification steps
  • Security Model — STRIDE coverage matrix, hard non-goals, load-bearing assumptions
  • Japanese localization at /ja/ — 30 translated pages

Tooling

  • scripts/kagura-strip.py — Scrubs LC_UUID (Mach-O) / .note.gnu.build-id (ELF) post-build
  • scripts/kagura-diff.py — Section / symbol / string diff between baseline and obfuscated binaries (text / HTML / JSON)

Developer experience

  • Pass registry refactor: lib/Transforms/PassRegistry.def is now the single source of truth. Plugin.cpp: 378 → 197 lines (−181). Options.cpp: 205 → 116 lines (−89). Adding a new pass = 1 line.
  • Issue & PR templates with structured YAML forms
  • Windows CI: bumped LLVM 19 → 21 for new MSVC STL Clang ≥20 requirement

Prebuilt assets

Binaries for macOS arm64 / Linux x86_64 across LLVM 19 / 21 / 22 are attached below — published automatically by the release workflow.

v0.1.2

Choose a tag to compare

@ykus4 ykus4 released this 20 May 11:31
9786839

What's Changed

  • feat(bcf): diversify opaque predicates with 7 MBA variants by @ykus4 in #26
  • feat(wstr,vtp): Swift/Kotlin string encryption and MSVC VTP lit test (A.1, A.2) by @ykus4 in #27
  • feat(wasm): implement C.1 WebAssembly backend pass filtering by @ykus4 in #28
  • feat(a1-a2): Windows/MSVC support, Swift/Kotlin string encryption by @ykus4 in #29
  • refactor: remove implementation phase numbers from comments by @ykus4 in #30
  • refactor: remove phase numbers from tests README headings by @ykus4 in #31
  • docs(readme): add motivation, use cases, before/after examples, and performance section by @ykus4 in #32

Full Changelog: v0.1.1...v0.1.2

v0.1.1

Choose a tag to compare

@ykus4 ykus4 released this 13 May 10:18

What's Changed

  • docs: add CI and Release workflow status badges to README by @ykus4 in #20
  • fix: correct FLA/MVO/Substitution pass interactions and improve eval robustness by @ykus4 in #21
  • chore: move paper/benchmarks to scripts/benchmarks and ignore paper/ by @ykus4 in #22
  • fix/refactor/test: lift pass limitations, add Apple GOT hook detection, expand fuzz coverage by @ykus4 in #23
  • docs(todo): add newly identified implementation gaps by @ykus4 in #24
  • fix/refactor/test: lift pass limitations, expand fuzz coverage, and add Apple GOT hook detection by @ykus4 in #25

Full Changelog: v0.1.0...v0.1.1

v0.1.0

Choose a tag to compare

@ykus4 ykus4 released this 09 May 13:24
69ab63a

What's Changed

  • docs: update CONTRIBUTING.md release matrix to include Linux LLVM 22 by @ykus4 in #18
  • refactor: improve directory structure by @ykus4 in #19

Full Changelog: v0.0.7...v0.1.0

v0.0.7

Choose a tag to compare

@ykus4 ykus4 released this 09 May 13:14
5fd8a3b

What's Changed

  • feat: implement phase 4 by @ykus4 in #16
  • docs: update README.md, add TODO.md, move icon to assets/ by @ykus4 in #17

Full Changelog: v0.0.6...v0.0.7

v0.0.6

Choose a tag to compare

@ykus4 ykus4 released this 09 May 06:04
e73df40

What's Changed

  • fix(runtime): add missing headers in hook_detection.c and breakpoint_detection.c for Linux build by @ykus4 in #15

Full Changelog: v0.0.5...v0.0.6

v0.0.5

Choose a tag to compare

@ykus4 ykus4 released this 09 May 06:01
9b0193e

What's Changed

  • fix(runtime): move socket includes to file scope in anti_debug.c — fixes Linux build error by @ykus4 in #14

Full Changelog: v0.0.4...v0.0.5

v0.0.4

Choose a tag to compare

@ykus4 ykus4 released this 09 May 05:58
c49a571

What's Changed

  • ci: fix Linux clang++ path — use command -v instead of LLVM_PREFIX/bin by @ykus4 in #13

Full Changelog: v0.0.3...v0.0.4

v0.0.3

Choose a tag to compare

@ykus4 ykus4 released this 09 May 05:56
f61eab8

What's Changed

  • ci: add contents:write permission and fix brew link for llvm on macOS runners by @ykus4 in #12

Full Changelog: v0.0.2...v0.0.3

v0.0.2

Choose a tag to compare

@ykus4 ykus4 released this 09 May 05:50
7c3d44a

What's Changed

  • ci: add workflow_dispatch trigger for manual release asset upload by @ykus4 in #11

Full Changelog: v0.0.1...v0.0.2