I'm reversing an application with IDA.My VM crashed and left the IDA database in a corrupted unpacked state. The next time I tried to load it back, IDA gave me the following error message: The input database is corrupted: CRC32 mistmatch. Continue? a few times, then it quit with the error bTree error: index file is bad. Google-ing these error messages gave no useful results, which is unusual. I'ld like restore the database, or at least extract the data somehow. I've already tried the following:Zynamics bindiff (couldn't open the IDB, said it's probably opened in another IDA instance, which I guess Is a result of the corrupted data)Manual hex diff - I just can't interpret the output.At this point I'm thinking of somehow parsing the IDB and then diffing that output manually.So, how can I parse/extract data from IDB files?Related.
Parsing/Rescuing corrupted IDA database
ida;binary analysis;file format;struct;hex
I published some tools on github which can do just that: https://github.com/nlitsme/pyidbutil and https://github.com/nlitsme/idbutil.The first is written in python, the second in C++, both have similar functionality.pyidbutil provides the most low level recovery options: using --pagedump you can dump each page in the file without the need of an intact logical file structure.