jwmsg

evtx 파일 구조분석 – 2

안녕하세요!  드디어 evtx 파일의 구조분석 두번째 글을 올리게 되었습니다.
저번글에서는 이벤트 로그파일이 무엇이고, 이벤트로그파일의 간단한 구조들을 알아보았는데요. 이번글 부터는 HEX 뷰어를 통해 하나하나 삽질을 시작해볼까 합니다.

이번글 에서는 evtx 파일의 파일 해더 부분을 구체적으로 알아보고, Chunk 를 찾아가는 방법을 공부해볼까 합니다.

위 사진은 Header 의 구조를 한눈에 볼 수 있는 표 입니다.  이제 HXD 를 이용하여 삽질을 해보도록 합시다!

magic Signature
가장 오래된 chunk

현재 작성중인 chunk
작성 예정의 레코드 번호
해더에 part1 영역(지금 우리가 삽질중인 영역)의 크키
기본적으로 0x80
버전(좌:minor , 우: major)
해더영역 전체 길이
기본적으로 0x1000
chunk 의 개수
padding 으로 추측되는 알 수 없는 영역
플레그 영역
CRC 체크

여기까지가 파일 헤더의 part1 영역이며, 이 아래 전체 영역은 대부분 0x00으로 채워져 있습니다. offset 0x00 부터 0x1000만큼 움직이면 첫번째 chunk 가 나오게 됩니다.

chunk 부분은 다음 글에서 다루겠지만, chunk 를 찾아가는 방법을 소개하고 이번 글을 마치겠습니다!

먼저 Header 가 끝나면 바로 chunk 가 시작된다고 했습니다. 그리고 저번글에서는 Chunk의 크기는 0x10000 이 기본이라고 했구요. 그럼 첫번째 Chunk 의 위치는 당연히 0x1000 이 될껍니다. 그리고 두번째 Chunk는 첫번째 Chunk 시작위치에서 0x10000만큼 이동한 0x11000이 되겠죠!

그럼 N번째(N은 0이상의 정수) Chunk 의 offset 을 찾을 수 있게 됩니다!

Chunk N’s offset == 0x1000 + (N * 0x10000)

위 식을 이용하면 해당하는 chunk 의 위치로 갈 수 있습니다.

다음글에서는 Chunk 의 구조와, Chunk 에서 레코드를 찾는 방법까지 알아보도록 하겠습니다. 글을 익어주셔서 진심으로 감사합니다!