Now this is a great use of LLMs. Love it. So many old apps and games exist only in compiled form.
If it actually works.
I’d guess training a model on nothing but C and the resulting ASM would be much better.
It doesn’t look like it works very well. If I’m reading their results section correctly, it works less than 20% of the time on real world problems.
lol
Why LLM? What was wrong with training a model specifically for decompiling?
LLM is being used in a colloquial way here. It’s just how the algorithm is arranged. Tokenize input, generate output by stacking the most likely subsequent tokens, etc.
It still differentiates it from neural networks and other more basic forms of machine “learning” (god what an anthropomorphized term from the start…).
They did train a model specifically for decompiling.
Is the decompiled code guaranteed to be equivalent to the compiled code? While this might be cool it doesn’t seem that useful if you can’t reason about the correctness of the output. I skimmed the README and didn’t manage to figure it out
I can’t speak for this specific approach/system, but no. LLMs never really guarantee anything, and for translation roles like this, it’s hard to say how much help they provide. The main issue being that you now have to understand what the LLM generated before you can start fixing it and/or debugging it.
From my understanding, it trys to tackle the hardest part, getting from Assembly back to something human readable and not necessarily compilable out the gate
A large part of the tedious and intensive process of decompilation is just figuring out what chunks in ASM do what and working it out to named functions and variables
deleted by creator
I don’t get it, how is it better than ghidra? Or it tries to name func, vars and types too, which is hard work
Or it tries to name func, vars and types too,
It tries to do exactly that, it actually uses ghidra for the initial decompilation
Mmm, exciting, will it guess global unknown array variables, where god knows where they start/ends? From git example it seems just works in specific functions, not globally the whole code with global variable space




