SkillAgentSearch skills...

McNinja

Compile Binary Ninja's MLIL to LLVM, for purposes of analysis, patching, and compiling it back to a binary again.

Install / Use

/learn @ElykDeer/McNinja
About this skill

Quality Score

0/100

Supported Platforms

Universal

README

sneakyburgers

Compiles BinaryNinja's MLIL to LLVM

Approach

  1. Sweep binary for global variables, create them
  2. Sweep binary for (used?) external functions, declare those
  3. Sweep binary for internal functions, translate them

FAQ

Why MLIL instead of HLIL?

HLIL is an attractive source for compiling down to LLVM IR; it has dead stores eliminated, it has control flow constructs recovered, and several other small optimizations. However, LLVM IR's control flow is extremely simple - it has no for, no while, only conditional and unconditional branching - which makes MLIL significantly easier to convert.

How do you pronounce McNinja and where did the name come from

This is a hotly contested issue. We must explore the etymology of the name to find an answer. The "Mc" in McNinja was originally a contraction of the words "Machine Code," and the "ninja" is short for "BinaryNinja." It is possible that "MC" in that case is pronounced em-see. Alas, even those who understand the origin of the name pronounce it as if it were related to America's favorite fast food joint.

View on GitHub
GitHub Stars63
CategoryDevelopment
Updated7d ago
Forks3

Languages

Python

Security Score

85/100

Audited on Mar 30, 2026

No findings