rosieblue
article thumbnail
[C/C++] mmap 함수

오늘은 pwnable에 많이 나오는 mmap 함수에 다뤄보도록 하겠다. mmap이 무엇이고 왜 쓰는지? 일단 mmap은 메모리를 어떤 파일 혹은 디바이스에 대응시키는 함수이다. 그렇다면 "메모리를 파일로 대응시킨다는 것"이 무슨 뜻이고 "왜" 그래야만 할까? 🤔 컴퓨터 프로세스에서 각 프로세스는 다른 프로세스와 분리된 주소를 가지고 있어 서로 겹치지 않는다. 즉 프로세스 메모리는 서로 중복되지 않는다. 그렇기 때문에 프로세스 간 데이터 공유가 어렵다. 물론 이는 프로세스 안의 데이터를 보호하기에는 좋으나.. 저런식으로 데이터를 공유하고 싶을 때는 사실 불편할 것이다. 하지만 mmap을 이용하면 공유하고자하는 메모리를 아예 파일로 대응시켜놓고, 이를 여러 프로세스가 사용할 수 있다. 파일은 전역적인 객체이..

article thumbnail
[System] 컴퓨터 메모리 구조 / 레이아웃

들어가며 우리의 목적은 컴퓨터의 시스템을 잘 이해하고, 취약점을 알아내는 것이다. 컴퓨터의 데이터들은 메모리라는 공간에 들어있다. 허가 없이 메모리들을 수정하거나, 덮어쓰거나 하는 등의 행위를 하기 위해서는 메모리에 데이터들이 어떻게 나뉘어서 저장되어 있으며, 그 데이터들의 용도는 무엇이고 얼마나 접근가능한지에 대하여 알아야한다. 컴퓨터는 CPU에서 연산을 하지만, 메모리에서 데이터를 가져와 연산을 한다. 그리고 ISA에 따라서 명령어를 처리한다. 따라서 만약 메모리가 오염된다면, 이상한 데이터로 CPU가 이상한 연산을 하게 되어버린다. 이를 메모리 오염(Memory Corruption)이라고 한다. 따라서 메모리 오염을 방어/혹은 유발하려면 메모리 레이아웃에 대한 이해가 필수적이다. CPU나 메모리, ..

[C/C++] What is Pointer? - Pointer and Addresses

Before getting started .. // This course is going to deal with pointer basics in C for beginners. // EVERY C COURSE WILL BE IN ENGLISH. // Every question in English or Korean is always welcome :) Hi you all! This is Hannah, your new programming mate! And today we're going to learn about the meaning of pointer and addresses. POINTER and ADDRESSES pointer : A pointer is a 'variable' which stores '..