But that wasn’t an injector. That was pre-loading. A real injector attaches to a running process.

Then he pushed his tool to GitHub, named it Shimmy , and wrote in the README: “This is not a DLL injector for Mac. Because such a thing barely exists. This is a story of what you do instead.”

It was 3 AM when Leo’s laptop screen flickered, casting jagged shadows across his cluttered desk. Empty energy drink cans stood like tiny sentinels around his keyboard. He was three days into a problem that should have been simple: a game mod he’d written for Guild Wars of the Ancients wouldn’t load.

“Okay,” he whispered. Disable SIP? No. That was cheating. Real injectors don’t break the system—they dance around it.

He saved his notes: “macOS injection is dead. Long live code injection via preload and entitlements.”

Leo leaned back. His reflection in the dark screen looked tired but grinning.

Right— task_for_pid() was locked down tighter than a bank vault. On modern macOS (12+), even with entitlements, you couldn’t just grab a task port unless the target process was complicit or you were root with SIP disabled.