FakePDB icon indicating copy to clipboard operation
FakePDB copied to clipboard

IDA Pro 9.0: structs export is not available

Open Mixaill opened this issue 1 year ago • 5 comments

https://github.com/Mixaill/FakePDB/blob/master/src_plugins/ida/fakepdb/dumpinfo.py#L320-L321

https://docs.hex-rays.com/developer-guide/idapython/idapython-porting-guide-ida-9

Mixaill avatar Oct 23 '24 00:10 Mixaill

Release compiled version please ^^'

dezmen3 avatar Oct 25 '24 21:10 dezmen3

@dezmen3 You can grab compiled version using the link in readme

https://nightly.link/Mixaill/FakePDB/workflows/CI/master/binaries.zip image

Mixaill avatar Oct 28 '24 08:10 Mixaill

@dezmen3 You can grab compiled version using the link in readme

https://nightly.link/Mixaill/FakePDB/workflows/CI/master/binaries.zip image

Thanks, my bad, tracked Release tab, latest was 2021 :/

dezmen3 avatar Oct 28 '24 09:10 dezmen3

@Mixaill actually, i'm having same issue with newer releases :/ My app is not exe but bin, so it's app.bin. If I use old pdbgen.exe and json generated by new fakepdb release - all fine, it works via this command: pdbgen.exe generate -l "D:\test\app.bin" "D:\test\app.bin.json" "D:\test\app.pdb" this one works too if i have bin renamed to exe: pdbgen.exe generate -l "D:\test\app.bin" "D:\test\app.bin.json" "D:\test\app.pdb"

But newer fakepdb_pdb.exe via IDA Pro 8.3 does not work :/ In IDA window i see what cmd passes to fakepdb_pdb.exe: ['pdb_generate', 'D:\\test\\app.bin.json', 'D:\\test\\app.pdb', 'D:\\test\\app.bin']

Tried manually call fakepdb_pdb.exe with various commands, same, pdb does not appear: fakepdb_pdb pdb_generate -l "D:\test\app.bin.json" "D:\test\app.pdb" "D:\test\app.bin" or fakepdb_pdb pdb_generate "D:\test\app.bin.json" "D:\test\app.pdb" "D:\test\app.bin"

IDA Pro shows something like this:

    * generating JSON: D:\test\app.bin.json
    * generating PDB: D:\test\app.pdb
    * symserv EXE id: b'4B973C9B2AD6000'
    * symserv PDB id: b'24F02463C1148B4A56955F131005093F6A'
    * done

Also, compiled fakepdb binaries does not show any info/errors when you launch them with cmd, they insta close as new window

dezmen3 avatar Oct 28 '24 11:10 dezmen3

@dezmen3 I've encountered this issue too, but unfortunately, I deleted that project. It also seems like the problem doesn't occur with all projects. Currently, I'm working with a very large database, which slows down the debugging process. Could you please share a small IDA .i64 file and/or its corresponding .pdb file that can reproduce this problem?

@Mixaill I built the project in debug mode and managed to trace the issue to this point:

if(nlohmann_json_j.contains("functions")) {
    nlohmann_json_j.at("functions").get_to(nlohmann_json_t.functions);
}

Which eventually leads to the following exception:

void from_json(const BasicJsonType& j, typename BasicJsonType::string_t& s)
{
    if (JSON_HEDLEY_UNLIKELY(!j.is_string()))
    {
        JSON_THROW(type_error::create(302, "type must be string, but is " + std::string(j.type_name()), j));
    }
    s = *j.template get_ptr<const typename BasicJsonType::string_t*>();
}

I suspect there's malformed data in the .i64 file that the FakePDB plugin doesn't validate properly, which later causes an exception during the JSON parsing phase.

Abbas-MG avatar Apr 15 '25 07:04 Abbas-MG