1주차 - 스테가노그래피
·
카테고리 없음
보호되어 있는 글입니다.
1주차 - 어셈블리어 기초, IDA 정적/동적 분석, 스택 프레임
·
카테고리 없음
보호되어 있는 글입니다.
Exercise: Helloworld
·
🌲 Dreamhack/Reverse Engineering
00. 서론이번 강의에서는 간단한 예제인 HelloWorld.exe를 분석해보는 실습을 진행할 것이다. 예제는 1초 대기하고 Hello, world!를 출력하는 프로그램이다. 소스코드를 제공하긴 하지만, 분석을 진행하는 동안은 프로그램에 대해 아는 것이 아무것도 없다고 가정하겠다./* File: hello-world.cpp Build opts: - /MT -> Library Static Linking - /DYNAMICBASE:NO -> Disable ASLR - /od -> Disable Optimization*/#include #include char* str;int main() { int delay = 1000; Sleep(delay); // 1000ms(..
Quiz: x86 Assembly 2
·
🌲 Dreamhack/Reverse Engineering
Q1.end로 점프하면 프로그램이 종료된다고 가정하자. 프로그램이 종료됐을 때, 0x400000부터 0x400019까지의 데이터를 대응되는 아스키 문자로 변환하면 어느 문자열이 나오는가?[Register]rcx = 0rdx = 0rsi = 0x400000=======================[Memory]0x400000 | 0x67 0x55 0x5c 0x53 0x5f 0x5d 0x55 0x100x400008 | 0x44 0x5f 0x10 0x51 0x43 0x43 0x55 0x5d0x400010 | 0x52 0x5c 0x49 0x10 0x47 0x5f 0x42 0x5c0x400018 | 0x54 0x11 0x00 0x00 0x00 0x00 0x00 0x00=======================[c..
Quiz: x86 Assembly 1
·
🌲 Dreamhack/Reverse Engineering
Q1.레지스터, 메모리 및 코드가 다음과 같다. Code를 1까지 실행했을 때, rax에 저장된 값은?[Register]rbx = 0x401A40=================================[Memory]0x401a40 | 0x00000000123456780x401a48 | 0x0000000000C0FFEE0x401a50 | 0x00000000DEADBEEF0x401a58 | 0x00000000CAFEBABE0x401a60 | 0x0000000087654321=================================[Code]1: mov rax, [rbx+8]2: lea rax, [rbx+8] 내 풀이) - 정답rbx는 메모리 주소를 저장하기 위해 사용되는 (범용)레지스터이다. 코드의 1..
x86 Assembly: Essential Part(2) [★]
·
🌲 Dreamhack/Reverse Engineering
00. 서론지난 코스에서는 산술연산, 논리연산, 비교(cmp, test), 분기(jmp, je, jg)의 어셈블리 명령어를 배웠다. 이번 코스에서는 OS의 핵심 자료구조인 스택, C언어의 함수에 대응되는 프로시저와 관련된 어셈블리 명령어를 공부할 것이다.스택: push, pop프로시저: call, leave, ret01. x86-64 어셈블리 명령어 pt.201.1. 스택 구조스택은 하향 성장한다. 즉, 메모리를 사용할 수록 밑으로 자란다스택은 top이 아래쪽에 있고, bottom이 위쪽에 있다.rsp라는 특수한 레지스터가 스택의 맨 아래 주소(top 원소)를 가리키고 있음  01.2. Opcode: 스택 push ★★push val = 현재 스택의 최상단(top)에 val의 값을 저장하는 연산스택은 밑..