3 ms·
That's simply untrue, since you don't know if I named a minified variable "x" as "foo", "bar", "mungus" or "chungus". You can guess that it might be mungus base
by soulofmischief 2y ago
That's simply untrue, since you don't know if I named a minified variable "x" as "foo", "bar", "mungus" or "chungus". You can guess that it might be mungus based on context, but it could very well be chungus. Recovering lost information is an example of extrapolation, and it is inherently probabilistic.
> all information relevant to the execution of the program can certainly be recovered.
This is moving goalposts as it has little to do with my original premise.
- Asraelite 2y agoIt doesn't really matter if it needs to extrapolate. Whether or not you called the variable "mungus", a sufficiently powerful LLM could infer that this is the best possible name for that variable to make it understandable for humans. Doing this across the entire codebase, it could create source code that is actually more readable than the original. Of course we're a long way off from this, but there's no reason it couldn't be done in theory.
- soulofmischief 2y agoPlease just look at my other comments because I find myself repeating myself over and over, my comment went past a lot of people's heads and they rushed towards defensiveness instead of understanding the simple, unarguable fact of life I laid out in my comment.
- Asraelite 2y agoSorry, I didn't mean to come across as disagreeing with you, I just wanted to point out what I thought was an interesting fact. Yes, the original source code is unrecoverable.
- soulofmischief 2y agoI tend to be username-blind and thought you were the person my comment replied to. Reading your comment on its own, I have no issue with it and I apologize for mistaking you for them!
- willy_k 2y ago> This is moving goalposts as it has little to do with my original premise. Your original comment was (replying to one) about “decompilation” of binaries. You seem to be talking about some fantasy perfect decompilation that gets variable names too, but no such decompilation tool or human-employable method does this, and I would argue that variable names aren’t information so much as they’re implicit context - proper code implies certain variable names (stylistic differences notwithstanding) and vice versa.
- soulofmischief 2y agoMy original comment, in full text: > Some transformations irrecoverably lose information. A recontextualization engine such as an LLM might be able to "recover" some information by comparing it to other code in its training set, but it's still a guess and not all code will have representation in the training set. It is a completely generalized statement about lossy transformations, aka transformations that aren't reversible with a 1 to 1 map. It says nothing in particular about decompilation, or getting variable names. > I would argue that variable names aren’t information so much as they’re implicit context You are free to argue what you want, but that doesn't change reality--variable names are information about the original state before it was irreversibly transformed. Is the information important to you and your current task? Who knows. But my original comment is absolutely correct.
- Retr0id 2y agoNone of that matters. Nobody cares if a variable is named "mungus" or "chungus", as long as the code is idiomatic and functions equivalently. 1:1 Source recovery is never the goal of decompilation, or reverse engineering in general. You just want functionally equivalent, idiomatic code.
- soulofmischief 2y agoDo you understand what information is and why my original comment about lossy transformations is entirely correct? It doesn't matter if you don't care about the information. It is still lost. > 1:1 Source recovery is never the goal of decompilation I am aware, but I appreciate the lesson. Now try to consider why that has no bearing on the points I've made.
- Retr0id 2y agoThe points you've made are "correct" but irrelevant.
- soulofmischief 2y agoIrrelevant to whom? Did I miss the meeting?