blessed0x / put dylibs where they don't belong

iOS dylib injection, macOS debloating & Scratch MCP — pure Go, ship the bytes.

iOS reverse-engineering tooling in pure Go, macOS debloating, and a headless Scratch VM over MCP. One static binary walks into any machine. No python env, no drama.

arsenal/ — open source, from scratch

Three tools, zero runtime drama.

01 // iOS

xkvm-ios-injector — inject dylibs & tweaks into IPA files

A pure-Go IPA tweak injector — byte-faithful rewrite of the cyan / pyzule-rw bloodline. Inject dylibs and tweaks into IPA files you own, extract tweaks back out, and convert between jailbreak package layouts. Sideload injected apps on iOS 17+ — no Python, no venv.

repository
02 // macOS

macos-debloater — disable launchd services & reclaim RAM

A macOS debloat tool that disables the background services you don't use. Trim launchd agents and daemons, take back RAM, keep what you actually need. Four modes: one-click presets, a TUI, an enterprise config file, or manual pick.

repository
03 // MCP

scratch-unified-mcp — headless Scratch VM over MCP for AI agents

The first standalone headless Scratch VM over the Model Context Protocol — 108 MCP tools for AI agents to build, playtest, and publish Scratch projects. Turbowarp-powered, no browser attached.

repository

why blessed0x/

Reasons a byte-faithful rewrite wins.

01

One binary, no environment

Static Go builds. No python, no node, no dependency roulette. The tool behaves the same on your machine as it does in CI.

code
02

Diff-or-document discipline

Converters stay byte-faithful to upstream tools. When behavior must differ, the diff goes in the docs — never silent.

03

Network paths get fakes, always

Testable by design. Real devices optional, mock layers first-class. Behavior change means tests run first.

04

Mach-O, not magic

Signatures are DER, IPAs are zips, firmware is tar. Everything is a file — open it, read it, patch it.

stack/ — under the hood

Signals that drive accurate tooling.

Mach-O · codesign

dylib injection

Load-command surgery and code-signature handling on real binaries — inject, extract, and re-sign without breaking entitlements.

explore
launchd · macOS

service debloating

Know which daemons matter. Targeted launchd control with modes from one-click to enterprise config files.

explore
MCP · headless

protocol plumbing

Model Context Protocol servers that give agents real tools — 108 of them on a headless Scratch VM.

explore
Go · single static

ships anywhere

No runtime. No interpreter to babysit. Cross-compile once, deploy on anything that speaks the same bytes.

see it ship

ship/ — where this lands

Work that actually ships.

/ side-loading

IPA tweak injection pipelines

Sideload injected apps on iOS 17+ CoreDevice tunnels without babysitting Xcode.

/ debloat

macOS that behaves

Cut background noise, reclaim RAM, keep the services you actually use.

/ agents

AI agents that build Scratch

Playtest and publish Scratch projects from an agent loop, no browser attached.

/ bytes

Binary archaeology

If a format exists, it can be opened, diffed, and explained.

about/ — the one-line version

Blessed0x can tell the difference between code that works and code that merely compiles.

Go Mach-O dylib launchd MCP IPA codesign shell

faq/ — answers

Questions people actually ask.

When a converter rewrites an IPA, a signature, or a package layout, the output must match what the upstream tool would produce — down to trailing bytes. If behavior has to differ, the difference is documented in the repo, not smuggled in.

One static binary that walks into any machine — no interpreter, no venv, no version roulette. Go cross-compiles to everything and keeps the memory model boring enough to trust at 3am.

It's a tool for people who reverse-engineer iOS apps and run their own sideloading workflows. It injects dylibs into IPA files you already have the right to modify. Sign and run responsibly.

Everything is open source on github.com/blessed0x. Fork it, file issues, send patches. If a converter drifts from upstream, the diff belongs in the docs.

contact/ — inbox open

See your binaries behave.