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 you have read our privacy policy.

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