Profile

youngsouk

youngsouk

코딩&디버깅 중

interactive함수와 hexdump함수를 구현했다. 이 과정에서 interactive함수가 잘 동작하지 않아 gdb로 디버깅하는데 많이 애를 먹었다. 해킹할 프로그램도 디버깅해보면서 공격방법을 구상하였는데 hexdump()함수를 완성하여서 디버깅하기에 수월했다.

void interactive(){
    char * input = (char * ) malloc(INPUT_LIMIT); // 사용자의 입력 저장. 최대 크기 : INPUT_LIMIT 매크로 상수(기본 : 0x1000)

    printf("Switching to interactive mode\n");
    while(1){
        Recv(RECV_LIMIT, 1); // 입력받을 최대크기 : RECV_LIMIT 매크로 상수(기본 : 0x1000)
        write(1, "$", 1);
        *(input + read(0, input, INPUT_LIMIT)) = '\0';
        Send(input);
    }
}
void hexdump(void * target, int size){
    unsigned long long * t1;
    unsigned long long mask;
    unsigned long long tmp;
    for(long unsigned int i = 0; i < size / 16 + 1; i++){
        mask = 0xff;
        t1 = (unsigned long long *)target + i;
        printf("%08lx ", i);
        for(int j = 0; j < 16; j++){
            if(j % 4 == 0)printf(" ");
            tmp = *t1 & mask;
            printf("%02llx ", tmp >> (8 * j));
            mask = mask << 8;
        }
        printf(" ");
        mask = 0xff;
        t1 = (unsigned long long *)target + i;
        for(int j = 0; j < 16; j++){
            if(j % 4 == 0)printf("|");
            tmp = *t1 & mask;
            printf("%c", (char) (tmp >> (8 * j)));
            mask = mask << 8;
        }
        printf("\n");
    }
}

'1인 1프로젝트' 카테고리의 다른 글

MakeFile 생성 & 사용 모습  (0) 2021.06.15
완성  (0) 2021.06.14
코딩중  (0) 2021.05.25
코딩 중  (0) 2021.05.11
코딩 중  (0) 2021.05.10