
x86 Assembly🤖: Essential Part(2) # 서론 - 운영체제의 핵심 자료구조인 스택, C언어의 함수에 대응되는 프로시저, 그리고 시스템 해킹의 관점에서 매우 중요한 시스템콜과 관련된 어셈블리를 배움 스택: push, pop 프로시저: call, leave, ret 시스템콜: syscall # x86-64 어셈블리 명령어 1. Opcode: 스택 🧱 - x64 아키텍처에서는 다음의 명령어로 스택을 조작할 수 있음 push val // val을 스택 최상단에 쌓음 스택은 확장 될 때 기존 주소보다 낮은 주소로 확장되기 때문에 아래로 자람 pop reg // 스택 최상단의 값을 꺼내서 reg에 대입 2. Opcode: 프로시저 📜 - 프로시저(Procedure): 특정 기능을 수행하는 코드..

x86 Assembly🤖: Essential Part(1) # 서론 - 컴퓨터 속에는 복잡한 논리적 인과관계가 존재하고, 여러 개체가 상호작용하며, 그 세계에서 통용되는 기계어(Machine Code)가 있음 - 해커가 하는 일은 그 거대한 세계의 허점을 공격하여 시스템을 장악하는 것 - 시스템 해커: 컴퓨터의 언어로 작성된 소프트웨어에서 취약점을 발견해야 함 - David Wheeler: EDSAC을 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)라는 것을 고안 - 어셈블러(Assembler): 일종의 통역사, 개발자들이 어셈블리어로 코드를 작성하면 컴퓨터가 이해할 수 있는 기계어로 코드를 치환 > 어셈블리어가 기계어보다는 인간이 이해하기 쉬웠으므로, 개발자들은..

Background: Linux Memory Layout # 서론 - 컴퓨터는 크게 CPU와 메모리로 구성되어 있음 - CPU는 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고, Instruction Set Architecture(ISA)에 따라 이를 처리함. 그리고 연산의 결과를 다시 메모리에 적재 > 이는 CPU의 동작과 메모리 사이에 밀접한 연관이 있음을 의미 - 만약 공격자가 메모리를 악의적으로 조작할 수 있다면 조작된 메모리 값에 의해 CPU도 잘못된 동작을 할 수 있음 - 이것을 메모리가 오염되었다고 표현하며, 이를 유발하는 취약점을 메모리 오염(Memory Corruption) 취약점이라고 부름 - 시스템 해킹에 다양한 기법들이 있지만, 많은 공격 기법이 Memory Corru..

Background: Computer Architecture # 서론 - 컴퓨터는 각자 다른 기능을 수행하는 여러 부품들의 도움으로 작동 - CPU: 컴퓨터 작동에 핵심이 되는 연산을 처리하고, 저장 장치는 데이터를 저장 - 이외에도 GPU는 그래픽 데이터를, 랜카드는 네트워크 통신을, 사운드 카드는 소리 데이터를 처리하는 것에 특화되어 있음 - 각 부품들은 특징이 뚜렷하여 컴퓨터에서 고유의 기능을 수행함 - 서로 다른 부품들이 모여서 '컴퓨터'라는 하나의 기계로서 작동할 수 있는 것은 컴퓨터에 대한 기본 설계가 존재하기 때문 > 설계에 맞춰서 여러 하드웨어가 개발되고, 이들을 조립해서 컴퓨터가 완성됨 > 컴퓨터 과학에서는 이러한 설계를 '컴퓨터 구조(Computer Architecture)'라고 부름 ..