본문 바로가기

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

(12)
[2025.05.17]리버싱난다_5주차 활동 참고강의- 유튜브 Fin 리버싱 강의 (18-23강), EAT(1,2), 프로그램 압축, 빠르게 OEP찾기, Relocation [IAT] 실행파일이 다른 모듈에서 사용하는 함수를 가르키는 포인터 함수로 모든 함수의 리스트이다. txt파일로 정리하며 여러 배열이 존재한다. PE파일이 다른 DLL파일에서 사용하는 함수 참조할 때 사용하며 PE파일내 참조하고싶은 모든 함수의 주소로 채워짐 이후 프로그램이 함수를 호출할 때 IAT에 저장된 함수를 호출한다 [Library] 다른 프로그램에서 호출하도록 관련 함수와 기능을 모아둔 파일이다. [EAT] 라이브러리 파일에서 제공하는 함수를 다른 프로그램에 가져다 사용하게하는 핵심 메커니즘이다. EAT를 통해서만 library가 내보내는 시작 주소를 알 수있다. PE..
[2025.05.10] 리버싱난다_4주차 활동 참고 강의 - 유튜브 Fin 리버싱 강의 (15 ~ 17강). RVA To RAW, IAT(1,2) RVA To RAW3회차 Section Header 설명각 섹션의 속성을 정의 한 것이 섹션 헤더로, 섹션의 속성이나 권한을 관리섹션 ? 부분마다 파트가 있다 정도로 생각code, data, rsrc(리소스) 3가지로 나누어서 섹션을 저장하는 이유가 뭘까?프로그램 복잡함 감소프로그램 안전성섹션헤더에 대해 잘 이해했다면 PE 파일이 메모리에 로딩되었을 때각 섹션에서 메모리의 주소(RVA)와 Offset을 잘 매핑할 수 있어야 한다.이런 매핑을 일반적으로는 RVA TO RAW라고 부른다→ RVA TO RAW : PE파일이 메모리에 로딩되었을 때, 각 섹션에서 메모리 주소(RVA)와 File Offset(RAW..
[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 보호되어 있는 글입니다.