최소 ELF 실행 파일에는 ELF 헤더와 최소한 하나의 프로그램 헤더만 있으면 작동합니다. 그러나 짧은 실행 파일에서 스트립을 실행하면 섹션 헤더 테이블이나 섹션 문자열 섹션을 삭제하지 않고 프로그램 실행에 아무런 목적도 제공하지 않더라도 유지하기로 결정합니다(내가 아는 한).
스트리핑으로 제거되지 않는 이유가 있나요? 실행 파일을 실행하는 데 필요하지 않은 모든 것을 제거할 수 있는 또 다른 유틸리티가 있습니까? 섹션 헤더를 제거하기 위해 만들고 있는 코드 골프 실행 파일을 수동으로 편집해 보았지만 제대로 작동하는 것 같고 훨씬 작습니다.
답변1
선적 서류 비치GNU 바이너리틸strip
힌트그 이유는 명시적으로 명시되지 않았지만 설명에 --only-keep-debug
언급되어 있습니다.
주 - 제거된 섹션의 섹션 헤더는 크기를 포함하여 유지되지만 섹션의 내용은 삭제됩니다. 실행 파일이 다른 주소 공간으로 재배치된 경우에도 다른 도구가 debuginfo 파일을 실제 실행 파일과 일치시킬 수 있도록 섹션 헤더가 보존됩니다.
즉, -R
옵션을 통해 명시적으로 지시 하지 않는 한 strip
섹션 헤더는 다른 프로그램(포함)이 작업을 수행하는 데 도움이 되도록 유지됩니다 gdb
.
이 페이지스트립 명령의 올바른 사용(부분Linux 운영 체제를 사용한 리버스 엔지니어링) 주석
실행 파일에 대해 명령을 실행하는 것은
strip
프로그램을 보호하는 가장 일반적인 방법입니다. 기본 작업에서 이strip
명령은 실행 파일에서 기호 테이블과 모든 디버깅 정보를 제거합니다. 이것이 일반적으로 사용되는 방법입니다. 그러나 여전히 제거되지 않은 몇 가지 유용한 정보가 있습니다.
그리고 뒤에 남을 수 있는 몇 가지 유용한 항목, 즉 분석을 위해 "제거된" 실행 파일을 나열합니다.
존재하다Linux 바이너리 분석 알아보기, 섹션 헤더는 일반적으로 누군가가 소유한 경우에만 손실된다는 의견과 함께 반복되었습니다.의도적으로이를 제거하면 섹션 헤더가 없어 거의 쓸모가 없게 됩니다 gdb
.objdump