IDA Pro 9.0: structs export is not available
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
Release compiled version please ^^'
@dezmen3 You can grab compiled version using the link in readme
https://nightly.link/Mixaill/FakePDB/workflows/CI/master/binaries.zip
@dezmen3 You can grab compiled version using the link in readme
https://nightly.link/Mixaill/FakePDB/workflows/CI/master/binaries.zip
Thanks, my bad, tracked Release tab, latest was 2021 :/
@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 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.
