Page 1 of 1

do yall have a formal decompilation project people can contribute to

Posted: Tue Dec 13, 2022 1:29 am
by itsmeft24
title. is there an organized setup in place or yall just having fun with what stuff is interesting?

Re: do yall have a formal decompilation project people can contribute to

Posted: Tue Dec 13, 2022 3:01 am
by MattKC
Unfortunately there isn't really a good answer for this. Over the years there have been attempts at a formal project (there was even one publicly viewable on GitHub for a bit), but all of them eventually stalled due to other obligations/lack of time. Currently we're just gradually filling in Ghidra/IDA databases and hoping to eventually springboard a decomp off of that.

Re: do yall have a formal decompilation project people can contribute to

Posted: Tue Dec 13, 2022 4:25 am
by itsmeft24
is there like a ghidra server that people can pop in and contribute what they can?
also does lego island export any symbols (prob not worth asking tho lol)

Re: do yall have a formal decompilation project people can contribute to

Posted: Tue Dec 13, 2022 8:05 am
by MattKC
We have a Ghidra server for it, yes, though I'm not sure it's safe to open it to just anyone. AFAIK anyone with read/write access could completely torch it if they wanted to. Do you have any credentials/prior work?

There are a handful of exports between LEGO1.DLL and ISLE.EXE, but fairly limited stuff. No other debug symbols have been discovered on any release of the game.

Re: do yall have a formal decompilation project people can contribute to

Posted: Sun Jun 11, 2023 4:00 am
by maarten
In my re project, I tag every symbol with an address. This can be done with macros and/or comments. e.g.

Code: Select all

#define ISLE_VARIABLE(TYPE, NAME, ADDRESS)

int g_variable; ISLE_VARIABLE(int, g_variable, 0x1234567)
(it's also a must for my project since it hooks the original executable)

The string <-> name mapping can then be extracted using a (python) script.

A ghidra (python) script then does the following:
  1. Create a new Ghidra project and auto-analyze the program
  2. Create types by parsing .h headers from the re project. The project makes sure all types can be understood by ghidra's C parser.
  3. Use the dictionary mentioned above to tag global variables/functions.
This can also be done for IDA and others. That way you can compare the output of various decompilers.
The main disadvantage is that it doesn't transmit any tagging done inside a function.

url: https://github.com/madebr/rec2 (the work branch has more recent (untested) changes)