- Dataflow analysis, to get an idea of the types/range of values you're working with
- Pattern matching to try to identify higher level constructs from math to loops to jump tables.
- Compiler-specific pattern matching to identify things like function entry points
- Signature pattern matching common functions (like C standard library calls), along the lines of what's used in High Level Emulation.
FWIK from classmates who made the decompiler, your post is the jist of it.
Many people are however used to working with its output, not due to having purchased copies, but due to having pirated copies.
It's closed source just at the moment. HexRays is closed too.
It can run on Linux or MacOSX as CLisp runs on those platforms. I just haven't started work on porting to new platforms.
It decompiles 6502 as a proof of concept. It can decompile other CPUs, but not fully.
The expiration is temporary. I intend to eliminate this.
Thanks for your comments, it's great to get feedback.
Just another thing: Check out the 'Samples' page to see what it can do with different CPUs.
Please do! That kind of discussion a big part of HN.
(Since this is your own work, we added "Show HN" to the title.)
How does it handle interrupt calls to the OS? It's not an issue for Windows (because it's all done through library calls, right?) But DOS int21 and Linux int80, for example?
With the x86 work, is the logic all built around protected mode? I've been using IDA to examine/document the assembly of a DOS game, so I'd be interested in the behavior if it's fed real mode code. Further (and tying in to my previous question), the game uses Borland overlays through int3f (it seeks in the binary itself and loads new sections of code into memory, while running, before jumping into the newly-retrieved code). Would that kind of thing be possible to handle automatically? IDA seems to be hard-coded to look for the offset+length tables that are used, and finds the function entry points that way.
More on the business side, you've got a way to request a quote, and the impression I get is that your aim is to run a decompilation business. Where does that leave the software itself? As a proprietary technology that lets you differentiate your business? Or is it your plan to sell the software, release binaries, release code, or some combination? My perspective is that of a hobbyist with a curiosity for reverse engineering and a (strictly non-commercial) project to apply it to, and I'm trying to figure out where this software fits into my world.