1

I used IDA Pro and got the following expression from a produced C file:

v25 = (*(int (**)(void))(v22 + 464))();

I am trying to figure out the meaning of the above expression with the following links:

http://www.unixwiz.net/techtips/reading-cdecl.html
http://www.codeproject.com/Articles/7042/How-to-interpret-complex-C-C-declarations

I start with (v22 + 464) and then go out of the parenthesis and to the left to the following *(int (**)(void)).

But, still can't understand. Any hints?

EDIT: I guess this expression is not a declaration but a function call.

(v22+464) is then cast to a pointer to a pointer to a function that takes void as an argument and returns an int. Then that pointer is dereference and the () operator is applied - the function is called.

1 Answer 1

3

(*(int (**)(void))(v22 + 464))() is a function call (v22 is an object (perhaps a vtable) that contains a function pointer).

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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