HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
boricj
ghidra-delinker-extension
Assembly2023–2026
boricj / ghidra-delinker-extension

ghidra-delinker-extension

Ghidra extension for exporting relocatable object files

2Distinct people
25Mentions
0Explicit recommenders
607GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Ghidra extension for exporting relocatable object files

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

No recommendation phrase was found in the indexed comments.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 5:04:57 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year25 dated mentions

Observed mentions: 2023-10-12 22:28:05 UTC to 2026-09-21 18:45:39 UTC.

0510152023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments20232024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 13 mentions; 2 submissions, 11 comments20242025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 5 mentions; 0 submissions, 5 comments2026-01-01 00:00:00 UTC to 2027-01-01 00:00:00 UTC (exclusive): 6 mentions; 0 submissions, 6 comments. Incomplete calendar period.2026*

* An incomplete calendar period is marked with an outlined bar. Its count is not directly comparable with a full period.

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC101
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC13211
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC505
2026 (partial)2026-01-01 00:00:00 UTC2027-01-01 00:00:00 UTC606

What Hacker News says

25 sources
At work, DC power systems for the telecommunication market. Deceptively complex, think UPSes if they were made of Lego and scaled from kilowatts to hundreds of kilowatts, with installed bases stretching across decades. At home, ghidra-delinker-extension [1], a Ghidra extension for exporting relocatable object files (or in other words, stripping programs for parts like Doctor Frankenstein). Absurdly complex, got me a poster session at SURE workshop at ACM CCS last year, as a hobbyist. [1] https://github.com/boricj/ghidra-delinker-extension
In Ask HN: What is the most interesting project you are working on?
ghidra-delinker-extension [1]. It's a Ghidra extension for exporting relocatable object files from programs, which enables all kinds of heresy I've dubbed "Mad Max-driven development". Somehow, it landed me an academic poster presentation [2] at the 2025 SURE Workshop, part of ACM CCS 2025 held in Taiwan. As a hobbyist playing Doctor Frankenstein with bits instead of gibs in my spare time, that is "received an invitation from Hogwarts"-levels of impossible, given that ACM CCS is the biggest academic cybersecurity conference in the world. It also somehow grew a small community online around it, mostly within the Windows decompilation scene. It's not finished (as it is the kind of project that is practically endless), but I don't see how I could top that. [1] https://github.com/boricj/ghidra-delinker-extension [2] https://boricj.net/2025/10
Read the rest
In Ask HN: What Project are you the most proud of?
I wrote an analyzer to do that, you can find it here: https://github.com/boricj/ghidra-delinker-extension/blob/mas... It uses register dependency graph traversal and code block flow analysis to try and find which two instructions are the likely targets of a HI16/LO16 for a given reference. It also uses an unhealthy amount of recursion and has been rewritten multiple times in order to deal with all these edge cases. Unfortunately, my extension is only set up for one HI16 relocation having one or many LO16 child relocations. There's an undocumented GNU extension that allows multiple HI16 relocations to be shared by a single LO16 relocation, and I have a really ugly hack that shifts branch targets to "normalize" this into the standard pattern. I don't know why this hack works (I didn't even know about the GNU extension, I thought it was an a
Read the rest
ssembler peephole optimization), but with it my extension can delink the whole of Tenchu: Stealth Assassins without any manual annotations, just the regular references from the cleaned-up Ghidra database.
In Ask HN: What are you building that's not AI related?
I'm working on ghidra-delinker-extension [1], a relocatable object file exporter for Ghidra. Or in other words, a delinker. Delinking is the art of stripping program for parts, essentially. The tricky part is recovering and resynthesizing relocation spots through analysis. It is a punishingly hard technique to get right because it requires exacting precision to pull off, as mistakes will corrupt the resulting object files in ways that can be difficult to detect and grueling to debug. Still, I've managed to make it work on multiple architectures and object file formats; a user community built up through word of mouth and it's now actively used in several Windows video game decompilation projects. Recently I've experimented with Copilot and GPT-5.3 to implement support for multiple major features, like OMF object file format and DWARF debug
Read the rest
ging symbols generation. The results have been very promising, to the point where I can delegate the brunt of the work to it and stick to architecture design and code review. I've previously learned the hard way that the only way to keep this extension from imploding on itself was with an exhaustive regression test suite and it appears to guardrail the AI very effectively. Given that I work alone on this in my spare time, I have a finite amount of endurance and context and I was reaching the limits of what I could manage on my own. There's only so much esoterica about ISAs/object file formats/toolchains/platforms that can fit at once in one brain and some features (debugging symbols generation) were simply out of reach. Now, it seems that I can finally avoid burning out on this project, albeit at a fairly high rate of premium requests consumption. Interestingly enough, I've also experimented with local AI (mostly oss-gpt-20b) and it suffers from complete neural collapse when trying to work on this, probably because it's a genuinely difficult topic even for humans. [1] https://github.com/boricj/ghidra-delinker-extension
In Ask HN: What Are You Working On? (April 2026)
I'm working on ghidra-delinker-extension [1], which is a relocatable object file exporter for Ghidra. The algorithms needed to slice up a Ghidra database into relocatable sections, and especially to recover relocations through analysis are really tricky to get right. My MIPS analyzer in particular is an eldritch horror due to several factors combining into a huge mess (branch delay slots, split HI16/LO16 relocations, code flow analysis, register graph dependency...). The entire endeavor requires an unusual level of exacting precision to work and will produce some really exotic undefined behavior when it fails, but when it works you feel like a mechanic in a Mad Max universe, stripping programs for parts and building unholy chimeras from them, some examples I've linked in the readme. It has also led to a poster presentation to the SURE wor
Read the rest
kshop at ACM CCS 2025 in Taiwan as a hobbyist, an absolutely insane story. [1] https://github.com/boricj/ghidra-delinker-extension
In Ask HN: What are you building that's not AI related?
Might as well plug in my own extension: https://github.com/boricj/ghidra-delinker-extension It's a relocatable object file exporter that supports x86/MIPS and ELF/COFF. In other words, it can delink any program selection and you can reuse the bits for various use-cases, including making new programs Mad Max-style. It carved itself a niche in the Windows decompilation community, used alongside objdiff or decomp.me.
In Ghidra by NSA
Well, that's a long story. I'll try and keep it short. So I've worked in my spare time for the past three years on an extremely esoteric and mind-bending reverse engineering technique I call delinking [1] and my tool for it [2] developed a small user-base. At some point I saw in a Discord server a call for papers for the SURE workshop, shitposted that it'd be funny to fry academic brains for a change, then got baited into writing it. What started out as a long paper (12 pages) with quantitative case studies quickly got cut down to the bone and then some into a short paper (6 pages) that merely introduced my take on it and two qualitative case reports, because I realized it would take an amount of work on the scale of a master's thesis to do the long one. I barely managed to get that out of the door as my usual writing style is extremely u
Read the rest
nsuited for scientific papers (it took all the might of Gemini and Copilot to even wring out something that vaguely resembles academic vernacular from my first draft). I've submitted it, exhausted and deeply unsatisfied by the compromises I've had to do under that severe time crunch. Then one month later, the reviews came in. The feedback was that the topic and my take on it were interesting; the criticisms can be summarized by saying that I've missed existing related work and it would've taken the long paper to address all the deficiencies in my paper. Fair I guess, but I definitely don't have that kind of spare time to spare on writing papers. But alongside the notification decision, something unexpected was also sent: an invitation by the program committee to present a poster at the ACM CCS 2025 conference in Taiwan. This is the kind of world-class conference with a $1800 entry ticket, happening in a convention center whose area is measured in hectares, attended by professional members of an academic, industrial or state organization, all expenses paid in a five star hotel room with a king bed. Somehow, a hobbyist who can charitably be described as a Doctor Frankenstein but with bits instead of gibs, who creates unholy chimeras of programs in his free time in spite of ABIs and common sense, received an invitation from the Hogwarts School of Witchcraft and Wizardry equivalent of the cyber-security academic world to present a poster. I can't even begin to express how utterly impossible this is. So of course I said yes and now I'm in a mad dash to get everything ready in time for the conference, three weeks from now. Bonus point: it's on the other side of the planet and in my entire adult life I've basically never got farther away than the next county (and groaning while doing so). There's even more to that story, but I'll leave it for a blog post once it's done. [1] Others call it unlinking, binary splitting or binary reassembly. [2] https://github.com/boricj/ghidra-delinker-extension
In Cormac McCarthy's tips on how to write a science paper (2019) [pdf]
This wheel: https://github.com/boricj/ghidra-delinker-extension It's a Ghidra extension that can export relocatable object files from any program selection. In other words, it reverses the work done by a linker. I originally built this as part of a video game decompilation project, having rejected the matching decompilation process used by the community at large. I still needed a way to divide and conquer the problem, which is how I got the funny idea of dividing programs. That allows a particular style of decompilation project I call Ship of Theseus: reimplementing chunks of a program one piece at a time and letting the linker stitch everything back together at every step, until you've replaced all the original binary code with reimplemented source code. It's an exquisitely deep and complex topic, chock-full of ABI tidbits and toolchains
Read the rest
shenanigans. There's next to no literature on this and it's antithetical to anything one might learn in CS 101. The technique itself is as powerful as it is esoteric, but I like to think that any reverse-engineer can leverage it with my tooling. In particular, resynthesizing relocations algorithmically is one of those problems subject to the Pareto principle, where getting 80% of them right is reasonably easy but whittling down the last 20% is punishingly hard. Since I refuse to manually annotate them, I've had to relentlessly improve my analyzers until they get every last corner case right. It's by far the most challenging and exacting software engineering problem I've ever tackled, one that suffers no hacks or shortcuts. Once I got it working, I then proceeded in the name of science to commit countless crimes against computer science with it (some of those achievements are documented on my blog). Cross-delinking in particular, that is delinking an artifact to a different platform that it originates from, is particularly mind-bending ; I've had some successes with it, but I sadly currently lack the tooling to bring this to its logical conclusion: Mad Max, but with program bits instead of car parts. Ironically, most of my users are using it for matching decompilation projects: they delink object files from an artifact, then typically launch objdiff and try to create a source file that, when compiled, generates an object file that is equivalent to the one they ripped out of the artifact. I did not expect that to happen at all since I've built this tool to specifically not do this, but I guess when everything's a nail, people will manage to wield anything as a hammer.
In Reinvent the Wheel
You can find it here: https://github.com/boricj/ghidra-delinker-extension I've demonstrated a bunch of use-cases on my blog, ranging from porting software to pervasive binary patching and pilfering application code into libraries, all done on artifacts without source code available. I have one user in particular who successfully used it on a huge (7 MiB) program in a span of a couple of weeks, most of them spent fixing bugs on my end. They then proceeded to crank up the insanity to 11 by splitting that link-time optimized artifact into pieces and swapping parts out willy-nilly. That is theoretically impossible because LTO turns the entire program into a single translation unit subject to inter-procedure optimizations, so functions will exhibit nonstandard calling conventions you can't replicate with freshly built source code, but I guess
Read the rest
anything's possible when you binary patch __usercall into MSVC. I should get back to it once work is less hectic. Delinking is an exquisitely intricate puzzle to solve algorithmically and I've managed to make that esoteric but powerful reverse-engineering technique not only scalable to megabytes worth of code, but also within reach of everyday reverse-engineers.
In Collapse OS
That assumes you have a source tree to build. Decompilation output generally is meant for human consumption and is not suitable for a compiler without significant rework and carrying out a full decompilation project (even a non-matching one) is a lot of work. This is why traditional binary patching is the usual go-to option, because it doesn't require much upfront effort to perform. The downside is that you're constrained by the memory map of the original program and contorting your modifications to fit can be a huge pain. There are alternative, less widely known techniques out there with different tradeoffs. For example, if you can make the original program bytes relocatable then you can run those through a linker and let it mend both original and new parts together. I've built tooling to help do that specifically (delinking programs bac
Read the rest
k to object files [1]), it's faster than a decompilation project because you merely need to figure out and undo all the relocation spots, but you don't get source code at the end. [1] https://github.com/boricj/ghidra-delinker-extension
In Binary modding a water dispenser to save me from pressing a button (2021)
The Linux kernel source tree has nolibc [1], a header-only C standard library implementation that is about as barebones and paper-thin as it gets and is the next step up from a pure freestanding environment as shown in this article. I've used it to create a tiny but working program that prints out the ASCII table [2] as part of my Ghidra extension test suite. [1] https://github.com/torvalds/linux/tree/master/tools/include/... [2] https://github.com/boricj/ghidra-delinker-extension/tree/mas...
In A Simple ELF
boricj·Aug 22, 2024Submission

Show HN: A Ghidra extension for exporting parts of a program as object files

This Ghidra extension unrelocates machine code through analysis and then synthesizes a working object file from a listing selection. It effectively turns computer programs into Lego bricks, to be torn down into pieces and reused into something new. It supports the COFF and ELF object file formats, for the x86 and MIPS architectures. It has been successfully used on Linux, Windows and PlayStation executables. One user report is on a commercial video game from 2009 with a ~7 MiB Windows executable written in C++: it was delinked without its C runtime library and then relinked into a new executable at a different base address, with no visible change in functionality, as a prelude to a decompilation project. Use-cases I've demonstrated on my blog include modding, making software ports, converting executable file formats, creating libraries...
Read the rest
I've originally built this as part of a video game decompilation project ; I've been working on this over the past 2.5 years and recently it has started gaining some users besides me.
304 points · Open discussion

Showing the 15 most recent of 25 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.