일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- PE Header
- BOF
- SQL Injection
- Windows 11
- sctf 2021
- RVA
- Tutorial
- Windows Terminal
- oh-my-zsh
- IMAGE_IMPORT_DESCRIPTOR
- samsung ctf
- IMAGE_EXPORT_DIRECTORY
- zsh theme customization
- WSL
- ubuntu
- DOS Header
- 리버싱 핵심원리
- web
- GetProcAddress()
- stack based buffer overflow
- attack vector
- NT File Header
- Windows
- PE file format
- DOS Stub
- powerlevel10k
- Buffer Overflow
- NT Header
- docker
- NT Optional Header
- Today
- Total
목록Security/Reversing (7)
나만의 메모노트

DLL Injection 실행 중인 다른 프로세스에 특정 DLL 파일을 강제로 삽입하는 기술 다른 프로세스에서 LoadLibrary() API를 통해 특정 DLL Loading 강제 삽입된 DLL의 DLLMain() 함수 호출 삽입된 DLL은 해당 프로세스의 메모리에 대한 접근권한을 가짐 기능 개선, 버그 패치, 메시지 후킹, API 후킹 등 사용자가 원하는 다양한 일을 수행 현재 악성코드에 의해 악용되고 있음 DLL Injection 구현방법 원격 스레드 실행 - CreateRemoteThread() API 레지스트리 이용 - AppInit_DLLs 메시지 후킹 - SetWindowsHookEx() API 그 외 여러 가지 다양한 기법 존재 CreateRemoteThread() API를 이용한 DLL ..

EAT (Export Address Table) Windows OS에서 라이브러리(Library)란? 다른 프로그램에서 불러 쓸 수 있도록 관련 함수들을 모아 놓은 파일 (DLL/SYS) 대표적인 라이브러리 : Win32 API 핵심 라이브러리 파일 : kernel32.dll 개념 : 라이브러리 파일에서 제공하는 함수를 다른 프로그램에서 가져다 사용할 수 있도록 해주는 핵심 메커니즘 해당 라이브러리에서 Export하는 함수의 시작 주소를 정확히 구할 수 있음 Export 정보는 PE 파일 내 특정 구조체(IMAGE_EXPORT_DIRECTORY)에 저장 IMAGE_EXPORT_DIRECTORY 구조체는 PE File에 하나만 존재하며, PE Header에서 확인 가능 실제 IMAGE_EXPORT_DIRE..

IAT (Important Address Table) 개념 : 프로그램이 어떤 라이브러리에서 어떤 함수를 사용하고 있는지를 기술한 테이블 Windows OS의 핵심 개념인 Process, Memory, DLL 구조 등에 대한 내용이 함축되어 있음 DLL 로딩 방식 중 Implicit Linking에 대한 메커니즘을 제공하는 역할 디버거를 통해 IAT 확인 해보기 대상 프로그램 : notepad.exe CALL [1001104] → notepad.exe에서 kernel32.dll의 CreateFileW를 호출하는 명령어 CALL 명령어를 통해 호출하는 주소는 IAT 메모리 영역 (.text 섹션의 메모리 영역) 1001104 주소에 저장된 7C810CD9라는 값을 통해 CreateFileW를 호출 (직접 ..

NT Header IMAGE_NT_HEADERS NT Header의 구조체 3개 멤버로 구성 PE Signature : 50450000h(“PE”00) 값을 가짐 File Header 구조체 Optional Header 구조체 크기 : F8 (248byte) File Header IMAGE_FILE_HEADER 구조체 파일의 개략적인 속성을 나타냄 주요 멤버 각 멤버별 값들의 설정이 부정확할 경우 비정상 실행 1) Machine Machine 넘버는 CPU별로 고유한 값을 가짐 (32bit Intel x86 호환칩 = 14C의 값) winnt.h 파일에 정의된 Machine 넘버의 값 2) NumberOfSections 섹션의 개수 해당 값은 반드시 0보다 커야 함 정의된 섹션 개수와 실제 섹션이 다르면..

notepad.exe를 대상으로 Hex editor를 통해 바이너리 코드를 살펴보며 PE File Format 이해하기 Dos Header 초기 PE File Format Microsoft가 널리 사용되던 DOS 파일에 대한 하위 호환성을 고려하여 제작 PE Header의 첫 부분은 DOS EXE Header, 이후 IMAGE_DOS_HEADER 구조체로 확장 IMAGE_DOS_HEADER 구조체 크기 : 40h (64byte) 주요 멤버 e_magic : DOS signature (4D5A 👉 ASCll값으로 "MZ"를 의미함) e_lfanew : NT Header의 offset을 표시 NT Header 구조체의 위치를 가리킴 파일에 따라 가변적인 값을 가짐 Dos Stub Dos Header 아래에 ..

개요 PE (Portable Excutable) Windows OS에서 사용되는 실행 파일 형식 UNIX에서 사용되는 COFF(Common Object File Format) 기반 Windows OS에서만 사용 다른 OS로 이식성이 용이함 PE File PE32 : 32bit 형태의 실행 파일 PE+/PE32+ : 64bit 형태의 실행 파일 PE File Type OBJ를 제외한 모든 파일이 실행 가능한 파일 DLL, SYS 파일 등은 셸(Explorer.exe)에서 직접 실행할 수 없으며, 다른 형태의 방법(debugger, service, etc)을 이용하여 실행 가능 PE Header 실행 파일이 실행되기 위해 필요한 모든 정보가 구조체 형식으로 저장되어 있음 메모리 적재 위치, 실행 위치, 실행..

공부 목적으로 Cheat Engine을 이용하여 간단한 게임 핵을 만들어보았다. 이 싱글 게임은 어릴적 학교 컴퓨터실에서 많이 해봤던 피카츄 배구다. 이 게임은 포켓몬스터의 마스코트 캐릭터 피카츄가 몬스터볼을 사용해 배구를 하는 것으로 1명 또는 2명의 플레이어가 간단한 조작만으로 플레이가 가능한 싱글 게임이다. 2명의 플레이어가 서로 머리를 이용하여 몬스터볼을 치거나 스매쉬를 날려 가장 많은 포인트를 획득하는 플레이어가 승리를 가져가게 된다. 그럼 이제 치트 엔진을 이용해서 어떠한 상황에서도 내 점수만 올라가도록 메모리를 변조해보자!! 1. 메모리 분석 가장 먼저 Cheat Engine에 피카츄 배구를 Attach해줘야 한다. 그래야 메모리 분석을 할 수 있다. 그럼 이제 실제로 피카츄 배구를 플레이 ..