System (5) 썸네일형 리스트형 House of Force `malloc()`의 메모리 할당 과정/* finally, do the allocation */p = av->top;size = chunksize (p); /* check that one of the above allocation paths succeeded */if ((unsigned long) (size) >= (unsigned long) (nb + MINSIZE)) { remainder_size = size - nb; remainder = chunk_at_offset (p, nb); av->top = remainder; set_head (p, nb | PREV_INUSE | (av != &main_arena ? NON_MAIN_ARENA : 0)); set_head (r.. PLT/GOT 프로그램을 컴파일할 때 자주 사용하는 함수들은 라이브러리(library)에 따로 구현하여 사용한다. 이때 함수들을 사용하기 위해 오브젝트 파일과 해당 라이브러리를 연결해주는 과정이 필요하다. 이 과정을 링킹(Linking)이라고 한다.링크를 하는 방식에는 Static과 Dynamic이 있다.Static Link : 실행 파일 안에 모든 코드가 포함되기 때문에 라이브러리 연동 과정이 따로 필요 없고, 한 번 생성한 파일에 대해서 필요한 라이브러리를 따로 관리하지 않아도 된다. 따라서 해당 함수를 호출할 때, 라이브러리를 참조하는 것이 아니라, 자신의 함수를 호출하는 것처럼 호출한다.Dynamic Link : 실행 파일 안에 라이브러리 코드를 포함하지 않으므로, 함수를 호출하면 라이브러리에서 해당 함수의 주.. NX Bit NX Bit(Never eXecute bit) : 프로세스 명령어나 코드 또는 데이터 저장을 위한 메모리 영역을 따로 분리하는 기술NX 특성으로 지정된 모든 메모리 구역은 데이터 저장을 위해서만 사용되며, 프로세스 명령어가 그 곳에 상주하지 않음으로써 실행되지 않도록 만들어 준다. DEP(Data Execution Prevention) : 마이크로소프트 윈도우 운영체제에 포함된 보안 기능이며, 악의적인 코드가 실행되는 것을 방지하기 위해 메모리를 추가로 확인하는 하드웨어 및 소프트웨어 기술하드웨어 DEP : 메모리에 명시적으로 실행 코드가 포함되어 있는 경우를 제외하고 프로세스의 모든 메모리 위치에서 실행될 수 없도록 표시소프트웨어 DEP : CPU가 하드웨어 DEP를 지원하지 않을 경우 사용 Examp.. PIE PIE(Position-Independent Executable) : ASLR이 코드 영역에도 적용되게 해주는 기술 PIE 설정gcc -no-pie PIE.c -o NoPIEgcc를 할 때 -no-pie를 설정해주면 PIE 기법이 적용되지 않는다.gcc PIE.c -o PIE아무런 설정을 하지 않을 경우 default로 PIE가 적용된다. Example#include #include #include char *global = "Lazenca.0x0";int main(){ char *heap = malloc(100); char *stack[] = {"LAZENCA.0x0"}; printf("[Heap] address: %p\n", heap); printf("[Stack] addres.. ASLR ASLR(Address Space Layout Randomization) : 바이너리가 실행될 때마다 스택, 힙, 공유 라이브러리 등을 임의의 주소에 할당하는 보호 기법 ASLR 설정echo [0|1|2] > /proc/sys/kernel/randomize_va_space0 : ASLR 해제1 : 랜덤 스택 & 랜덤 라이브러리 설정2 : 랜덤 스택 & 랜덤 라이브러리 & 랜덤 힙 설정 ASLR 확인cat /proc/sys/kernel/randomize_va_space Example#include #include #include char *global = "Lazenca.0x0";int main(){ char *heap = malloc(100); char *stack[] = {"LAZENCA.0.. 이전 1 다음