다음은 국내 해커 ohhara님이 이미 만들어 놓으신 dumpcode.h라는 헤더입니다. ==================================================================== // dumpcode.h by ohhara void printchar(unsigned char c) { if(isprint(c)) printf("%c",c); // 해당하는 값을 문자로 표시 else printf("."); // 출력 불가능한 문자는 그냥 .으로 표시 } // 메모리 시작 주소와 출력할 크기를 인자로 받음 void dumpcode(unsigned char *buff, int len) { int i; for(i=0;i<len;i++) { // 16바이트 단위로 주소 출력 if(i%16==0) printf("0x%08x ",&buff[i]); // hex 값 출력 printf("%02x ",buff[i]); // 해당 16진수들을 각각 문자로 출력 if(i%16-15==0) { int j; printf(" "); for(j=i-15;j<=i;j++) printchar(buff[j]); printf("\n"); } } // 마지막 라인이 16바이트 이하일 경우 정렬 유지 if(i%16!=0) { int j; int spaces=(len-i+16-i%16)*3+2; for(j=0;j<spaces;j++) printf(" "); // 부족한 공간만큼 space로 이동한 후, for(j=i-i%16;j<len;j++) printchar(buff[j]); // 남은 문자 값들 출력 } printf("\n"); } ==================================================================== 이를 소스 코드에 추가하거나, 혹은 dumpcode.h로 만든 후 include 시키면 dumpcode()라는 함수를 사용할 수 있게 됩니다. 또는 dumpcode.h를 /usr/include/ 디렉토리에 복사해 넣으시면 어느 경로에서든 include하여 사용하실 수 있습니다.
아래는 또다른 덤프코드(이게 깔끔함)
/****************************** * RAW 메모리를 16진수로 덤프 *******************************/ void dump(const unsigned char *data_buffer, const unsigned int length) { unsigned char byte; unsigned int i, j;
for(i=0; i < length; i++) { byte = data_buffer[i]; if (i%16 == 0) printf("%08x: ", (unsigned int)&data_buffer[i]); printf("%02x ", byte); // display byte in hex
if(((i%16)==15) || (i==length-1)) { for(j=0; j < 15-(i%16); j++) printf(" "); printf(" | "); for(j=(i-(i%16)); j <= i; j++) { // display printable bytes from line byte = data_buffer[j]; if((byte > 31) && (byte < 127)) // outside printable char range printf("%c", byte); else printf("."); } printf("\n"); // end of the dump line (each line 16 bytes) } // end if } // end for } |
'C,C++ ' 카테고리의 다른 글
C언어로 MYSQL 사용하기 [윈도우] (Access MySQL via C language) [windows] (0) | 2012.05.24 |
---|---|
winsock 에서 사용하는 함수를 linux 소켓에서 사용하기 (0) | 2012.05.22 |
음성채팅 프로그램 분석 [client] (Analysis about Voice chat) (1) | 2012.04.13 |
음성 파일 보낼때 음성타입 구조체 (The structure WAVE for Matex) (0) | 2012.04.12 |
calloc vs malloc 함수의 비교 (2) | 2012.03.21 |