♧ strings는 바이너리 파일에서 문자열을 추출하기 위한 툴로서, GNU Binutils에 포함.
▷ strings를 이용하면 에러 메시지 검색 등 프로그램을 간단하게 분석해 볼 수 있음.
[ strings 사용법 ] |
strings의 기본적인 사용법은 간단하다. 문자열을 추출하고자 하는 바이너리 파일을 인수로 넘기기만 하면 된다. 바이너리 파일은 /bin/ls와 같은 실행 파일이나 foo.jpg, bar.mp3와 같은 임의의 바이너리 파일 모두 가능.
▷ 표준입력으로부터 바이너리 데이터를 읽어 들여서 처리할 수도 있다. strings는 grep명령과 함께 사용하면 편리하다. 다음 예에서는 'ignoring'이 포함된 에러 메시지를 검색 한다.
▷ 『-t radix 』 :: 문자열 앞에 파일의 오프셋을 출력 radix :: "x"-16진수, "d"-10진수, "o"-8진수 |
[ 문자열 판별 ] |
|
▷ strings는 기본적으로 「ASCII 문자(7비트)로 구성된 4바이트 이상의 표현 가능한 문자열」 이라는 규칙으로 문자열을 판별한다. 이 때문에 UTF-8로 프로그램에 삽입해 놓은 한글 (8비트)은 기본적으로 출력되지 않는다.
▷ UTF-8문자열을 출력하려면 strings 명령에 -eS 옵션을 사용한다. -e는 인코딩, S는 8비트라는 의미. 단, -eS를 사용하면 알 수 없는 문자열도 많이 출력되므로 -n 옵션으로 출력에 필요한 바이트 수(기본 값 4)를 늘려서 출력될 문자열을 조절할 필요가 있다. % strings -eS test |
[ 오브젝트 파일 처리 ] |
|
▷ strings는 내부적으로 BFD 라이브러리가 해석 가능한 오브젝트 파일 (실행 파일 또는 라이브러리 등)인지를 판별해서 오브젝트 파일인 경우에는 데이터 섹션만을 문자열 추출 대상으로 하게 된다. 이는 다음과 같이 C 프로그램에 포함된 문자열은 일반적으로 데이터 섹션에 포함되기 때문이다.
오브젝트 파일이 아닌 경우는 항상 파일 전체를 대상으로 문자열을 추출한다. 또한 표준입력으로부터 읽어 들인 경우 BFD로 판별할 수 없기 때문에, 이런 경우도 파일 전체를 대상으로 하게 된다. ▷ [ -a | --all | - ]옵션 :: 강제적으로 파일 전체를 대상으로 검색. ▷ [ -T ]옵션 :: 시스템 표준 외의 오브젝트 파일 형식을 지정.
|
'컴퓨터 서적 정리 > Binary Hacks' 카테고리의 다른 글
[Hack #15] addr2line - 주소에서 파일명과 행 번호 얻기 (0) | 2011.07.03 |
---|---|
[Hack #14] c++filt - C++ 심볼 demangle (0) | 2011.07.03 |
[Hack #12] nm - 오브젝트 파일에 포함된 심볼 확인 (0) | 2011.07.03 |
[Hack #11] objcopy - 실행 파일에 데이터 삽입하기 (0) | 2011.07.03 |
[Hack #10] objdump - (2) 오브젝트 파일 역어셈블 (0) | 2011.07.03 |