我正在解决picoCTF上的二进制攻击挑战,并发现了这段代码:
((void (*)())buf)();
其中buf
是一个字符array.
我解决了挑战,但似乎不能理解它到底在做什么.我看了this根线,但还是弄不清楚.
((void (*)())buf)();
是什么意思?
我正在解决picoCTF上的二进制攻击挑战,并发现了这段代码:
((void (*)())buf)();
其中buf
是一个字符array.
我解决了挑战,但似乎不能理解它到底在做什么.我看了this根线,但还是弄不清楚.
((void (*)())buf)();
是什么意思?
void (*)()
是一种类型,该类型是"指向函数的指针,该函数接受不确定的参数且不返回任何值".
(void (*)())
是按上述类型转换的类型.
(void (*)())buf
将buf
转换为上述类型.
((void (*)())buf)()
调用函数(不传递参数).
简而言之:它告诉编译器将buf
视为指向函数的指针,并调用该函数.