GN⁺: 모두를 위한 Reverse Engineering
(0xinfection.github.io)소개
-
x86 강좌
- Part 1: 목표
- Part 2: 기술
- Part 3: 악성코드의 종류
- Part 4: x86 어셈블리 소개
- Part 5: 이진수 시스템
- Part 6: 16진수 시스템
- Part 7: 트랜지스터와 메모리
- Part 8: 바이트, 워드, 더블 워드 등
- Part 9: x86 기본 아키텍처
- Part 10: 범용 레지스터
- Part 11: 세그먼트 레지스터
- Part 12: 명령 포인터 레지스터
- Part 13: 제어 레지스터
- Part 14: 플래그
- Part 15: 스택
- Part 16: 힙
- Part 17: 리눅스 설치 방법
- Part 18: vim 텍스트 편집기
- Part 19: 어셈블리 학습 이유
- Part 20: 명령 코드 처리
- Part 21: 프로그램 컴파일 방법
- Part 22: ASM 프로그램 1 [즉시 데이터 이동]
- Part 23: ASM 디버깅 1 [즉시 데이터 이동]
- Part 24: ASM 해킹 1 [즉시 데이터 이동]
- Part 25: ASM 프로그램 2 [레지스터 간 데이터 이동]
- Part 26: ASM 디버깅 2 [레지스터 간 데이터 이동]
- Part 27: ASM 해킹 2 [레지스터 간 데이터 이동]
- Part 28: ASM 프로그램 3 [메모리와 레지스터 간 데이터 이동]
- Part 29: ASM 디버깅 3 [메모리와 레지스터 간 데이터 이동]
- Part 30: ASM 해킹 3 [메모리와 레지스터 간 데이터 이동]
- Part 31: ASM 프로그램 4 [레지스터와 메모리 간 데이터 이동]
- Part 32: ASM 디버깅 4 [레지스터와 메모리 간 데이터 이동]
- Part 33: ASM 해킹 4 [레지스터와 메모리 간 데이터 이동]
- Part 34: ASM 프로그램 5 [레지스터를 통한 간접 주소 지정]
- Part 35: ASM 디버깅 5 [레지스터를 통한 간접 주소 지정]
- Part 36: ASM 해킹 5 [레지스터를 통한 간접 주소 지정]
- Part 37: ASM 프로그램 6 [CMOV 명령어]
- Part 38: ASM 디버깅 6 [CMOV 명령어]
- Part 39: ASM 해킹 6 [CMOV 명령어]
- Part 40: 결론
-
ARM-32 강좌 1
- Part 1: 삶의 의미
- Part 2: 숫자 시스템
- Part 3: 이진수 덧셈
- Part 4: 이진수 뺄셈
- Part 5: 워드 길이
- Part 6: 레지스터
- Part 7: 프로그램 카운터
- Part 8: CPSR
- Part 9: 링크 레지스터
- Part 10: 스택 포인터
- Part 11: ARM 펌웨어 부팅 절차
- Part 12: 폰 노이만 아키텍처
- Part 13: 명령 파이프라인
- Part 14: ADD
- Part 15: ADD 디버깅
- Part 16: ADD 해킹
- Part 17: ADDS
- Part 18: ADDS 디버깅
- Part 19: ADDS 해킹
- Part 20: ADC
- Part 21: ADC 디버깅
- Part 22: ADC 해킹
- Part 23: SUB
- Part 24: SUB 디버깅
- Part 25: SUB 해킹
-
ARM-32 강좌 2
- Part 1: 삶의 의미 Part 2
- Part 2: 숫자 시스템
- Part 3: 이진수 덧셈
- Part 4: 이진수 뺄셈
- Part 5: 워드 길이
- Part 6: 레지스터
- Part 7: 프로그램 카운터
- Part 8: CPSR
- Part 9: 링크 레지스터
- Part 10: 스택 포인터
- Part 11: 펌웨어 부팅 절차
- Part 12: 폰 노이만 아키텍처
- Part 13: 명령 파이프라인
- Part 14: 헬로 월드
- Part 15: 헬로 월드 디버깅
- Part 16: 헬로 월드 해킹
- Part 17: 상수
- Part 18: 상수 디버깅
- Part 19: 상수 해킹
- Part 20: 문자 변수
- Part 21: 문자 변수 디버깅
- Part 22: 문자 변수 해킹
- Part 23: 불리언 변수
- Part 24: 불리언 변수 디버깅
- Part 25: 불리언 변수 해킹
- Part 26: 정수 변수
- Part 27: 정수 변수 디버깅
- Part 28: 정수 변수 해킹
- Part 29: 부동소수점 변수
- Part 30: 부동소수점 변수 디버깅
- Part 31: 부동소수점 변수 해킹
- Part 32: 더블 변수
- Part 33: 더블 변수 디버깅
- Part 34: 더블 변수 해킹
- Part 35: SizeOf 연산자
- Part 36: SizeOf 연산자 디버깅
- Part 37: SizeOf 연산자 해킹
- Part 38: 전위 증가 연산자
- Part 39: 전위 증가 연산자 디버깅
- Part 40: 전위 증가 연산자 해킹
- Part 41: 후위 증가 연산자
- Part 42: 후위 증가 연산자 디버깅
- Part 43: 후위 증가 연산자 해킹
- Part 44: 전위 감소 연산자
- Part 45: 전위 감소 연산자 디버깅
- Part 46: 전위 감소 연산자 해킹
- Part 47: 후위 감소 연산자
- Part 48: 후위 감소 연산자 디버깅
- Part 49: 후위 감소 연산자 해킹
-
x64 강좌
- Part 1: 사이버 혁명
- Part 2: 트랜지스터
- Part 3: 논리 게이트
- Part 4: 숫자 시스템
- Part 5: 이진수 덧셈
- Part 6: 이진수 뺄셈
- Part 7: 워드 길이
- Part 8: 일반 아키텍처
- Part 9: 호출 규약
- Part 10: 불리언 명령어
- Part 11: 포인터
- Part 12: 유효 주소 로드
- Part 13: 데이터 세그먼트
- Part 14: SHL 명령어
- Part 15: SHR 명령어
- Part 16: ROL 명령어
- Part 17: ROR 명령어
- Part 18: 부트 섹터 기본 [Part 1]
- Part 19: 부트 섹터 기본 [Part 2]
- Part 20: 부트 섹터 기본 [Part 3]
- Part 21: 부트 섹터 기본 [Part 4]
- Part 22: 부트 섹터 기본 [Part 5]
- Part 23: 부트 섹터 기본 [Part 6]
- Part 24: 부트 섹터 기본 [Part 7]
- Part 25: 부트 섹터 기본 [Part 8]
- Part 26: 부트 섹터 기본 [Part 9]
- Part 27: x64 어셈블리 [Part 1]
- Part 28: x64 어셈블리 [Part 2]
- Part 29: x64 어셈블리 [Part 3]
- Part 30: x64 어셈블리 [Part 4]
- Part 31: x64 어셈블리 [Part 5]
- Part 32: x64 어셈블리 [Part 6]
- Part 33: x64 어셈블리 [Part 7]
- Part 34: x64 C++ 1 코드 [Part 1]
- Part 35: x64 C++ 2 디버그 [Part 2]
- Part 36: x64 C++ 3 해킹 [Part 3]
- Part 37: x64 C & 생명의 기원
- Part 38: x64 네트워킹 기본
- Part 39: 왜 C인가?
- Part 40: 헬로 월드 해킹!
- Part 41: 변수 해킹!
- Part 42: 분기 해킹!
- Part 43: 포인터 해킹!
-
ARM-64 강좌
- Part 1: 삶의 의미
- Part 2: 개발 환경 설정
- Part 3: "헬로 월드"
- Part 4: "헬로 월드" 디버깅
- Part 5: "헬로 월드" 해킹
- Part 6: 기본 I/O
- Part 7: 기본 I/O 디버깅
- Part 8: 기본 I/O 해킹
- Part 9: 문자 원시 데이터 타입
- Part 10: 문자 원시 데이터 타입 디버깅
- Part 11: 문자 원시 데이터 타입 해킹
- Part 12: 불리언 원시 데이터 타입
- Part 13: 불리언 원시 데이터 타입 디버깅
- Part 14: 불리언 원시 데이터 타입 해킹
- Part 15: 부동소수점 원시 데이터 타입
- Part 16: 부동소수점 원시 데이터 타입 디버깅
- Part 17: 부동소수점 원시 데이터 타입 해킹
- Part 18: 더블 원시 데이터 타입
- Part 19: 더블 원시 데이터 타입 디버깅
- Part 20: 더블 원시 데이터 타입 해킹
-
Pico 해킹 강좌
- Part 1: 이유와 방법
- Part 2: 헬로 월드
- Part 3: 헬로 월드 디버깅
- Part 4: 헬로 월드 해킹
- Part 5: char
- Part 6: char 디버깅
- Part 7: char 해킹
- Part 8: int
- Part 9: int 디버깅
- Part 10: int 해킹
- Part 11: float
- Part 12: float 디버깅
- Part 13: float 해킹
- Part 14: double
- Part 15: double 디버깅
- Part 16: double 해킹
- Part 17: "절대 권력은 절대적으로 부패한다!", 입력의 비극적 이야기
- Part 18: "800년 동안 나는 제다이를 훈련했다!", 입력의 힘
- Part 19: 입력
- Part 20: 입력 디버깅
-
Reverse Engineering For Everyone!
-
역공학이란 무엇인가?
- Wikipedia에 따르면, 역공학은 인공 객체를 분해하여 설계, 아키텍처, 코드 등을 밝히거나 객체에서 지식을 추출하는 과정임. 이는 자연 현상을 연구하는 과학적 연구와 유사함.
- 이 튜토리얼 세트는 역공학을 가능한 한 쉽게 만들기 위해 존재함.
- 이 포괄적인 역공학 튜토리얼 세트는 x86, x64, 32비트 ARM 및 64비트 아키텍처를 다룸.
- 초보자에게는 역공학의 기본 개념을 익히는 데 도움이 되며, 개념을 복습하려는 사람들에게도 유용함.
- PDF 또는 MOBI 형식으로 전체 튜토리얼 세트를 다운로드할 수 있음.
-
역공학이란 무엇인가?
GN⁺의 정리
- 이 기사에서는 x86, x64, ARM-32, ARM-64 및 Pico 해킹 강좌를 포함한 다양한 역공학 튜토리얼을 다룸.
- 초보자부터 중급 수준의 역공학 기술을 익히고자 하는 사람들에게 유용한 자료임.
- 사이버 보안 분야에서 역공학 기술은 매우 중요함.
- PDF 및 MOBI 형식으로 튜토리얼을 제공하여 접근성을 높임.
- 유사한 기능을 가진 프로젝트로는 "Practical Reverse Engineering"과 "Reversing: Secrets of Reverse Engineering"이 있음.