헤더파일과 소스코드를 오브젝트 파일로 일일이 컴파일을 해주어야 하는 불편함이 있어서 MakeFile이라는 것을 만들어서 간편하게 해보았다. CC = "gcc" CFLAGS = "-W" TARGET = exp $(TARGET) : pwnc.o exp.o $(CC) $(CFLAGS) -o $(TARGET) pwnc.o exp.o pwnc.o : pwnc.c $(CC) $(CFLAGS) -c -o pwnc.o pwnc.c exp.o : exp.c $(CC) $(CFLAGS) -c -o exp.o exp.c clean : rm pwnc.o exp.o exp 이런식으로 makefile을 구성하여 이제는 make명령어만 입력하면 자동으로 컴파일 되게 해놓았다. 실제로 컴파일한 뒤 실행하는 모습은 이렇다. 이런식으로..
최근 시험기간이라서 많이 코딩하지는 못했지만 우여곡절 끝에 전체적인 함수들과 구조체를 완성했고 이런 함수와 구조체를 별도의 헤더파일로 구성하면 끝이다. https://www.joinc.co.kr/w/Site/C/Documents/CprogramingForLinuxEnv/Ch12_module 리눅스 환경에서의 C 프로그래밍 - 12장 모듈과 라이브러리 공유라이브러리와 정적라이브러리의 장단점 www.joinc.co.kr GCC를 이용해서 헤더 파일들을 컴파일 한 뒤에 오브젝트 파일들을 링크하는 방식으로 해야 하는데 나는 그냥 헤더파일을 인클루드한 파일만 컴파일 하려해서 오류가 많이 발생했다. 그래서 위에 글을 참조해서 헤더파일 분리까지 완성했다. 또한 세이프 인클루드까지 해놓았다. 최종적인 소스코드는 이렇게..
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..
2021.05.11 - [1인 1프로젝트] - 코딩 중 코딩 중 데이터의 패킹&언패킹 함수 구현과 process함수의 동작방식을 자세하게 구상해보았다. 내가 구현한 패킹&언패킹 함수는 이렇다. unsigned long long * p64(unsigned long long value){ unsigned long long * tmp =.. youngsouk-hack.tistory.com 이전의 글에 이어 Process함수와 그 함수를 바탕으로 recv, send함수를 구현했다. void remote(char * ip, int port){ int SocketNum = socket(PF_INET, SOCK_STREAM, 0); struct sockaddr_in server_addr; if(SocketNum < ..
데이터의 패킹&언패킹 함수 구현과 process함수의 동작방식을 자세하게 구상해보았다. 내가 구현한 패킹&언패킹 함수는 이렇다. unsigned long long * p64(unsigned long long value){ unsigned long long * tmp = malloc(sizeof(unsigned long long) + 1); *(tmp) = value; *(char *)(tmp + sizeof(unsigned long long)) = '\0'; return tmp; } unsigned int * p32(unsigned int value){ unsigned int * tmp = malloc(sizeof(unsigned int) + 1); *(tmp) = value; *(char *)(tmp ..
2021.05.10 - [1인 1프로젝트] - 코딩 시작 코딩 시작 youngsouk-hack.tistory.com 이전에 했던 코딩에 이어서 GOT 정보를 얻어오는 함수를 구현하여 최종적으로 ELF의 정보들을 얻어오는 함수 및 구조체를 만들었다. 또한 해킹하고자 하는 프로그램이 사용한는 libc파일을 자동으로 얻어오는 함수를 구현했다. unsigned long long getGOT(GOT * got, char * target){ if(__glibc_unlikely(got == 0)) return 0; for(int i = 0; (got + i) -> addr != 0 || (got + i) -> name != 0; i++){ if(!(strcmp((got + i) -> name, target))) re..
보호되어 있는 글입니다.
보호되어 있는 글입니다.