반응형

리버싱/윈도우 리버싱 6

RVA와 섹션

RVA는 디스크 상에 파일로 존재하는 PE의 파일 오프셋과 함께 로드되어 메모리의 이미지로 존재하는 PE의 메모리 번지 사이의 간극을 절충시켜주는 중요한 개념이다. 섹션은 PE 파일 전체를 구성하는 파일/메모리 블록의 단위다. RVA(상대적 가상 주소 - Relative Virtual Address) PE 파일 내의 파일 오프셋과 RVA는 관점이 다르다! PE 구조에서 번지에 관계된 값, 즉 가상 주소 공간 상의 번지들은 전부 RVA 개념으로 표현된다. RVA는 이미지가 메모리에 로드되었을 떄, 더 정확히 표현하면 해당 프로세스의 가상 주소 공간 내에 로드되었을 때 그 시작 주소에 대한 상대적 번지를 가리키는 개념으로, 메모리에서 PE의 시작 주소에 대한 상대적인 오프셋 값으로 생각할 수 있다. 파일 상..

PE 파일의 전체 구조

PE 파일 포맷은 COFF(Common Object File Format)라는 포맷을 계승한 파일 포맷으로, COFF의 확장판이라고 보면 된다. COFF 포맷은 MS에서 사용하던 이전 버전의 여러 실행 파일뿐만 아니라 라이브러리 파일, OBJ 파일에 대한 공통 포맷을 제공한다. 이 PE 파일 포맷은 64bit 경우 PE+라고도 하지만, 기본적으로 PE 파일 포맷을 바탕으로 한다. IMAGE_XX_XXXX 형태의 명칭들은 모두 WinNT.h 헤더 파일에 정의된 구조체다. PE 파일은 처음에 MZ로 시작하는 IMAGE_DOC_HEADER 구조체로 시작해서 도스와의 호환을 위한 코드인 도스 스텁을 담고 있다. 이 스텁 다음부터 실제 PE 포맷이 시작된다. 실질적인 PE 포맷의 시작은 IMAGE_NT_HEADE..

PE 파일

MS는 EXE와 DLL이 갖는 파일 구조를 PE 파일 포맷이라고 명명했다. 이때 PE는 "Portable Executable"의 약자로, 이 포맷으로 구성된 PE 파일들은 플랫폼에 관계 없이 윈도우 운영체제가 돌아가는 시스템이면 어디서든 (Portable) 실행 가능 (Executable)하다는 의미에서 PE라는 이름을 붙였다. WinNT.h 헤더 파일 내의 PE 관련 구조체들은 '파일'이라는 명칭 대신 '이미지(Image)'라는 명칭으로 표현된다. 파일이 아니고 왜 이미지일까? 이때 말하는 이미지는 JPEG나 BMP, GIF 등으로 알려진, 그림이나 사진과 같은 이미지를 의미하는 것이 아니라 Image라는 단어의 어원적 의미로 사용된다. 어떤 실체에 대한 그림자, 허상, 그것의 반영이라는 의미에서의 이..

WinDbg, mona세팅 (구/신 버전 다 있음)

WinDbg Preview 세팅 (최신 버전) 최신 버전은 Microsoft Store에서 다운을 받을 수 있다. App 형태로 나왔다. 검색 창에 WinDbg Preview를 검색하면 나온다. 여기서 설치하면 우선 WinDbg는 설치가 끝난다. 들어가서 sympath는 .symfix, .sympath 명령어를 입력하면 자동으로 path가 마이크로 소프트 주소로 세팅된다. 아니면 설정에 들어가서 직접 입력해도된다. 구 버전은 프로그램으 x86, x64 버전이 나눠져 있지만 최신 버전인 하나로 다 가능하다. 대신 취약점 분석 시 확장 프로그램으로 python이나 mona 같은 툴을 사용할 때, 분석하는 파일이 지원하는 아키텍처에 맞춰 사용해야한다. (예를 들어 x86 파일을 분석하면, python도 x86..

WinDbg Preview

WinDbg Preview는 Windbg의 최신버전이다. WinDbg와 동일한 기본 엔진을 사용하므로 익숙한 모든 명령, 확장 및 워크 플로는 이전과 동일하게 작동한다. 일반적인 특징 이전 세션 구성 정보를 호출하는 기능이 포함되었다. (Recent) 쉬운 피드백 채널 덤프 파일 프로세서 감지 -> 쉽게 관리되는 디버깅을 위해 프로세서 아키텍처를 자동 감지한다. 성능 향상 윈도우는 이제 비동기식으로 로드되며 취소할 수 있다. -> 다른 명령을 실행하면 WinDbg Preview가 로컬, 감시 또는 기타 창로드를 중지한다. 윈도우 개선 Disassembly 창 개선 -> 디스어셈블리 창도 개선되어 스크롤 할 떄 현재 명령의 강조 표시가 그대로 유지된다. Memory 창 개선 -> 강조 표시 및 향상된 스크..

디버깅 환경

디버깅 가능한 환경이 6가지 있다. WinDbg Preview Windows Debugger (WinDbg) Kernel Debugger (KD) NTKD Console Debugger (CDB) NT Symbolic Debugger (NTSD) WinDbg Preview WinDbg Preview는 현대적인 비주얼, 빠른 윈도우, 본격적인 스크립팅 경험, 확장 가능한 디버거 데이터 모델 전면 및 중앙으로 구축된 WinDbg의 마지막 버전이다. WinDbg Preview는 WinDbg와 동일한 기본 엔진을 사용하므로 익숙한 모든 명령, 확장 및 워크플로는 이전과 동일하게 작동한다. 더 많은 정보는 Debugging Using WinDbg Preview 에서 보면된다. WinDbg WinDbg는 유저모드,..

반응형