2

I am currently writing a plugin for the Hex-Ray's Decompiler to be used on IDA 6.2. The basic gist is that it is supposed to get the decompiled functions and run some automated analysis on it, nothing exceptional.

My issue is that apparently IDA redefines the function vsscanf in the pro.h file, which is already defined in stdio.h.

Precisely, the snippet that does this is as follows (lines 426-428 in the pro.h file):

// non standard functions are missing:
#ifdef _MSC_VER
AS_SCANF(2, 0) int idaapi vsscanf(const char *input, const char *format, va_list va);

Now, I am honestly at loss as to how to resolve this issue and could not find any decent leads searching the web. I tried compiling this with MS Visual Studio 2013 on Win7 x64. But, with no success.

My best lead is that IDA will try this definition when compiling with MSVS. As seen here.

One of my considerations is to try and change the pro.h file. But, I am really not sure how that would work out.

Thanks for your time in advance.

Edit: I solved this by reverting to MSVS 2010. Apparently IDA 6.2/sdk 6.2 is not compatible with the modern MSVS 2013.

1
1

You shouldn't include stdio.h in your plugin; just use the functions in pro.h instead.

1
  • first off, thanks for your answer, Jason. As a matter of fact i only included IDA libraries (see below). After some search in the pro.h preprocessors i found that apparently when running in MSVS IDA will include stdio.h on its own, which is very curious to me by setting the USE_DANGEROUS_FUNCTIONS variable. These are my includes: #include <hexrays.hpp> #include <kernwin.hpp> #include <ida.hpp> #include <idp.hpp> #include <funcs.hpp> #include <gdl.hpp> #include <segment.hpp>
    – Viktor K
    Jul 15 '14 at 19:06

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.