본문 바로가기

2. Reversing (리버싱)/2) 개념 정리

(10)
[2025.04.05] 리버싱난다_3주차 활동 11강 DOS HEADER & DOS STUB -dos header 달리 dos stub은 옵션이다ms dos에서만 실행되는 코드 windows os에서는 실행안함. pe NT HEADER의 시작점 (첨부그림 빨간 동그라미 위에서 아래로 순서대로)DOS HEADERDOS STUBNT HEADER 12강 NT HEADER채트 엔진mz= 시작부분 앤티헤더란?image_nt_headers file headersimage_file_header이 네가지가 file header에 있고 file header은 image_nt_headers에 멤버고 image_nt_header은 nt header에 구성체다. 1. WORD MACHINEcpu 호환칩의 고유한 번호를 저장4c 01014c 2. WORD NUMBEROFS..
[2025.03.29] 리버싱난다_2주차 활동 참조 강의: 유튜브 Fin 강의 5강. 스택 (Stack)스택의 역할1. 함수 내 변수 임시저장2. 함수 호출 시 매개변수(파라미터) 전달3. 복귀 주소 저장 스택의 특징FILO (First - In - Last - Out) 선입후출 방식Push: 스택에 데이터를 넣는 작업Pop: 스택에 마지막으로 들어온 데이터를 빼는 작업Top: 스택의 가장 위에 들어있는 값Bottom: 스택의 가장 아래에 들어있는 값 스택에서 중요한 레지스터ESP: 스택 포인터, 유동적으로 값이 바뀜EBP: ESP의 값을 저장해 둠, 부동적인 레지스터 6강. 스택 프레임 (Stack Frame)EBP를 이용하여 스택 내의 변수 파라미터 복귀 주소에 접근하는 기법 예시 어셈블리 코드)Push EBP   // EBP 스택에 백업MOV ..
[2022.03.19] 어셈블리어, 레지스터 어셈블리어란? 어셈블리어(assembly language)는 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어이다. 0과 1의 이진수로 프로그램을 하는 기계어는 인간의 관점에서는 컴퓨터가 바로 읽을 수 있다는 점만 빼면 장점이 없는 언어이기 때문에 이를 보완하기 위해 나온 언어가 어셈블리어이다. 기계어와 명령어가 1:1로 대응되는 단어들로 구성되어 있으며 저급 언어는 컴퓨터와 가까운 언어이기 때문에 컴파일을 해도 간단한 명령으로 실행돼서 실행 속도가 굉장히 빠르다. 하지만 배우기가 어렵고 유지보수가 힘들다는 이유로 특수한 경우를 제외하고는 사용되지 않고 있다. 컴파일 vs 어셈블 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일(Complie)한다고 하고, 어셈블리어로..
[2021.11.13] 패킹과 언패킹, UPX, 매뉴얼 언패킹, 코드 인젝션 보호되어 있는 글입니다.
[2021.09.18] abex crackme 1&2, 어셈블러 보호되어 있는 글입니다.
[2021.09.11] 리버싱을 위한 준비, codeengn basic 01 보호되어 있는 글입니다.
[2021.09.11] 코드 분석, PE FILE FORMAT 보호되어 있는 글입니다.
[ 2021.09.04 ] 01. 리버싱을 위한 기초 지식 1. 리버싱을 위한 프로그램 실행구조 컴퓨터의 구성 3요소 : CPU, 메모리, 하드디스크 실행파일 = PE파일 { 헤더 - 중요정보 저장 (기본정보와 { 보디 - 코드와 데이터 저장 배치정보를 담고있음) 로더가 헤더의 중요정보를 분석하고 보디에 있는 코드와 데이터들을 메모리에 배치한다. 메모리 - 코드 영역 : 프로그래 코드 저장 - 데이터 영역 : 정적 변수, 전역 변수 - 스택 영억 : 매개 변수, 지역 변수 - 히프 영역 : 동적 메모리 할당 코드 영역과 데이터 영역은 프로그램 로딩시 사용되고 스택 영역과 히프영역은 프로그램 실행시 사용된다. C언어는 MAIN()함수부터 프로그램을 실행하는 것처럼 PE 파일은 엔트리 포인트 위치부터 프로그램을 실행한다. 명령어 실행 : CPU에 있는 제어장치, 연..