본문 바로가기

전체 글56

[2주차 TIL] KnockOn Bootcamp - 탐색 알고리즘 🔍 1. 탐색 알고리즘이란?탐색(Search)은 데이터 집합에서 특정 값을 찾는 과정이다.데이터의 양이 많아질수록 탐색에 걸리는 시간이 길어지므로, 효율적인 알고리즘을 사용하는 것이 중요합니다.🔎 2. 순차 탐색 (Sequential Search)✅ 개념순차 탐색은 데이터를 처음부터 끝까지 하나씩 비교하여 원하는 값을 찾는 방법이야.정렬되지 않은 데이터에서도 사용할 수 있어.🧠 시간 복잡도최선의 경우: O(1) (첫 번째 요소가 원하는 값일 때)최악의 경우: O(n) (마지막 요소가 원하는 값이거나 없는 경우)평균적인 경우: O(n)💻 C언어 구현 예시#include int sequential_search(int arr[], int size, int target) { for(int i = 0.. 2025. 4. 15.
[2주차 TIL] KnockOn Bootcamp - 정렬 알고리즘 📘 정렬 알고리즘의 기초 – 버블, 선택, 삽입 정렬📖 개요정렬(Sorting)은 데이터를 특정한 순서(오름차순 또는 내림차순)로 재배열하는 알고리즘이다.정렬은 검색, 탐색, 데이터 처리의 전처리 과정으로 자주 사용된다.본 장에서는 세 가지 기본 정렬 알고리즘을 구현하고, 그 동작 방식과 차이점을 이해한다.💡 학습 목표버블 정렬(Bubble Sort)의 작동 원리와 구현선택 정렬(Selection Sort)의 작동 원리와 구현삽입 정렬(Insertion Sort)의 작동 원리와 구현각 정렬 알고리즘의 시간 복잡도 및 특징 분석1. 버블 정렬 (Bubble Sort) 📌 원리인접한 두 데이터를 비교하여 큰 값을 뒤로 보내는 방식.가장 큰 값이 '거품처럼' 맨 뒤로 밀려나는 원리.📌 시간 복잡도최악.. 2025. 4. 15.
[1주차 TIL] KnockOn Bootcamp - 트리 🔍트리(Tree) : 구조체 기반 메모리 구조 분석의 시작📖 개요트리(Tree)는 소프트웨어 내부 데이터 구조 중 가장 중요한 계층적 구조의 핵심이다. 트리는 프로그램의 다양한 데이터 흐름, 상태 변화, 구조 관계를 표현할 수 있으며, 리버싱 관점에서 이를 이해하고 분석하는 것은 실질적인 코드 흐름 해석, 오브젝트 파악, 루트 노드 기반 추적의 필수 능력이다. 본 장에서는 트리의 기초부터 순회, 구조체 구현, 그리고 리버싱 실전에서 트리 구조가 어떻게 분석되는지를 학습한다.📌 1. 트리란?트리는 노드(Node) 들이 연결되어 구성되는 비선형적이며 계층적인 자료구조이다. 각 노드는 다른 노드와 연결되어 있으며, 일반적으로 하나의 부모 노드와 0개 이상의 자식 노드를 가진다. 트리의 주요 특징:루트 노.. 2025. 4. 15.
[1주차 TIL] KnockOn Bootcamp - 스택 & 큐 📚 1. 스택과 큐 기본 정리 자료구조 작동 원리주요 연산비고스택(Stack)후입선출 (LIFO)push(), pop()함수 호출 스택, 버퍼 보호 등큐(Queue)선입선출 (FIFO)enqueue(), dequeue()작업 대기열, 패킷 처리 등🧠 왜 리버싱에서 중요할까?스택 : 함수 호출과 리턴 시 레지스터 및 복귀 주소가 저장되는 공간 → 리버서들은 항상 스택을 추적해야 함 (예: push ebp, call, pop)큐 : 이벤트 처리, 시스템 메시지 전달, 패킷 송수신 등 → 게임 서버 구조 분석 시 자주 나옴🛠 도전 과제 1 – 스택 구현1-1. 배열 기반 스택 (Array Stack)#include #include #define MAX_SIZE 100typedef struct { i.. 2025. 4. 15.
[1주차 TIL] KnockOn Bootcamp - 연결리스트 🔍 연결 리스트와 리버싱의 관계💣 왜 리버싱을 할 때 연결 리스트를 알아야 할까?리버스 엔지니어링 대상이 되는 프로그램(특히 게임, 운영체제, 드라이버 등)은 내부적으로 데이터를 아래처럼 저장하는 경우가 많다실시간으로 변하는 유저 정보 (ex. 체력, 아이템 목록 등) → 연결 리스트 구조객체 관리 시스템 (ex. 몬스터 리스트, 오브젝트 리스트 등) → 연결 리스트 또는 트리윈도우의 메시지 처리 시스템 (메시지 큐 등) → 이중 연결 리스트 사용👉 이 구조를 모르면:메모리 덤프를 분석할 때 포인터가 왜 연결되어 있는지 파악 못함구조체 간 관계 추적이 어려움동적 구조 탐지가 힘들어 Cheat Engine이나 x64dbg로도 정보 찾기 힘듦📦 연결 리스트 요약 종류 설명 특징 단일 연결 리스트다음.. 2025. 4. 15.
[1주차 TIL] KnockOn Bootcamp - 헤더파일 1. 개요✅ 표준 헤더 파일이란?, , 같은 헤더 파일은 C 표준 라이브러리의 일부이다. 이 파일들에는 함수 원형(prototypes), 매크로 정의, 구조체 선언, 상수 등이 정의되어 있다. 실제 구현은 .c나 .o 파일에 들어 있고, 컴파일 할 때 연결됩니다.// stdio.h 내부 일부 예시int printf(const char *, ...);int scanf(const char *, ...);FILE *fopen(const char *filename, const char *mode);🛠 사용자 정의 헤더 파일 만드는 법일반적으로는 아래와 같이 정의합니다..h 파일에는 선언만.c 파일에는 구현예시(main.c, hacker.h)//main.c#include "hacker.h"int main(){.. 2025. 4. 7.