보안

보안/Reversing

Injection 기법

Injection : 실행중인 다른 프로세스에 DLL 또는 Code 를 강제로 주입하는 기법 Dll Injection : Library 파일을 다른 프로세스에 주입하는 기법 Code Injection : 다른 프로세스의 Memory 영역에 Code 를 주입하는 기법 인젝션은 아래와 같은 이유로 사용된다. 기존 프로그램의 기능 개선 및 추가, 버그 패치를하기위한 용도 Message, API 후킹을 하기위한 용도 실시간으로 다른 프로그램을 감시하기위한 용도

보안/Game Hacking

[ 봇을 이용한 게임해킹 ] 실습준비하기

봇을 이용한 게임해킹 [ 메모리 스캐닝에서 반응형 해킹까지 ] 라는 도서의 실습준비를 하는 글이다. 이책에서 제공하는 실습파일은 출판사인 에어콘 에서 다운로드 받을 수 있고, 책의 저자인 닉 카노 (Nick Cano) 의 깃허브에서도 다운로드 받을 수 있다. 압축을 풀고 /bin 폴더에서 실습프로그램을 실행하면 아래 사진과같은 에러가 발생하였다. 닉 카노의 깃허브페이지에서 폰트나 맵 로딩에 오류가 발생하면 arial.ttf 와 game.map 파일을 실행파일과 같은 디렉토리로 이동시킨 후 다시 시도하라고 한다. 그래서 옴긴뒤 실행하였더니 잘된다. 원글은 여기서 볼 수 있다.

보안/Reversing

PE 파일 구조 - IMAGE_SECTION_HEADER

#define IMAGE_SIZEOF_SHORT_NAME 8 typedef struct _IMAGE_SECTION_HEADER { BYTE Name[IMAGE_SIZEOF_SHORT_NAME]; union { DWORD PhysicalAddress; DWORD VirtualSize; } Misc; DWORD VirtualAddress; DWORD SizeOfRawData; DWORD PointerToRawData; DWORD PointerToRelocations; DWORD PointerToLinenumbers; WORD NumberOfRelocations; WORD NumberOfLinenumbers; DWORD Characteristics; } IMAGE_SECTION_HEADER, *PIMAGE_S..

보안/Reversing

PE 파일 구조 - IMAGE_OPTIONAL_HEADER

COFF Optional Header의 확장으로 윈도우의 링커나 로더가 요구하는 부가적인 정보를 담고있다. typedef struct _IMAGE_OPTIONAL_HEADER64 { // Standard fields. WORD Magic; BYTE MajorLinkerVersion; BYTE MinorLinkerVersion; DWORD SizeOfCode; DWORD SizeOfInitializedData; DWORD SizeOfUninitializedData; DWORD AddressOfEntryPoint; DWORD BaseOfCode; // NT additional fields. ULONGLONG ImageBase; DWORD SectionAlignment; DWORD FileAlignment; ..

보안/Reversing

PE 파일 구조 - IMAGE_FILE_HEADER

typedef struct _IMAGE_FILE_HEADER { WORD Machine; WORD NumberOfSections; DWORD TimeDateStamp; DWORD PointerToSymbolTable; DWORD NumberOfSymbols; WORD SizeOfOptionalHeader; WORD Characteristics; } IMAGE_FILE_HEADER, *PIMAGE_FILE_HEADER; IMAGE_FILE_HEADER 의 크기는 20bytes 로 WinNT.h 파일에 정의되어있으며 32비트, 64비트 모두 동일하다. 1. Machine PE파일의 CPU ID를 나타내는 시그니쳐로, WinNT.h 파일 내에 #define 을 통해 다양한 CPU ID들이 정의되어있다. 이 필..

보안/Reversing

PE 파일 구조 - IMAGE_NT_HEADERS

typedef struct _IMAGE_NT_HEADERS64 { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER64 OptionalHeader; } IMAGE_NT_HEADERS64, *PIMAGE_NT_HEADERS64; typedef struct _IMAGE_NT_HEADERS32 { DWORD Signature; IMAGE_FILE_HEADER FileHeader; IMAGE_OPTIONAL_HEADER32 OptionalHeader; } IMAGE_NT_HEADERS32, *PIMAGE_NT_HEADERS32; IMAGE_NT_HEADERS 는 32비트와 64비트로 나뉘며, 실질적인 차이는 OptionalHeader 필드..

보안/Reversing

PE 파일 구조 - IMAGE_DOS_HEADER

typedef struct _IMAGE_DOS_HEADER // DOS .EXE header { WORD e_majic;// Magic number WORD e_cblp;// Bytes on last page of file WORD e_cp;// Pages in file WORD e_crlc;// Relocations WORD e_cparhdr;// Size of header in paragraphs WORD e_minalloc;// Minimum extra paragraphs needed WORD e_maxalloc;// Maximun extra paragraphs needed WORD e_ss;// Initial (relative) SS value WORD e_sp;// Initial SP value..

보안/Reversing

메모리 구조

프로그램이 실행되기 위해서는 프로그램의 정보와 코드들이 메모리에 로드되어야하고, 프로그램안에서 사용되는 변수들을 저장한 메모리의 공간도 필요하다. 때문에 운영체제는 프로그램의 실행을 위해 다양한 메모리영역을 제공한다. 코드(code) 영역 코드 영역에는 프로그램이 실행될때 로드되었던 명령어들을 저장하고, CPU는 코드영역에 저장되어있는 명령어를 하나씩 가져가 처리하게된다. 데이터(data) 영역 데이터 영역에는 프로그램내부의 전역변수와 정적변수가 저장되고, 프로그램의 시작과 함께 할당되며 프로그램의 종료와 함께 해제된다. 스택(stack) 영역 스택영역에는 함수의 호출에 사용되는 지역변수와 매개변수가 저장되고, 함수의 호출과 함께 할당된뒤 함수가 끝나게되면 해제된다. 스택영역은 푸시와 팝으로 데이터를 저..

MAJG
'보안' 카테고리의 글 목록