4 ms·
Dumb question - Where are the machine learning de-compilers? Given an executable program, give me human-readable code that generates the executable exactly.
by VikingCoder 3y ago
Dumb question -
Where are the machine learning de-compilers?
Given an executable program, give me human-readable code that generates the executable exactly. With machine learning guessed function, type, variable names...?
I get that it's a very hard problem. But... Does it just not work? Or have people not done it yet? Or have I missed it?
- optimalsolver 3y agohttps://arxiv.org/abs/2010.00770 https://arxiv.org/abs/2010.00770
- sundarurfriend 3y agoI don't understand WebAssembly much other than superficially, but if wasm is going to be a new, harder level obfuscation for websites, making them harder to customize locally, then I hope ML/AI can counteract that and preserve the Web as a user-customizable space.
- VMG 3y agoYou can already do that to some extent with ChatGPT. Paste in the assembly and it gives pretty good results
- sl-1 3y agoThat is a good question! Training datasets should be pretty trivial for this, all open source software that is buildable on the internet could provide training sets (source code & compiled code). But I guess it would have to be trained specifically for every architechture.
- xwdv 3y agoThis is the killer app for me with AI. A way to get a non-copyrighted code for any program you already have binary code for.
- ealexhudson 3y agoThat sounds obviously transformative and on any non-trivial scale I can't see why copyright would be avoided.
- reaperman 3y agoI think you mean "non-transformative", although in this context I can see there's a bit of an ambiguity in how people would use the word "transform" to mean one thing w.r.t copyright and the "opposite" for code (really, orthogonal, but boolean evaluation would yield the opposite true/false). In copyright, "transformative" refers to modifying or adapting a copyrighted work in a way that creates a new and original expression; resulting in a new work with a different purpose or meaning. In terms of code, you'd "just be transforming" the assembly code to a systems language of your choice.
- skeaker 3y agoPersonally I think this would be very exciting. Currently there are a ton of projects to decompile older games (see the Mario 64 and Ocarina of Time de-compilations and subsequent native PC ports as an example), but those projects are huge and take whole teams years to finish. If you could simply point an AI at a project like that and have usable source code in a reasonable amount of time, it would be huge for those scenes. You would have a sort of defacto-open source moment for just about all software. It feels like the stuff of far off sci-fi.
- pitaj 3y agoThis actually doesn't sound that difficult, given we can produce a practically infinite training dataset using a compiler with existing programs. What's more interesting to me would be a model that can automatically port a program between languages, such as converting a C program to a fairly idiomatic Rust program.