| [[컴퓨터공학|'''컴퓨터 과학 및 공학 {{{#!wiki style="font-family: Times New Roman, serif; display: inline;"]] | ||
| {{{#!wiki style="margin: 0 -10px -5px; min-height:calc(1.5em + 5px)" {{{#!folding [ 펼치기 · 접기 ] {{{#!wiki style="margin: -5px -1px -11px" | <bgcolor=#1282d7,#1282d7> 기반 학문 | 수학(해석학 · 이산수학 · 수리논리학 · 선형대수학 · 미적분학 · 미분방정식 · 대수학(환론 · 범주론) · 정수론) · 이론 컴퓨터 과학 · 암호학 · 전자공학 · 언어학(음운론 · 형태론 · 통사론 · 의미론 · 화용론) · 인지과학 |
| 하드웨어 | SoC · CPU · GPU(그래픽 카드 · GPGPU) · ROM · RAM · SSD · HDD · 참조: 틀:컴퓨터 부품 | |
| 기술 | 기계어 · 어셈블리어 · 바이오스 · 절차적 프로그래밍 · 객체 지향 프로그래밍 · 함수형 프로그래밍 · 해킹 · ROT13 · 일회용 비밀번호 · 사물인터넷 · 와이파이 · GPS · 임베디드 · 인공신경망 · OpenGL · EXIF · 마이크로아키텍처 · ACPI · UEFI · LinuxBoot · gRPC · 리버스 엔지니어링 · HCI · UI · UX · 대역폭 · DBMS · NoSQL · 해시(SHA · 브루트 포스 · 레인보우 테이블 · salt · 암호화폐) · RSA 암호화 · 하드웨어 가속 | |
| 연구 및 기타 | 논리 회로(보수기 · 가산기 · 논리 연산 · 불 대수 · 플립플롭) · 정보이론 · 임베디드 시스템 · 운영체제(멀티태스킹 · 프로세스 스케줄링 · 데드락 · 식사하는 철학자 문제 · 뮤텍스 · 세마포어 · 인터럽트) · 데이터베이스 · 컴퓨터 언어 · 프로그래밍 언어{컴파일러(어셈블러 · JIT) · 인터프리터 · 유형 이론 · 어휘 분석 · 파싱 · 링커 · 난해한 프로그래밍 언어} · 마크업 언어 · 메타데이터 · 기계학습 · 빅데이터 · 폰노이만 구조 · 양자컴퓨터 · 행위자 모델 · 인코딩(유니코드 · MBCS) · 네트워크(네트워크 포트) · 컴퓨터 보안 · OCR · 슈퍼컴퓨터 · 튜링 머신 · FPGA · 딥러닝 · 컴퓨터 구조론 · 컴퓨터 비전 · 컴퓨터 그래픽스 · 인공지능 · 시간 복잡도(최적화) · 소프트웨어 개발 방법론 · 디자인 패턴 · 정보처리이론 · 재귀 이론 · 자연어 처리(기계 번역 · 음성인식) · 버전 (버전 관리 시스템) · 난수생성 · 놀람 최소화 원칙 · 프레임워크 · 라이브러리 · 모듈 · API · ABI · 이진 탐색 |
| [[프로그래밍 언어|'''프로그래밍 언어 {{{#!wiki style="font-family: Times New Roman, serif; display: inline;"]] | ||
| {{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px" {{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)" {{{#!folding [ 목록 ] {{{#!wiki style="margin: -5px -1px" | <colbgcolor=royalblue><colcolor=#fff> ※ 나무위키에 등재된 프로그래밍 언어 목록 | |
| A | ActionScript · AdaT · AgdaTP · ALGOLT · ApexT · APL · awk · AssemblyT | |||||||
| B | BASIC | |||||||
| C | ||||||||
| D | ||||||||
| E | Elixir · | |||||||
| F | ||||||||
| G | GNU Octave · | |||||||
| H | ||||||||
| I | ||||||||
| J | ||||||||
| K | ||||||||
| L | LeanTP · | |||||||
| M | MATLAB · MaxV · MojoT · Moonlight | |||||||
| N | ||||||||
| O | OberonT · Objective-CT · | |||||||
| P | PascalT · Perl · | |||||||
| Q | Q#T · QML | |||||||
| R | ||||||||
| S | SAS · | |||||||
| T | ||||||||
| U | Udon | |||||||
| V | Visual Basic · Visual Basic .NET · Visual Basic for Applications · vvvvV | |||||||
| W | Wave | |||||||
| X | XSharp | |||||||
| Y | ||||||||
| Z | ZenScript · | |||||||
| 한글 | 누리 · 숨V · 씨앗 · 약속 · | |||||||
| T: 정적 타입 프로그래밍 언어 · P: 증명 보조 언어 · S: LISP 방언 및 S-표현식 기반 언어 · V: 시각적 프로그래밍 언어 | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 40%; min-height: calc(1.5em + 5px)" {{{#!folding [ 순위 ] {{{#!wiki style="margin: -5px -1px -10px" | {{{#!wiki style="min-height: calc(1.5em + 5px); margin: 0 -10px -5px" {{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ IEEE Spectrum 2025 ] {{{#!wiki style="margin: -5px -1px" | <tablewidth=100%><tablebgcolor=transparent><colbgcolor=#11a500><colcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 | <colbgcolor=#ff1100><colcolor=#fff> 직업 부문 상위 10개 프로그래밍 언어 | ||||
| 1 | Python | 1 | Python | |||||
| 2 | Java | 2 | SQL | |||||
| 3 | C++ | 3 | Java | |||||
| 4 | SQL | 4 | JavaScript | |||||
| 5 | C# | 5 | TypeScript | |||||
| 6 | JavaScript | 6 | C# | |||||
| 7 | TypeScript | 7 | C++ | |||||
| 8 | C | 8 | HTML | |||||
| 9 | Shell | 9 | Go | |||||
| 10 | Go | 10 | Shell | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ Stack Overflow 2025 ] {{{#!wiki style="margin: -5px -1px" | <colbgcolor=#ffa500><colcolor=#fff> 2025년 Stackoverflow 설문조사 상위 25개 프로그래밍 언어 | |||
| 1 | JavaScript | <colbgcolor=#ffa500><colcolor=#fff> 14 | Rust | |||||
| 2 | HTML & CSS | 15 | Kotlin | |||||
| 3 | SQL | 16 | Lua | |||||
| 4 | Python | 17 | 어셈블리어 | |||||
| 5 | Bash/Shell | 18 | Ruby | |||||
| 6 | TypeScript | 19 | Dart | |||||
| 7 | Java | 20 | Swift | |||||
| 8 | C# | 21 | R | |||||
| 9 | C++ | 22 | Groovy | |||||
| 10 | PowerShell | 23 | Visual Basic | |||||
| 11 | C | 24 | VBA | |||||
| 12 | PHP | 25 | MATLAB | |||||
| 13 | Go | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ TIOBE 2025 ] {{{#!wiki style="margin: -5px -1px" | <colbgcolor=#2777c2><colcolor=#fff> 2025년 10월 TIOBE 검색어 점유율 상위 20개 프로그래밍 언어 | |||||
| 1 | Python | <colbgcolor=#2777c2><colcolor=#fff> 11 | Fortran | |||||
| 2 | C | 12 | Perl | |||||
| 3 | C++ | 13 | R | |||||
| 4 | Java | 14 | PHP | |||||
| 5 | C# | 15 | Assembly language | |||||
| 6 | JavaScript | 16 | Rust | |||||
| 7 | Visual Basic | 17 | MATLAB | |||||
| 8 | Go | 18 | Scratch | |||||
| 9 | Delphi / Object Pascal | 19 | Ada | |||||
| 10 | SQL | 20 | Kotlin | }}}}}}}}}{{{#!wiki style="display: inline-table; min-width: 25%; min-height: calc(1.5em + 5px)" {{{#!folding [ PYPL 2025 ] {{{#!wiki style="margin: -5px -1px -10px" | <colbgcolor=green><colcolor=#fff> 2025년 11월 PYPL 검색어 점유율 상위 20개 프로그래밍 언어 | |||
| 1 | Python | <colbgcolor=green><colcolor=#fff> 11 | Ada | |||||
| 2 | Java | 12 | TypeScript | |||||
| 3 | C++ | 13 | MATLAB | |||||
| 4 | Objective-C | 14 | Kotlin | |||||
| 5 | R | 15 | PowerShell | |||||
| 6 | JavaScript | 16 | Go | |||||
| 7 | C# | 17 | Dart | |||||
| 8 | Swift | 18 | Ruby | |||||
| 9 | PHP | 19 | Lua | |||||
| 10 | Rust | 20 | VBA | }}}}}}}}}}}} | }}}}}}}}}}}} | |||
| 실행 방식 · 분류 · 언어 목록(분류:프로그래밍 언어 문법) · 언어별 예제 · 틀:프로그래밍 언어 문법 · 틀:난해한 프로그래밍 언어 | ||||||||
| Bomb Lab 밤 랩 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 최초 공개 | 2002년 6월 3일 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 개발 | Randal E. BryantㅣDavid R. O'Hallaron | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 개발 언어 | C, Assembly[1] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 최신 버전 | 0.0.0 - 2013년 3월 26일 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 확장자 | .tar | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 파일명 | bomb.tar[2] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 홈페이지 | 홈페이지ㅣREADMEㅣ다운로드[3] | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1. 개요
Bomb Lab은 컴퓨터 보안 및 리버스 엔지니어링을 공부하기 위한 프로그램이다.2. 특징
Bomb Lab은 바이너리로 구성된 실행 파일(bomb)을 제공하고, 소스 코드는 제공하지 않는다. 실행 파일을 분석하여 내부 로직을 파악을 해야하며 주어진 입력 값을 정확히 맞춰야 폭탄이 폭발하지 않는다. 기본적으로 Assembly x86 이해가 필수적이며, 바이너리 분석에는 GDB나 objdump, gdb-peda, IDA, Ghidra 등의 도구를 사용한다. 레지스터, 스택 프레임, 호출 규약 등 저수준 시스템 구조에 대한 이해가 필요하다. 정적 분석 및 동적 디버깅을 통해 내부 구조를 유추하며 문자열 비교, 조건 분기, 재귀 함수, 포인터 추적 등 다양한 구조가 존재한다.2.1. phase
기본적으로 총 6개의 phase로 구성되며, 각각의 phase마다 난이도가 올라간다. 각 phase마다 특정 문자열(혹은 숫자 또는 구조체)을 입력해야 통과된다. 잘못된 입력을 넣을 경우 폭탄이 터졌다는 메시지와 함께 bomb exploded가 발생한다.3. 개발환경
4. 문법
5. 여담
6. 관련 언어
| 하드웨어와 가까운 언어로써, Bomb Lab은 C로 작성된 프로그램을 Assembly로 디컴파일하는 과정을 거쳐 C 코드 내부의 동작을 해부하게 만드는 훈련이다. | |
| 기계에 가장 가까운 언어로써, 코드가 어떻게 작동하는지 정확히 보여주며 CPU 명령어 수준에서 어떻게 수행되는지 알아야 하며 버퍼 오버플로우, ROP, 스택 구조 등은 Assembly로 직접 봐야 이해가 편하다. |
[1] x86 Assembly이다.[2] 공식 사이트 기준, 다른 사이트에서 다운로드 시 파일명 다를 수도 있음.[3] 다운로드 홈페이지를 누를 경우 바로 다운로드가 되므로 유의 필요.