본문 바로가기
728x90

System Hacking10

#5 x86 Assembly part 2 (Dreamhack) 운영체제의 핵심 자료구조인 스택, C언어의 함수에 대응되는 프로시저, 그리고 시스템 해킹의 관점에서 매우 중요한 시스템콜과 관련된 어셈블리를 소개하겠습니다.https://dreamhack.io/ 해커들의 놀이터, Dreamhack해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향dreamhack.io x86-64 어셈블리 명령어Opcode: 스택x64 아키텍처에서는 다음의 명령어로 스택을 조작할 수 있다.push val : val을 스택 최상단에 쌓음연산rsp -= 8[rsp] = val예제[Register]rsp = 0x7ffffffffc400[stack]0x7ffff.. 2024. 5. 11.
#4 x86 Assembly part 1 (Dreamhack) https://dreamhack.io/ 해커들의 놀이터, Dreamhack해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향dreamhack.ioDavid Wheeler는 EDSAC을 개발하면서 어셈블리 언어(Assembly Language)와 어셈블러(Assembler)라는 것을 고안했습니다.어셈블러는 일종의 통역사이고, 개발자들이 어셈블리어로 코드를 작성하면 컴퓨터가 이해할 수 있는 기계어로 코드를 치환해줬습니다. 어셈블리어가 기계어보다는 인간이 이해하기 훨씬 쉬웠으므로, 개발자들은 더욱 편리하게 개발을 진행하였습니다. 그리고 기계어를 어셈블리 언어로 번역하는 역어셈.. 2024. 5. 11.
#3 Linux Memory Layout (Dreamhack) https://dreamhack.io/ 해커들의 놀이터, Dreamhack해킹과 보안에 대한 공부를 하고 싶은 학생, 안전한 코드를 작성하고 싶은 개발자, 보안 지식과 실력을 업그레이드 시키고 싶은 보안 전문가까지 함께 공부하고 연습하며 지식을 나누고 실력 향dreamhack.io 컴퓨터는 크게 CPU와 메모리로 구성되어 있고, CPU는 실행할 명령어와 명령어 처리에 필요한 데이터를 메모리에서 읽고 Instruction Set Architecture(ISA)에 따라 이를 처리합니다. 그리고 연산의 결과를 다시 메모리에 적재합니다.만약 공격자가 메모리를 악의적으로 조작할 수 있다면 조작된 메모리 값에 의해 CPU도 잘못된 동작을 할 수 있습니다. 이것을 메모리가 오염됐다고 표현하고, 이를 유발하는 취약점을.. 2024. 5. 10.
#2 x64 레지스터의 종류와 기능 (dreamhack 정리) 전 포스팅에서 레지스터란 CPU 내에서 데이터를 임시 저장하기 위한 고속의 작은 메모리 영역이라고 정의를 하였다. 1. x64 (64bit) 아키텍처: 레지스터x64 아키텍처에는 범용 레지스터(General Register), 세그먼트 레지스터(Segment Register), 명령어 포인터 레지스터(Instruction Pointer Register, IP), 플래그 레지스터(Flag Register)가 존재한다.1.1 범용 레지스터 (General Register)주용도는 있지만, 그 외의 다양한 용도로 사용될 수 있는 레지스터이다. 각각의 범용 레지스터는 8바이트를 저장할 수 있고, 부호 없는 정수를 기준으로 2^64 - 1까지의 수를 나타낼 수 있다.rax (accumulator register).. 2024. 5. 10.
728x90