How to recognize Standard C Library in Ghidra, like the LEGO Decomp?

If you need help with something, this is the place to be.
Post Reply
Tobleo
Posts: 1
Joined: Wed Aug 21, 2024 8:23 pm

How to recognize Standard C Library in Ghidra, like the LEGO Decomp?

Post by Tobleo »

Hello, I'm looking to decompile a game with Ghidra. The game is a Win32 program compiled in Visual Studio 6.0 (VC98).

The LEGO Island decompilation has many functions from the C Standard Library that have gone unrecognized by the game I'm working on. IDA recognizes these, and I'm assuming they're accurate. According to this Reddit post the lack of CRT support is a downside of Ghidra.

I'm wondering, how can I get these into Ghidra like the isledecomp has done? If possible, I'd like Ghidra to ignore newer Visual Studio versions like 2003. Ghidra recognizes a few, but not most of these functions.

Edit: The Function ID menu under Tools looks very close to what I'm looking for. It doesn't have an option to disable Visual Studio 2003 apart from older versions, but maybe I can somehow get a fiddb that includes the functions.

Edit 2: Ghidra can make fiddb and "populate" them using pdb files. Maybe one of VC98's 19 PDB files will help me. (They didn't.)
Halamix2
Posts: 11
Joined: Sat Dec 10, 2022 6:39 pm
Location: Poland
Contact:

Re: How to recognize Standard C Library in Ghidra, like the LEGO Decomp?

Post by Halamix2 »

In Function ID menu you can select which .fidbf files Ghidra should use.

I have similar issue, a game compiled with MSVC6, with standard library compiled in. If I can't find anything then I guess the best way to go would be to set up MSVC6 compiler, compile some programs with compiled in standard library (with debug data, or .pdb files), and then generate fidb; I might be completely wrong in my assumptions how to do that though.

There's also option to import data from c/h files IIRC; but that has issues with DirectX stuff (if you just want to match data types)

EDIT: After looking at FIDBs provided with the Ghidra, it looks like vs_older should target MSVC6.0. Be aware that only functions mentioned in the Ghidra/Features/FunctionID/data/common_symbols_win32.txt files will be included in that FIDB
Post Reply