Zasz Posted October 13, 2017 Posted October 13, 2017 Hello, I'm developing a processor module for IDA (using the C API) and I've run into something that has me quite annoyed. Sometimes, when I call the blocking functions from kernwin.hpp (warning(), for example, which displays a MessageBox), they would cause IDA to crash. Removing those function calls from the processor module makes it work fine. I'm calling those functions from within my emulator function, and when IDA calls my outputter afterwards to output the instruction it crashes inside the call I make to MakeLine(). Digging a bit deeper, it seems like IDA loads and unloads some sort of context related to the GUI or outputting of disassembled text into global variables inside ida.wll (6.6 version). It appears to load that context in setup_makeline() (at RVA EB4A) and unload it in finish_makeline() (at RVA F7B6), and for some reason when I start using warning() or other similar functions from kernwin.hpp, the outputter is called with the context unloaded so it eventually does a jump to NULL (at RVA F145) inside the call to MakeLine(). Are there any restrictions on the use of these functions in processor modules? Is there anything that I could have forgotten to do or anything you can think I could try? I'd appreciate any help and tips. Thanks. PS: wasn't sure if this was the proper section of the forum to post this. Apologies if it wasn't.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now