radare2 디버거 용 Linux 시스템 호출 맵을 작성했습니다. 이것은 시스템 콜 번호를 시스템 콜 이름 이름과 인수의 수에 거대한 정적 배열 매핑을 제공하는 것을 의미합니다. syscall 번호는 sys/syscall.h에 정의되어 있으며 OpenBSD에서는 위의 주석에서 args 수를 쉽게 알 수 있습니다. 이것을 구문 분석하고 배열의 C 코드를 버리는 것은 스크립트 작성의 문제였습니다.Linux 시스템 호출 목록과 자동으로 취하는 args 수는 어떻게 얻을 수 있습니까?
그러나 Linux에서는 이러한 사치가 없습니다. 커널 헤더에서 syscall 번호를 얻는 것은 쉽지만 args 수는 어떻게해야합니까? 내가 가진 유일한 아이디어는 다음과 같습니다.
1) 수동으로 입력하십시오. 각각의 모든 아치에 대해 (그들은 리눅스에서 아치가 다릅니다). 모든 300+ 저주받은 물건. 안돼!
2) 매뉴얼 페이지를 구문 분석하십시오.
3) 프로그램이 빌드 될 때까지 0, 1, 2 ... args로 각 시스템 호출을 시도하는 스크립트를 작성하십시오. varargs에 대해서는 작동하지 않지만 syscalls는이를 지원합니까?
더 좋은 방법이있을 것입니다. 도와주세요!
varargs의 예는 'open()'을 참조하십시오. –
@OliverCharlesworth이게 무슨 뜻입니까? 'sys_open()'에는 정확히 3 개의 인수가 있습니다. – Ruslan