Linux/Linux_technic

strings - 의미 있는 문자열 dump

sosal 2009. 11. 8. 18:55
반응형

/*
 http://sosal.tistory.com/
 * made by so_Sal
 */


:: strings :: 어떤 파일에서 읽을 수 있는 문자열을 찾아내 출력해주는 개발도구

파일에서 주어지는 binary 코드에서, 적어도 4바이트보다 긴 문자열을 찾아내 출력한다.
초기화 되었거나, 오브젝트 섹션에 해당하는 파일은 위와 같이 처리하고,
만약 다른 형식의 파일은 파일 전체의 문자열을 출력.

보통 파일 안에있는 문자열을 보거나, 텍스트 파일인지 확인하기 위하여 자주 쓰여진다.

#include<stdio.h>
#include<string.h>

int main(void){
    char secret[10]={'\0',};
    char answer[10]="i'm_sosal_";

    printf("비밀번호를 입력하세요 :: ");


    scanf("%s",secret);

    if(strncmp(secret,answer,10)==0)
        printf("성공\n");
    else
        printf("실패\n");
}
위 소스는 암호 비슷한 파일인데..굉장히 허접한 암호파일입니다.

이파일을 컴파일하여 ELF(실행파일)로 만든다음에, strings로 내부 문자열을
훔쳐봅시다.



위 그림 우측에 있는 문자열들은 strings dump의 결과이고, 왼쪽은 메모리 구조입니다.
코드영역은 프로그램이 램에 올라와 있는 메모리 전체에, 가장 하단에 있습니다. (낮은주소 00000)
그래서 파일 안에 배열로 존재하는 문자열은 마지막에 출력되게 됩니다.

그럼 od로도 볼 수 있는지 확인해볼까요?
(od에 대한 사용법은 Linux_technic 2번글을 참조하세요.

'Linux > Linux_technic' 카테고리의 다른 글

Linux :: 디버거 GDB 디버깅 테크닉  (2) 2010.01.31
Hackerschool Level11 Exploit  (0) 2010.01.10
Object file - ELF 파일  (0) 2009.10.23
od - 바이너리 파일 덤프  (0) 2009.10.23
File - 파일종류 확인  (0) 2009.10.22