메모리 레이아웃(Memory Layout)이란 프로세스 가상 메모리(Virtual Memory)의 구성을 말합니다. 프로그램을 실행하면 운영체제는 프로세스에게 사용 가능한 메모리 공간을 할당합니다. 이 공간을 가상 메모리 라고 부릅니다. 메모리는 바이너리 실행에 중요한 역할을 하므로 프로세스 메모리 구조 - 섹션윈도우의 PE파일은 PE헤더와 1개이상의 섹션으로 구성되어있습니다.ex) ".text" 섹션에는 PE의 코드가 적혀있고, ".data"에는 PE가 실행중에 참조하는 데이터가 적혀있습니다. 섹션에 대한 정보는 PE헤더에 적혀있습니다. PE헤더에는 여러가지 정보가 담기는데 섹션과 관련된 데이터 중 중요한것은 * 섹션의 이름 * 섹션의 크기 * 섹션이 로드될 주소의 오프셋 * 섹션의 속성과 권한등이 있..
서로 다른 부품이 모여서 '컴퓨터'라는 하나의 기계로서 작동할 수 있습니다 이를 컴퓨터 구조(Computer Architecture) 라고 부릅니다 CPU가 사용하는 명령어와 관련된 설계를 명령어 집합구조 (Instruction Set Architecture, ISA)라고 함가장 유명하고 많이 사용되는 ISA가 x86-64 아키텍쳐 컴퓨터가 연산을 효율적으로 하기 위해 어떤 기능들이 컴퓨터에 필요한지 고민하고, 설계하는 분야입니다. 대표적으로 폰노이만 구조, 하버드 구조, 수정된 하버드 구조가 있습니다. 명령어 집합구조에는 ARM, MIPS, AVR, x86 및 x86-64 등이 있습니다. CPU의 하드웨어적 설계는 마이크로 아키텍쳐(Micro Architecture)라고 부름 현대적 컴퓨터의 기능 구..
리버스 란? 리버스 엔지니어링이란 '리버스'라는 용어가 의미하듯이 과정을 거꾸로 하는 행위를 말합니다. 위의 케이스에서 리버싱이 사용될 수 있습니다 - 판매 된지 너무 오래되어 개발이 중단된 프로그램에 패치가 필요할떄 - 프로그램의 보안성을 평가하거나 악성코드를 분석할떄 컴퓨터 언어의 발전 1. 컴퓨터과학자들은 컴퓨터에 명령을 내리기 위해 기계어(Machine Language) 라는 컴퓨터 언어를 정의했고 이것은 0과 1로 이루어져있어 사람이 이해하기 어려웠고 명령을 내리기에 비효율적이 었음 2. 사람이 이해하기 쉬운 새로운 언어로 어셈블리어(Assembly Language)를 고안했고 이를 기계어로 번역해주는 어셈블러(Assembler)를 개발함 3. 어셈블리어는 기계어에 비하면 효율적이었으나, 큰 큐..
오늘은 해킹의 기본적인 리눅스의 명령어에 대해서 정리해보고자 한다. 우리가 일상생활 사용하는것처럼 윈도우나, 맥을 사용할떄는 Graphical User Interface(GUI)를 통해 다소 편리하게 사용하지만 보안을 공부하면서 전문적으로 사용하기 위해서는 Character User Interface(CUI)를 사용하게 된다. 1. sudo apt update - apt 명령어로 설치 가능한 소프트웨어 패키지 목록을 업데이트합니다. 2. sudo apt upgrade - 리눅스에 설치된 소프트웨어 패키지의 버젼을 업그레이드 합니다. 3. id - 현재 유저의 유저ID와 해당 유저가 속해있는 그룹ID를 출력합니다. 4. pwd - Print Working Directory 줄임말로 현재 작업중인 디렉토리의..
- Total
- Today
- Yesterday