programing

(void (*)부프)(;)는 무슨 뜻입니까?

nicescript 2022. 10. 20. 21:31
반응형

(void (*)부프)(;)는 무슨 뜻입니까?

picoCTF에서 바이너리 이용 과제를 해결 중 이 코드를 발견했습니다.

((void (*)())buf)();

어디에buf는 문자 배열입니다.

나는 도전을 풀었지만 정확히 무엇을 하는지 이해하지 못하는 것 같다.나는 이 실을 보았지만 알아볼 수가 없었다.

무엇인가.((void (*)())buf)();심술궂은가요?

void (*)()는 타입입니다.유형은 "미정의 인수를 사용하고 값을 반환하지 않는 함수"입니다.

(void (*)())는 상기 타입에 대한 타입캐스트입니다.

(void (*)())buf깁스buf위의 타입으로.

((void (*)())buf)()는 함수를 호출합니다(인수 없음).

요컨대:컴파일러에게 치료하라고 지시합니다.buf함수에 대한 포인터로, 그리고 그 함수를 호출합니다.

포인터buf는 지정되지 않은 수의 파라미터를 취합하여 무효 함수로 포인터로 변환된 다음 참조 해제(즉, 호출된 함수)됩니다.

형식 캐스트에 이어 함수 호출까지 합니다.일단은buf를 반환하는 함수에 대한 포인터에 캐스트됩니다.void괄호의 마지막 쌍은 함수가 호출됨을 의미합니다.

인수를 사용하지 않고 함수를 반환하는 포인터에 문자 배열을 캐스팅합니다.void를 호출합니다.함수 포인터의 작동 방식에 따라 포인터를 참조 해제할 필요가 없습니다.

설명:

이 "문자 배열"은 실제로 기계 코드의 배열입니다.어레이를 에 캐스팅할 때void (*)()그것을 호출하면, 어레이내의 머신 코드가 실행됩니다.어레이의 콘텐츠를 제공해주면 분해하여 기능을 알려드리겠습니다.

언급URL : https://stackoverflow.com/questions/59734421/what-does-void-buf-mean

반응형