Strip
1. 개요
strip은 GNU 바이너리 유틸리티 중 하나로, 컴파일된 바이너리 또는 오브젝트 파일에서 실행에 불필요한 정보를 제거하는 데 사용된다. 일반적으로 디버깅 정보와 심볼 테이블을 제거하여 역설계를 어렵게 만들어 바이너리 보안을 강화한다. 컴파일러 또는 링커를 사용하여 동일한 작업을 수행할 수도 있으며, GNU 컴파일러 모음(GCC)의 `-s` 옵션을 통해 링커가 디버깅 정보와 심볼을 제거하도록 할 수 있다. GNU 프로젝트는 GNU Binutils 패키지의 일부로 strip을 제공하며, Microsoft Windows를 포함한 다른 운영 체제로 이식되었다.
-
유닉스 프로그래밍 도구 -
펄
펄은 래리 월이 개발한 텍스트 조작에 강점을 가진 다목적 프로그래밍 언어이며, 1987년 펄 1.0이 처음 공개된 이후 여러 버전 업데이트를 거쳐 객체 지향 프로그래밍과 유니코드 지원 기능을 추가했고, 현재 펄 5가 널리 사용되며 CPAN을 통해 방대한 모듈 생태계를 제공한다. -
유닉스 프로그래밍 도구 -
GNU 컴파일러 모음
GNU 컴파일러 모음(GCC)은 리처드 스톨먼이 1987년 처음 출시한 자유 소프트웨어 컴파일러 시스템으로, C, C++, Fortran, Ada, Go 등 다양한 프로그래밍 언어를 지원하며 여러 명령어 집합 아키텍처와 플랫폼에서 널리 사용된다. -
유닉스 SUS2008 유틸리티 -
AWK
AWK는 1977년에 개발된 텍스트 처리 및 프로그래밍 언어로, 유닉스 환경에서 텍스트 처리를 위해 설계되었으며 정규 표현식 처리 기능을 통해 텍스트 분석, 데이터 추출, 보고서 생성 등 다양한 작업을 수행한다. -
유닉스 SUS2008 유틸리티 -
로케일
로케일은 소프트웨어 국제화 및 지역화에서 사용자 문화적 배경에 맞춰 사용 환경을 조정하는 설정으로, 표시 언어, 숫자/날짜 형식, 문자 분류, 통화 형식 등을 포함한다.
2. 설명
`strip`은 GNU 바이너리 유틸리티 중 하나로, 컴파일된 바이너리 또는 오브젝트 파일에서 실행에 필요하지 않은 정보를 제거하는 데 사용된다. 이 정보에는 일반적으로 디버깅 정보와 심볼 테이블이 포함되지만, 바이너리에 대한 변경 사항의 정확한 범위는 명령줄 옵션을 사용하여 프로그램 구현자의 재량에 맡겨진다.
`strip`을 사용하면 역설계를 어렵게 만들어 바이너리의 보안을 강화할 수 있다. 심볼 및 디버깅 정보가 없으면 바이너리의 프로그램 분석이 복잡해진다.
`strip`의 효과는 컴파일러 또는 링커를 사용하여 동일한 프로세스를 수행함으로써 직접 얻을 수도 있다. 컴파일러는 C 또는 C++와 같은 고급 프로그래밍 언어로 작성된 소스 코드를 컴퓨터 프로세서가 실행할 수 있는 머신 코드로 변환하는 프로그램이다. 반면에 링커는 컴파일러가 생성한 하나 이상의 오브젝트 파일을 가져와 단일 실행 파일로 결합하여 그 사이의 모든 심볼 참조를 해결한다.
예를 들어, GNU 컴파일러 모음 (GCC)에서는 `gcc`와 함께 "`-s`" 옵션을 사용하여 이 작업을 수행한다. 이렇게 하면 링커가 링크 프로세스 중에 디버깅 정보와 심볼을 제거하여 더 작고 strip된 실행 파일을 생성한다.
GNU 프로젝트는 GNU Binutils 패키지의 일부로 `strip` 구현을 제공한다. `strip`은 Microsoft Windows를 포함한 다른 운영 체제로 이식되었다.
2.1. 제거되는 정보
`strip`은 GNU 바이너리 유틸리티 중 하나로, 컴파일된 바이너리 또는 오브젝트 파일에서 실행에 필요하지 않은 정보를 제거하는 데 사용된다. 제거되는 정보에는 일반적으로 디버깅 정보와 심볼 테이블이 포함되지만, 명령줄 옵션을 사용하여 정보의 범위를 조절할 수 있다.
`strip`을 사용하면 역설계를 어렵게 만들어 바이너리의 보안을 강화할 수 있다. 심볼 및 디버깅 정보가 없으면 바이너리의 프로그램 분석이 복잡해진다.
`strip`의 효과는 컴파일러 또는 링커를 사용하여 동일한 프로세스를 수행함으로써 직접 얻을 수도 있다. 예를 들어, GNU 컴파일러 모음 (GCC)에서는 `gcc`와 함께 "`-s`" 옵션을 사용하여 링커가 링크 프로세스 중에 디버깅 정보와 심볼을 제거하여 더 작고 strip된 실행 파일을 생성한다.
GNU 프로젝트는 GNU Binutils 패키지의 일부로 `strip` 구현을 제공한다. `strip`은 Microsoft Windows를 포함한 다른 운영 체제로 이식되었다.
2.2. 보안 강화
`strip`은 컴파일된 바이너리 또는 오브젝트 파일에서 실행에 필요하지 않은 정보를 제거하는 GNU 바이너리 유틸리티 중 하나이다. 제거되는 정보에는 디버깅 정보와 심볼 테이블이 포함되지만, 명령줄 옵션을 통해 프로그램 구현자가 변경 범위를 조절할 수 있다.
`strip`을 사용하면 역설계를 어렵게 만들어 바이너리의 보안을 강화할 수 있다. 심볼 및 디버깅 정보가 제거되면 바이너리의 프로그램 분석이 복잡해진다.
`strip`의 효과는 컴파일러나 링커를 사용하여 직접 얻을 수도 있다. 예를 들어, GNU 컴파일러 모음 (GCC)에서는 `gcc`와 함께 `-s` 옵션을 사용하면 링커가 링크 프로세스 중에 디버깅 정보와 심볼을 제거하여 더 작고 strip된 실행 파일을 생성한다.
GNU 프로젝트는 GNU Binutils 패키지의 일부로 `strip` 구현을 제공하며, Microsoft Windows를 포함한 다른 운영 체제로 이식되었다.
2.3. 컴파일러 및 링커를 통한 strip
3.
4. GNU 프로젝트
5. 예시
`strip` 명령어의 사용 예시는 다음과 같다.
```text
$ strip foobar
```