Reverse engineering nim and other exotic binaries
Skill meltedinhex/analyst-ai-pack/skills/reverse-engineering-nim-and-other-exotic-binaries
Reverse engineers malware written in less-common compiled languages (Nim, Crystal, V, Zig, D) by detecting language-specific runtime signatures, name-mangling, and runtime strings to orient analysis. Activates for requests to reverse Nim malware, identify the source language of an exotic binary, or analyze Crystal/V/Zig/D compiled samples.From its SKILL.md
npx -y skills add meltedinhex/analyst-ai-pack --skill reverse-engineering-nim-and-other-exotic-binariesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 19 stars19 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as Apache-2.0. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
2.8 KB, 464 tokens by cl100k_base, as published. Nobody here has run it
Reverse Engineering Nim and Other Exotic Binaries
When to Use
- You have a compiled binary that is not C/C++/Go/Rust/.NET and need to identify its source language (Nim, Crystal, V, Zig, D) to orient analysis.
- Symbol/runtime patterns are unfamiliar and you want language-specific landmarks.
Do not use this for already-supported languages (Go/Rust have dedicated skills). This skill reads the binary statically and executes nothing.
Prerequisites
- The binary (read inertly).
Safety & Handling
- Read bytes statically; treat strings as untrusted.
Workflow
Step 1: Detect the source language
python scripts/analyst.py detect sample.bin
Scans for language runtime signatures: Nim (@m..nim, nimrtl, fatal.nim, stack trace,
@ /nim), Crystal (Crystal::, crystal-lang), V (vlib/, _vinit), Zig (zig, panic: ,
std.builtin), and D (_Dmain, core.runtime, TypeInfo_).
Step 2: Locate runtime landmarks
Use the detected language's panic/exception and module strings to find main/init and error paths.
Step 3: Handle name mangling
Apply the language's mangling convention (e.g., Nim's proc__module_NNN) to recover readable
names.
Step 4: Proceed with analysis
With the language identified, analyze logic; many exotic-language samples wrap the same C2/loader behavior.
Validation
- Language detection is based on multiple corroborating runtime strings, not one weak hit.
- Identified landmarks (panic/init) are consistent with the language.
- Name demangling matches the language's documented scheme.
Pitfalls
- Statically linked C runtime strings causing misclassification — weight language-specific markers.
- Stripped binaries with few runtime strings.
- Stagers in exotic languages that quickly hand off to shellcode.
References
- See
references/api-reference.mdfor the detector. - Nim manual and ATT&CK T1027 references (linked in frontmatter).
What ships with it: 3 files
3.4 KB alongside SKILL.md, 1 of them executable
references/
- api-reference.md1.2 KB
scripts/
- analyst.pyruns1.9 KB
- LICENSE340 B