목록전체 보기 (89)
둘둘리둘둘리둘둘리둘둘리둘둘리둘
@ROP? 리턴 지향 프로그래밍(Return Oriented Programming)이란 이름에서 알수있듯이 공격자가 Call Stack의 제어권을 얻었을때, 대상 프로그램 내의 원하는 명령어와 RETN으로 이루어진 가젯(Gadget)들을 순차적으로 호출하여 해당 프로그램이 공격자의 의도대로 흘러가게 하는 공격 방식. 원하는 가젯들을 프로그래밍 하듯이 조합 하여 ROP란 이름이 붙은듯하다. Stack Pivot Call Stack의 제어권을 얻은 지점의 ESP에서 ROP Chain까지 이어주는 다리 스택을 그렸을때 그림의 노란주소의 명령어가 제어권을 얻는 지점 ESP를 제어 가능한 버퍼까지 내려줘서 RETN후 ROP Chain을 호출가능하도록해준다.(여건이 된다면 노란주소 바로아래 ROP Chains를 구..
FS:[18] *TEB TEB +0x30 *PEB(FS:[30]) PEB +0x18 *ProcessHeap +0x90 *ProcessHeaps HEAP +0x58 *Heap Segments HEAP_SEGMENT +0x20 *Heap Block HEAP_BLOCK Pre Allocate MetaData +0x08 User Data //실제 데이터쓰이는곳(가변 크기) Post Allocate MetaData Pre Allocate Metadata2bytesCurrent Block Size (여따 8을 곱한게 실제 사이즈)2bytesPrevious Block Size (마찬가지 곱하기8)1byte SegmentIndex1byte Flags1byte Unused1byte SegmentIndex Heap Fla..
FS:[18] *TEB TEB +0x30 *PEB (FS:[30]) PEB +0x0C *LDR LDR +0x14 *InMemoryOrderModuleList +0x1c*InInitializationOrderModuleList InMemoryOrderModuleList NextEntryLink +0x10 ImageBaseAddress +0x28 *BaseDllName InInitializationOrderModuleList NextEntryLink +0x08ImageBaseAddress +0x20 *BaseDllNameIMAGE_DOS_HEADER +0x3C Offset to IMAGE_NT_HEADERS IMAGE_NT_HEADERS +0x78 Export Table RVA IMAGE_EXPORT_DIR..
LPSTR = long pointer string = char * LPCSTR = long pointer constant string = const char * LPCTSTR = long pointer constant t_string = const tchar * LPWSTR = long pointer wide string = w_char * LPCWSTR = long pointer constant wide string = const w_char *
@IMAGE_THUNK DATAtypedef struct _IMAGE_THUNK_DATA32 { union { DWORD ForwarderString; // PBYTE DWORD Function; // 함수주소 DWORD Ordinal; DWORD AddressOfData; // PIMAGE_IMPORT_BY_NAME } u1;} IMAGE_THUNK_DATA32;typedef IMAGE_THUNK_DATA32 * PIMAGE_THUNK_DATA32;typedef PIMAGE_THUNK_DATA32 PIMAGE_THUNK_DATA; @IMAGE_IMPORT_DESCRIPTORtypedef struct _IMAGE_IMPORT_DESCRIPTOR { union { DWORD Characteristics; ..
보호되어 있는 글입니다.
@IMAGE_SECTION_HEADER 시작주소 IMAGE_OPTIONAL_HEADER시작 offset + Size of Optional Header @DLL 로딩방식 Explicit Linking- Application에서 사용되는 순간 로딩, 사용끝나면 해제 Implicit Linking- Application시작시 로딩, 종료시 해제 @IMPORT Directory Table IMAGE_IMPORT_DESCRIPTOR (IMPORT Directory Table)- Import Name Table RVA : 함수 이름 주소(RVA)- Name RVA : Library 이름 문자열의 주소(RVA)- Import Address Table RVA : 실제 함수 주소(RVA), INT가 정확하다면 필요없음(..
(VA)Virtual Address- 절대주소- 00000000~FFFFFFFF (4GB) (RVA)Relative Virtual Address- 상대주소(offset ?) VA = RVA + Image Base RVA 사용 이유- Relocation 염두 @PE Header 구조IMAGE_DOS_HEADER (DOS EXE Header 확장판)- DOS파일 하위 호환을 위해- e_magic(Signature) : 4D 5A(MZ)- e_lfanew(Offset to New EXE Header) : NT Header의 옵셋 MS-DOS Stub Program- 옵션임(없어도됨)- DOS환경에서 실행시 "This program cannot be run in DOS mode"출력하고 종료하는 어셈블리어 가짐..
cdecl - C에서 default로 사용- Caller가 스택 정리(ex: ADD ESP,8)- 가변 갯수의 Parameter전달 가능 stdcall- Win32API에서 사용 -> 호환성을 위해- Callee가 스택 정리(ex: RETN 8)- 코드 크기 줄어듬 fastcall- stdcall과 동일하나 parameter 전달시 ECX,EDX 레지스터를 이용- parameter가 2개이상일경우 스택이용- 메모리(스택)이 아닌 레지스터(CPU)를 이용하여 빠른속도- ECX, EDX 레지스터 필요시 백업 -> 코드 크기 늘어남
보호되어 있는 글입니다.