no image
NTFS File System (5) MFT -Attribute
MFT - Attribute속성 종류 MFT Entry Header, Fixup Array에 이어 이번에는 Attributes에 대하여 알아보자. Attributes는 각 파일의 메타정보를 표현하고 있으며 Attribute Header + Attribute Content로 구성되어 있다. 크기에 따라 Resident와 Non-Resident 속성으로 구분하며 총 17가지의 속성이 있다. 이러한 속성은 각 각 다른 Header를 가지며 기본적으로는 $STANDARD_INFORMATION, $FILE_NAME, $DATA를 가진다. 아래의 그림과 같다. 이러한 속성은 Fixup 배열 이후 End Marker가 올 때까지 연속적으로 오며 각 속성은 위에서 말한 바와 같이 속성헤더와 속성 내용으로 나뉘어진다. ..
2015.12.30
no image
NTFS File System (4) MFT
4. MFT NTFS File System (1) ~ (3)을 통해 MBR(혹은 EBR)을 지나 해당 파티션의 VBR을 찾을 수가 있었다. 이러한 VBR에서 BPB를 참고하여 $MFT의 위치까지 찾아보았다. 이제 이러한 MFT에 대하여 설명을 하고자 한다. MFT는 Mater File Table의 약자로 NTFS에선 파일이나 디렉터리, 메타 정보를 모두 파일의 형태로 관리하고 있다. 이러한 각 파일의 위치나 속성, 이름, 크기 등의 메타정보는 MFT Entry라는 특별한 구조로 저장된다. MFT는 NTFS 상에 존재하는 모든 파일의 MFT Entry의 모음으로 아래의 그림과 같이 나타낼 수 있다. 위의 표와 같이 각 엔트리의 번호와 기능에 대하여 설명할 수가 있다. 이러한 각 각의 엔트리는 MFT Ent..
2015.12.29
no image
NTFS File System (3) VBR
3 .NTFS - VBR 이전 포스팅에선 MBR의 파티션 테이블(혹은 EBR)을 참고하여 해당 파티션의 위치를 찾을 수가 있었다. 여기서 필자는 NTFS를 학습하기 위함으로 FAT16, FAT32 외 다른 것들은 일단 제외하겠다. 우선 NTFS의 구조는 아래의 그림과 같다. VBR(Volume Boot Record)와 MFT가 있으며 그리고 Data 영역이 존재하고 있는 것을 확인할 수가 있다. 우선 VBR에 대하여 먼저 이야기를 해보자. VBR은 그 크기가 고정된 것이 아니라 클러스터의 크기에 의존한다. 아래의 표와 같다. 하지만 이전에 말했듯이 대부분의 NTFS는 클러스터의 크기가 4KB이므로 VBR의 크기는 8 Secotr(== 1cluset)가 된다. VBR의 구조에 대해선 아래의 그림과 같다. ..
2015.12.29
Windows 10 _HANDLES_TABLE, _HADNLES_TABLE_ENTRY
0:000> dt _HANDLE_TABLEntdll!_HANDLE_TABLE +0x000 NextHandleNeedingPool : Uint4B +0x004 ExtraInfoPages : Int4B +0x008 TableCode : Uint4B +0x00c QuotaProcess : Ptr32 _EPROCESS +0x010 HandleTableList : _LIST_ENTRY +0x018 UniqueProcessId : Uint4B +0x01c Flags : Uint4B +0x01c StrictFIFO : Pos 0, 1 Bit +0x01c EnableHandleExceptions : Pos 1, 1 Bit +0x01c Rundown : Pos 2, 1 Bit +0x01c Duplicated : Pos ..
2015.11.09
no image
KDBG Structure
- https://code.google.com/p/volatility/source/browse/branches/scudette/docs/blogg_posts/scudette/kdbg.txt?r=2805- SANS Poster 2015-Memory-Forensic2.pdf - http://www.rekall-forensic.com/posts/2014-02-21-do-we-need-kdbg.html00392 KDDEBUGGER_DATA64 KdDebuggerDataBlock =00393 {00394 {{0}},00395 0,00396 {(ULONG_PTR)RtlpBreakWithStatusInstruction},00397 0,00398 FIELD_OFFSET(KTHREAD, CallbackStack),003..
2015.11.08
Control registers - wiki
Control registers in x86 series[edit]CR0[edit]The CR0 register is 32 bits long on the 386 and higher processors. On x86-64 processors in long mode, it (and the other control registers) is 64 bits long. CR0 has various control flags that modify the basic operation of the processor.BitNameFull NameDescription31PGPagingIf 1, enable paging and use the CR3 register, else disable paging30CDCache disab..
2015.11.07
_TEB, _PEB Windows 10
> dt _TEB ntdll!_TEB +0x000 NtTib : _NT_TIB +0x01c EnvironmentPointer : Ptr32 Void +0x020 ClientId : _CLIENT_ID +0x028 ActiveRpcHandle : Ptr32 Void +0x02c ThreadLocalStoragePointer : Ptr32 Void +0x030 ProcessEnvironmentBlock : Ptr32 _PEB +0x034 LastErrorValue : Uint4B +0x038 CountOfOwnedCriticalSections : Uint4B +0x03c CsrClientThread : Ptr32 Void +0x040 Win32ThreadInfo : Ptr32 Void +0x044 User3..
2015.11.05
no image
Memory.dmp
Reference : http://blogs.technet.com/b/koreapartner/archive/2009/10/28/3289689.aspx%Systemroot%\MEMORY.DMP file
2015.10.09

MFT - Attribute

속성 종류

 MFT Entry Header, Fixup Array에 이어 이번에는 Attributes에 대하여 알아보자. Attributes는 각 파일의 메타정보를 표현하고 있으며 Attribute Header + Attribute Content로 구성되어 있다. 크기에 따라 Resident와 Non-Resident 속성으로 구분하며 총 17가지의 속성이 있다. 이러한 속성은 각 각 다른 Header를 가지며 기본적으로는 $STANDARD_INFORMATION, $FILE_NAME, $DATA를 가진다. 아래의 그림과 같다.

 이러한 속성은 Fixup 배열 이후 End Marker가 올 때까지 연속적으로 오며 각 속성은 위에서 말한 바와 같이 속성헤더와 속성 내용으로 나뉘어진다. 우선 속성 헤더와 속성내용에 대하여 알아보기 전에 속성의 종류에 대하여 먼저 알아보자.

일반적인 파일의 경우 위에서 말한 바와 같이 $STANDARD_INFORMATION, $FILE_NAME, $DATA를 가진다고 이야기 하였다. 따라서 3가지 속성에 대해서만 잘 알고 있어도 대부분의 파일을 분석할 수 있다. 아래의 그림을 보자.

현재 내 PC의 MFT를 나타낸 것이다. MFT Entry Header에서 속성이 시작되는 위치는 0x38이라 나타나있다. 해당 부분을 보면 속성 식별 값이 0x10으로 이는 $STANDARD_INFORMATION을 나타내고 있으며 뒤로 가다 보면 0x30으로 $FILE_NAME 속성 식별 값이 존재하는 것을 볼 수가 있다. 이러한 식별 값을 통해 어떤 속성인지 확인할 수가 있다.

Resident 속성과 Non-resident 속성

 이제 크기에 따른 분류로 Resident 속성과 Non-resident 속성이 있다하였는데 이에 대하여 조금 더 알아보자. Resident 속성은 속성의 내용이 Attribute Header (속성 헤더) 바로 뒤에 위치하는 속성이다. 이에 반해 Non-resident 속성은 Attribute Content(속성 내용)이 너무 크기 때문에 MFT엔트리(1024Byte) 내부에 넣지 못할 경우, 별도의 클러스터를 할당 받아 저장(클러스터 런으로 관리)하는 방식이다. 이때, 속성 내용 위치에는 할당 받은 클러스터의 위치 정보가 저장되어 있다.

 대부분의 속성은 모두 Resident 속성이고, $DATA, $ATTRIBUTE_LIST와 같은 속성은 Size가 크기 때문에 Non-resident가 될 수 있다. $DATA는 파일의 내용을 표현하는 속성인데, 파일의 내용이 MFT 엔트리 내에 저장되지 못한다면 Non-resident 속성이 된다. 대부분의 파일 크기가 크므로, 일반적으로 700바이트 이하가 아니라면 대부분 $DATA 속성은 Non-resident 로 존재한다.

위 그림은 3번째 속성이 Non-resident 인 것으로, 1,2번 속성과는 다르게 속성내용(Attribute Content)의 위치에 Cluster가 위치해 있다. 이러한 클러스터는 해당 속성 내용을 담고있는 부분을 별도의 곳에 놓아둔 것이다.

 같은 파일 2.txt이지만 690 바이트일때는 디스크에서 크기를 차지하지 않았지만 698 바이트가 된 뒤에는 1 Cluster 만큼의 크기를 차지하는 것을 확인할 수가 있다. 이는 기존의 2.txt는 $DATA에 모두 담을 수 있었지만, 크기가 커지며 별도의 클러스터를 할당하므로 이러한 데이터를 관리하려고 했기 때문에 하나의 클러스터가 할당된 것이다.

 다시 돌아와 속성에는 속성헤더와 속성내용이 있다하였다. 이제 이 중에서 속성헤더의 구조를 한번 살펴보자. 속성은 위에서 말한 바와 같이 크기에 따라 구분되는데 이 경우 구조가 서로 다르다는 점이다. 우선 Resident와 Non-resident 모두에 쓰이는 공통적인 속성 헤더를 살펴보자.


Attribute Header Format

 공통적으로 포함되는 구조는 아래의 그림과 같다. type ID와 속성의 길이를 나타내는 등의 정보가 있다.

 Attribute type ID는 속성 타입 식별 값으로 위에서 0x10이 $STANDARD_INFORMATION이였던것과 같은 값을 나타낸다. Length of attr은 속성 헤더를 포함한 속성 전체의 길이를 나타내며 Nreg Flag(Non-resident flag)는 해당 속성이 Non-resident 속성인지의 여부를 나타내며 0일 경우 Resident이며 1일 경우 Non-resident임을 알 수 있다. LenNam(Length of name)은 해당 속성 이름의 길이를 나타내고 이러한 속성 이름이 저장된 곳의 시작 위치를 Offset to name이 가지고 있다. 속성헤더 내에 있는 Flags는 속성의 상태를 표현하는데 0x0001은 압축된 속성, 0x4000은 암호화된 속성, 마지막 0x8000은 Sparse 속성을 나타낸다. 마지막 값인 Attr ID는 속성의 고유한 식별자로 MFT Entry에 같은 속성이 여러 개일 경우 구별하기 위해 사용한다.  

 위의 그림과 같이 MFT 엔트리 헤더에서 Offset to First attribute 값을 통해 0x38로 온 후다. 이를 해석해보면 우선 속성 식별 값이 0x10으로 이는 $STANDARD_INFORMATION 임을 알 수가 있다. 속성 헤더를 포함한 속성 전체의 길이는 0x60으로 0x98에선 다음 속성의 식별 값이 나와야 한다. 해당 속성은 현재 Resident이며 속성 이름이 존재하지 않기에 해당 위치 0x38 + 0x18 인 0x50부터 바로 속성 내용이 시작된다. 상태플래그는 0이며 속성 식별자 또한 0이다.


Resident Attr Header

 Resident(거주) 속성의 헤더는 위의 공통된 속성 헤더 뒤에 다음과 같은 구조를 가지고 있다. 아래의 그림을 보자.

Size of Content는 헤더 뒤에 오는 속성 내용의 크기를 나타내며 Offset to content는 속성 내용이 시작하는 곳의 위치를 나타낸다. idx flag(Indexed flag)는 값을 "1"로 가질 경우 인덱스된 속성임을 뜻하며 $FILE_NAME의 경우 "1"로 설정되어있다. 마지막 Attr Name은 속성 이름이 있는 경우 속성 이름을 나타내고 없는 경우엔 바로 속성 내용이 온다.


 공통된 헤더를 제외하고 0x48부터 resident attr header가 위치한 것을 볼 수 있다. 우선 속성 내용의 크기는 0x48이며 속성 내용의 시작 위치는 0x18로 공통 속성헤더를 기준으로 0x18뒤에 속성 내용이 시작된다는 것으로 보라색 박스와 같이 표시하였다. Index 플래그는 설정되어 있지 않으며 마지막 한 바이트는 사용되지 않는 값이다. 


Non-resident Attr Header

 Non-resident(비거주) 속성의 헤더 역시 공통된 속성 헤더를 지닌다. 그 뒤의 구조는 다음과 같으며 이에 대해선 표로 설명하겠다.

 Non-resident는 속성 내용이 외부 클러스터에 저장되어 있으므로 해당 클러스터 정보를 담고 있는 런리스트의 정보가 필요하다. 여기서 VCN은 특정 파일의 첫 번째 클러스터부터 순차적으로 부여한 번호로 $DATA 속성의 경우 데이터가 매우 많이 조각나 있을 경우 클러스터 런의 정보를 저장하기 위해 하나 이상의 MFT 엔트리를 사용하게 된다. 이때, 런리스트의 시작과 끝을 표현하기 위해 VCN을 쓴다.

* LCN : 볼륨의 첫 번째 클러스터부터 순차적인 번호 / VCN : 파일의 첫 번째 클러스터부터 순차적인 번호


우선 런리스트 시작VCN이 0임을 알 수가 있고, 끝 VCN이 0x02803F임을 알 수가 있다. 이러한 런리스트의 시작 위치는 0x0040이며 압축 속성이 아니기 때문에 압축 단위 크기는 0이된다. 속성 내용 할당 크기(클러스터크기)는 0x28040000(671350784)이며 속성 내용 실제 크기도 0x28040000(671350784), 그리고 속성 내용의 초기화된 크기도  0x28040000(671350784)인 것을 확인할 수가 있다. 이 경우 속성의 이름이 존재하지 않는 것 또한 같이 확인할 수가 있다.

런리스트 끝VCN이 0x02803F이라는 것은 현재 $MFT 속성 내용을 표현하기 위해 0x02803F + 1개의 클러스터를 사용하고 있다는 것이다. 0x028040에 클러스터 크기 4096을 곱해주면 0x28040000으로 이는 속성 내용 할당 크기와 일치하는 것을 알 수가 있다.

* 꼭 기억해야할 점은 속성 이름의 경우, 속성 이름이 존재하는 경우에만 해당 헤더 영역이 할당된다는 점이다. 속성 이름이 없는 경우 해당 영역을 제외하고 바로 속성 내용이 뒤따라 온다.


Cluster Runs (클러스터 런)

 속성이 Non-resident인 경우 별도의 클러스터를 할당 받아 내용을 저장한다고 했다. 할당 받는 클러스터가 내용의 크기에 따라 하나에서부터 수천개까지 될 수 있다. 이 클러스터들은 연속적으로 할당 될 수 있지만, 대부분 비연속적으로 할당된다. 이렇게 비연속적으로 할당된 클러스터들을 효과적으로 관리하기 위한 것이 클러스터 런이다. 다음은 클러스터 런을 표현하는 런리스트(Runlist)의 예를 그림으로 나타낸 것이다.

첫 바이트를 읽어 2개의 용도로 사용하는 것이다. 가령 첫 바이트가 '0x32'인 경우 런 길이는 2바이트를 읽어야하며, 런 오프셋은 3바이트를 읽어야 한다는 것이다. 말로만 해서는 어려우니 아래의 그림을 참고하자.

 첫 번째 클러스터 런의 첫바이트가 '33' 이므로, 오프셋 3바이트와 길이 3바이트를 읽어야 한다. 먼저 길이의 경우 바로 2번째 바이트부터 나오며 첫번째 바이트에서 뒷자리가 3이므로 총 3바이트 읽어 0x00C820이 된다. 오프셋은 첫바이트의 앞자리가 3이므로 3바이트를 읽어 0xC00000이 된다. 이는 Offset 0x0C0000번 클러스터부터 0xC820(51232)개의 클러스터가 할당되어 있음을 나타낸다.

 두 번째 클러스터 런은 첫바이트가 똑같이 33이므로 위와 같으며 이는 오프셋 0x57E23D 클러스터부터 0xEA1B(59931)개의 클러스터가 할당되어 있음을 나타낸다.

 세 번째 클러스터 런은 첫바이트가 '42'이다. 클러스터의 길이는 첫바이트의 뒷자리가 2이므로 2바이트를 읽어 0x0308이 되며 오프셋은 앞자리가 4이므로 4바이트를 읽어 0x0124727B가 된다. 이는 0x0124727B 클러스터에서부터 0x308(776)개의 클러스터가 할당되어있음을 알 수가 있다.

* 수정 : 첫 번째 클러스터위치인 C0000클러스터는 해당 오프셋 0xC0000000이 맞지만, 두 번째 클러스터 런인 57E23D는 0x57E23D000이 아닌 여기에 앞의 클러스터 값을 더해주어야 한다. 따라서 +0xC0000000을 해야한다. 세 번째부터는 마찬가지로 앞의 두개를 더해주어야한다.

 이렇게 총 5개의 클러스터 런이 형성되어 있는 것을 확인할 수가 있으며 각 클러스터 런의 길이를 모두 더해보자. 그러면 0x28040이 나오며 10진수로는 163,904개의 클러스터가 형성되어있다는 것이다. 여기서 하나의 클러스터는 크기가 4KB이므로 4를 곱해주면 655616이 된다. 이를 이제 1024로 나누어주면 640MB가 되며 이는 현재 $MFT 파일의 크기와 같음을 알 수가 있다.

 이렇게 대부분의 파일은 $DATA의 값이 크기 때문에 Non-resident이며, 이는 클러스터 런을 가지므로 각 각 떨어져 있는 클러스터들의 위치를 알 수가 있었다. 이해가 잘 안된다면 바로 위의 예제처럼 직접 파일의 크기와 함께 맞추어 보는 것도 하나의 좋은 방법인 것 같다.

 또한 클러스터 런을 활용하면 $MFT 파일을 쉽게 수집할 수가 있다. $MFT는 NTFS에 존재하는 모든 파일의 메타 정보를 가지고 있기 때문에 메타 정보만을 가지고 포렌식 분석을 수행하고자 할 경우, $MFT 파일을 수집하는 것이 필요하다. $MFT 파일의 MFT 엔트리도 $MFT에 있으므로, $MFT에서 $MFT 파일의 MFT 엔트리를 찾은 후, 해당 엔트리의 데이터 속성의 런리스트를 확인한다. 그리고 런리스트의 정보대로 데이터를 읽어서 연결하면 하나의 $MFT 파일이 된다.



출처 및 참고

http://forensic-proof.com/archives/590

http://forensic-proof.com/archives/596


'Forensic > Theory' 카테고리의 다른 글

Cluster Run 직접 확인해보기 - MFT엔트리찾기  (0) 2015.12.31
NTFS File System (6) MFT $SIA & $FN $DATA  (0) 2015.12.31
NTFS File System (4) MFT  (0) 2015.12.29
NTFS File System (3) VBR  (0) 2015.12.29
NTFS File System (2) MBR & EBR  (0) 2015.12.29

4. MFT


NTFS File System (1) ~ (3)을 통해 MBR(혹은 EBR)을 지나 해당 파티션의 VBR을 찾을 수가 있었다. 이러한 VBR에서 BPB를 참고하여 $MFT의 위치까지 찾아보았다. 이제 이러한 MFT에 대하여 설명을 하고자 한다.

 MFT는 Mater File Table의 약자로 NTFS에선 파일이나 디렉터리, 메타 정보를 모두 파일의 형태로 관리하고 있다. 이러한 각 파일의 위치나 속성, 이름, 크기 등의 메타정보는 MFT Entry라는 특별한 구조로 저장된다. MFT는 NTFS 상에 존재하는 모든 파일의 MFT Entry의 모음으로 아래의 그림과 같이 나타낼 수 있다.


 위의 표와 같이 각 엔트리의 번호와 기능에 대하여 설명할 수가 있다. 이러한 각 각의 엔트리는 MFT Entry Header, Fixup Array, Attributes, End Marker, Unused Space로 구분되는 구조를 갖는다. End Marker 이후의 값은 MFT Entry에서 사용되지 않는다. 이를 그림으로 나타내며 아래와 같다.


MFT Entry Header

이러한 각 항목 중 먼저 MFT Entry Header에 대하여 설명해보자. MFT Entry Header는 모든 MFT Entry의 앞 부분에 위치하는 48Byte의 정보로 그림과 표를 통해 좀 더 자세히 설명하겠다. 아래의 그림과 같이 첫 부분에 MFT 시그니처인 'FILE'로 시작하여 Fixup Array 전 까지의 구조를 갖는다.

이를 토대로 현재 PC의 $MFT의 MFT Entry Header를 확인해보자.

Fixup

 Fixup은 MFT Entry의 데이터 무결성을 판단하기 위해 존재한다. MFT 엔트리는 각 2개의 섹터(1024Byte)를 사용하는데 각 섹터 마지막에 2 Byte를 이용해 Fixup Array로 사용한다. 섹터의 내용이 비정상적으로 변경되었을 때 오류의 체크를 가능하게 한다.

 위의 그림과 같이 Fixup Array의 Offset을 통해 0x30에 가면 해당 Signature가 존재한다. 내 PC에선 시그니처가 0x0266임을 알 수가 있고 이 시그니처는 각 섹터의 마지막 2 Byte에 위치해있는 것을 볼 수가 있다. 시그니처 뒤의 첫 2바이트(파란색)은 첫번째 섹터의 마지막 2 Byte 값이며, 다음 2바이트는 두번째 섹터의 마지막 2 Byte 값이다. 만약 Fixup이 적용되지 않는다면 각 섹터의 마지막 2 바이트는 각 각 0xFFFF과 0x0000으로 채워져 있을 것이다.

* Fixup Array의 수가 3개 인 이유는 MFT Entry가 1 KB이므로 섹터 2개를 사용하며 이에 더해 Signature가 1개 항목을 사용하므로 총 3개인 것


추가 

Sequence Value : MFT Entry를 재할당하면 이 값이 바뀌므로 내용이 바뀌었다는 것을 추측할 수 있다.


출처 및 참고

(FP) NTFS.pdf

http://forensic-proof.com/archives/584


'Forensic > Theory' 카테고리의 다른 글

NTFS File System (6) MFT $SIA & $FN $DATA  (0) 2015.12.31
NTFS File System (5) MFT -Attribute  (0) 2015.12.30
NTFS File System (3) VBR  (0) 2015.12.29
NTFS File System (2) MBR & EBR  (0) 2015.12.29
NTFS File System (1) 개요  (0) 2015.12.28

3 .NTFS - VBR


 이전 포스팅에선 MBR의 파티션 테이블(혹은 EBR)을 참고하여 해당 파티션의 위치를 찾을 수가 있었다. 여기서 필자는 NTFS를 학습하기 위함으로 FAT16, FAT32 외 다른 것들은 일단 제외하겠다. 우선 NTFS의 구조는 아래의 그림과 같다.


VBR(Volume Boot Record)와 MFT가 있으며 그리고 Data 영역이 존재하고 있는 것을 확인할 수가 있다. 우선 VBR에 대하여 먼저 이야기를 해보자. VBR은 그 크기가 고정된 것이 아니라 클러스터의 크기에 의존한다. 아래의 표와 같다.

 하지만 이전에 말했듯이 대부분의 NTFS는 클러스터의 크기가 4KB이므로 VBR의 크기는 8 Secotr(== 1cluset)가 된다.

 VBR의 구조에 대해선 아래의 그림과 같다. 

- Jump instruction : EB 52 는 어셈블리어로 JMP 0x52이며 두의 90은 NOP로 52+2 바이트 뒤인 0x54에서 Boot Code가 시작됨을 알려준다.

- OEM ID : NTFS를 나타내고 있다.

- BIOS Parameter Block (BPB) : 클러스터의 크기, 루트 디렉터리 위치, 총 섹터 등 파일 시스템 정보가 기록되어 있다.

- Boot Code : 해당 볼륨의 운영체제를 로드하기 위한 명령어가 있다.

- Signature : 0xAA55가 위치해 있다.


파일 시스템의 정보를 나타내는 BPB에 대하여 좀 더 자세히 보면 아래의 그림과 같다.




위와 같이 정리할 수가 있으며 $MFT에 접근하기 위해선 0x30의 Start Cluster for $MFT의 값을 참고한다. 한번 직접 해보자. 아래의 그림은 이전에 MBR을 통해 찾은 VBR을 나타내고 있다. 0x30의 부분은 $MFT가 있는 클러스터의 위치를 나타내는 것으로 C0000의 클러스터(현재 VBR을 기준으로) 가 있는 곳에 위치해있다고 해석할 수가 있다.


C0000은 클러스터의 값이므로 이를 이동하기 편하게 Offset으로 나타내기 위해선 [해당 클러스터값 * 클러스터당 섹터 수* 섹터크기]와 같이 계산을 하면 된다. 이를 직접 해보면 C0000 * 8 * 0x200 = C0000000 이다. 이제 이를 현재 VBR이 있는 오프셋 F38200000에 더하면 FF8200000이다. 해당 위치는 아래의 그림과 같이 나오며 MFT 파일의 시그니처인 'FILE'가 있는 것을 확인할 수가 있다.




출처 및 참고

http://forensic-proof.com/archives/431

http://home.sogang.ac.kr/sites/gsinfotech/study/study1702/Lists/b10/Attachments/17/20131212_%EC%B9%A8%ED%95%B4%EC%8B%9C%EC%8A%A4%ED%85%9C%EB%B6%84%EC%84%9D.pdf

http://ntfs.com/ntfs-partition-boot-sector.htm

(FP) NTFS.pdf

'Forensic > Theory' 카테고리의 다른 글

NTFS File System (5) MFT -Attribute  (0) 2015.12.30
NTFS File System (4) MFT  (0) 2015.12.29
NTFS File System (2) MBR & EBR  (0) 2015.12.29
NTFS File System (1) 개요  (0) 2015.12.28
KDBG Structure  (0) 2015.11.08


0:000> dt _HANDLE_TABLE

ntdll!_HANDLE_TABLE

   +0x000 NextHandleNeedingPool : Uint4B

   +0x004 ExtraInfoPages   : Int4B

   +0x008 TableCode        : Uint4B

   +0x00c QuotaProcess     : Ptr32 _EPROCESS

   +0x010 HandleTableList  : _LIST_ENTRY

   +0x018 UniqueProcessId  : Uint4B

   +0x01c Flags            : Uint4B

   +0x01c StrictFIFO       : Pos 0, 1 Bit

   +0x01c EnableHandleExceptions : Pos 1, 1 Bit

   +0x01c Rundown          : Pos 2, 1 Bit

   +0x01c Duplicated       : Pos 3, 1 Bit

   +0x01c RaiseUMExceptionOnInvalidHandleClose : Pos 4, 1 Bit

   +0x020 HandleContentionEvent : _EX_PUSH_LOCK

   +0x024 HandleTableLock  : _EX_PUSH_LOCK

   +0x028 FreeLists        : [1] _HANDLE_TABLE_FREE_LIST

   +0x028 ActualEntry      : [20] UChar

   +0x03c DebugInfo        : Ptr32 _HANDLE_TRACE_DEBUG_INFO


 

 0:000> dt _HANDLE_TABLE_ENTRY

ntdll!_HANDLE_TABLE_ENTRY

   +0x000 VolatileLowValue : Int4B

   +0x000 LowValue         : Int4B

   +0x000 InfoTable        : Ptr32 _HANDLE_TABLE_ENTRY_INFO

   +0x004 HighValue        : Int4B

   +0x004 NextFreeHandleEntry : Ptr32 _HANDLE_TABLE_ENTRY

   +0x004 LeafHandleValue  : _EXHANDLE

   +0x000 Unlocked         : Pos 0, 1 Bit

   +0x000 Attributes       : Pos 1, 2 Bits

   +0x000 ObjectPointerBits : Pos 3, 29 Bits

   +0x004 RefCountField    : Int4B

   +0x004 GrantedAccessBits : Pos 0, 25 Bits

   +0x004 ProtectFromClose : Pos 25, 1 Bit

   +0x004 NoRightsUpgrade  : Pos 26, 1 Bit

   +0x004 RefCnt           : Pos 27, 5 Bits







'O / S > Window' 카테고리의 다른 글

Write Protection - Registry Setting  (0) 2016.01.17
Windows USB Autorn 설정  (0) 2016.01.04
Control registers - wiki  (0) 2015.11.07
_TEB, _PEB Windows 10  (0) 2015.11.05
_EPROCESS, _KPOCESS Windows 10  (0) 2015.11.05

KDBG Structure

Kail-KM
|2015. 11. 8. 23:41

https://code.google.com/p/volatility/source/browse/branches/scudette/docs/blogg_posts/scudette/kdbg.txt?r=2805

- SANS Poster 2015-Memory-Forensic2.pdf

- http://www.rekall-forensic.com/posts/2014-02-21-do-we-need-kdbg.html

00392 KDDEBUGGER_DATA64 KdDebuggerDataBlock =

00393 {

00394     {{0}},

00395     0,

00396     {(ULONG_PTR)RtlpBreakWithStatusInstruction},

00397     0,

00398     FIELD_OFFSET(KTHREAD, CallbackStack),

00399     FIELD_OFFSET(KCALLOUT_FRAME, CallbackStack),

00400     FIELD_OFFSET(KCALLOUT_FRAME, CBSTACK_FRAME_POINTER),

00401     FALSE,

00402     {(ULONG_PTR)KiCallUserMode},

00403     0,

00404     {(ULONG_PTR)&PsLoadedModuleList},

00405     {(ULONG_PTR)&PsActiveProcessHead},

00406     {(ULONG_PTR)&PspCidTable},

00407     {(ULONG_PTR)&ExpSystemResourcesList},

00408     {(ULONG_PTR)ExpPagedPoolDescriptor},

00409     {(ULONG_PTR)&ExpNumberOfPagedPools},

00410     {(ULONG_PTR)&KeTimeIncrement},

...

00555     {(ULONG_PTR)&IopNumTriageDumpDataBlocks},

00556     {(ULONG_PTR)IopTriageDumpDataBlocks},

00557 };



'Forensic > Theory' 카테고리의 다른 글

NTFS File System (2) MBR & EBR  (0) 2015.12.29
NTFS File System (1) 개요  (0) 2015.12.28
[번역] Acquisition and Analysis of Windows Memory  (0) 2015.11.06
How to Use Volatility  (0) 2015.10.14
$UsnJrnl 분석  (1) 2015.10.09

Control registers in x86 series[edit]

CR0[edit]

The CR0 register is 32 bits long on the 386 and higher processors. On x86-64 processors in long mode, it (and the other control registers) is 64 bits long. CR0 has various control flags that modify the basic operation of the processor.

BitNameFull NameDescription
31PGPagingIf 1, enable paging and use the CR3 register, else disable paging
30CDCache disableGlobally enables/disable the memory cache
29NWNot-write throughGlobally enables/disable write-through caching
18AMAlignment maskAlignment check enabled if AM set, AC flag (in EFLAGS register) set, and privilege level is 3
16WPWrite protectWhen set, the CPU can't write to read-only pages when privilege level is 0
5NENumeric errorEnable internal x87 floating point error reporting when set, else enables PC style x87 error detection
4ETExtension typeOn the 386, it allowed to specify whether the external math coprocessor was an 80287 or 80387
3TSTask switchedAllows saving x87 task context upon a task switch only after x87 instruction used
2EMEmulationIf set, no x87 floating point unit present, if clear, x87 FPU present
1MPMonitor co-processorControls interaction of WAIT/FWAIT instructions with TS flag in CR0
0PEProtected Mode EnableIf 1, system is in protected mode, else system is in real mode

CR1[edit]

Reserved

CR2[edit]

Contains a value called Page Fault Linear Address (PFLA). When a page fault occurs, the address the program attempted to access is stored in the CR2 register.

CR3[edit]

Typical use of CR3 in address translation with 4 KiB pages.

Used when virtual addressing is enabled, hence when the PG bit is set in CR0. CR3 enables the processor to translate linear addresses into physical addresses by locating the page directory and page tables for the current task. Typically, the upper 20 bits of CR3 become the page directory base register (PDBR), which stores the physical address of the first page directory entry.

CR4[edit]

Used in protected mode to control operations such as virtual-8086 support, enabling I/O breakpoints, page size extension and machine check exceptions.

BitNameFull NameDescription
22PKEProtection Key EnableSee Intel® 64 and IA-32 Architectures Software Developer’s Manual
21SMAPSupervisor Mode Access Protection EnableIf set, access of data in a higher ring generates a fault[1]
20SMEPSupervisor Mode Execution Protection EnableIf set, execution of code in a higher ring generates a fault
18OSXSAVEXSAVE and Processor Extended States Enable
17PCIDEPCID EnableIf set, enables process-context identifiers (PCIDs).
16FSGSBASEEnables the instructions RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE.
14SMXESafer Mode Extensions Enablesee Trusted Execution Technology (TXT)
13VMXEVirtual Machine Extensions Enablesee Intel VT-x
10OSXMMEXCPTOperating System Support for Unmasked SIMD Floating-Point ExceptionsIf set, enables unmasked SSE exceptions.
9OSFXSROperating system support for FXSAVE and FXRSTOR instructionsIf set, enables SSE instructions and fast FPU save & restore
8PCEPerformance-Monitoring Counter enableIf set, RDPMC can be executed at any privilege level, else RDPMC can only be used in ring 0.
7PGEPage Global EnabledIf set, address translations (PDE or PTE records) may be shared between address spaces.
6MCEMachine Check ExceptionIf set, enables machine check interrupts to occur.
5PAEPhysical Address ExtensionIf set, changes page table layout to translate 32-bit virtual addresses into extended 36-bit physical addresses.
4PSEPage Size ExtensionIf unset, page size is 4 KiB, else page size is increased to 4 MiB (or 2 MiB with PAE set).
3DEDebugging ExtensionsIf set, enables debug register based breaks on I/O space access
2TSDTime Stamp DisableIf set, RDTSC instruction can only be executed when in ring 0, otherwise RDTSC can be used at any privilege level.
1PVIProtected-mode Virtual InterruptsIf set, enables support for the virtual interrupt flag (VIF) in protected mode.
0VMEVirtual 8086 Mode ExtensionsIf set, enables support for the virtual interrupt flag (VIF) in virtual-8086 mode.

Additional Control registers in x86-64 series[edit]

EFER[edit]

Extended Feature Enable Register (EFER) is a model-specific register added in the AMD K6 processor, to allow enabling the SYSCALL/SYSRET instruction, and later for entering and exiting long mode. This register becomes architectural in AMD64 and has been adopted by Intel. Its MSR number is 0xC0000080.

BitPurpose
63:16Reserved
15TCE (Translation Cache Extension)
14FFXSR (Fast FXSAVE/FXRSTOR)
13LMSLE (Long Mode Segment Limit Enable)
12SVME (Secure Virtual Machine Enable)
11NXE (No-Execute Enable)
10LMA (Long Mode Active)
9Reserved
8LME (Long Mode Enable)
7:1Reserved
0SCE (System Call Extensions)

CR8[edit]

CR8 is a new register accessible in 64-bit mode using the REX prefix. CR8 is used to prioritize external interrupts and is referred to as the task-priority register (TPR).[2]

The AMD64 architecture allows software to define up to 15 external interrupt-priority classes. Priority classes are numbered from 1 to 15, with priority-class 1 being the lowest and priority-class 15 the highest. CR8 uses the four low-order bits for specifying a task priority and the remaining 60 bits are reserved and must be written with zeros.

System software can use the TPR register to temporarily block low-priority interrupts from interrupting a high-priority task. This is accomplished by loading TPR with a value corresponding to the highest-priority interrupt that is to be blocked. For example, loading TPR with a value of 9 (1001b) blocks all interrupts with a priority class of 9 or less, while allowing all interrupts with a priority class of 10 or more to be recognized. Loading TPR with 0 enables all external interrupts. Loading TPR with 15 (1111b) disables all external interrupts.

The TPR is cleared to 0 on reset.


https://en.wikipedia.org/wiki/Control_register

'O / S > Window' 카테고리의 다른 글

Windows USB Autorn 설정  (0) 2016.01.04
Windows 10 _HANDLES_TABLE, _HADNLES_TABLE_ENTRY  (0) 2015.11.09
_TEB, _PEB Windows 10  (0) 2015.11.05
_EPROCESS, _KPOCESS Windows 10  (0) 2015.11.05
System Overview  (0) 2015.10.28

_TEB, _PEB Windows 10

Kail-KM
|2015. 11. 5. 15:10


> dt _TEB

 ntdll!_TEB

   +0x000 NtTib            : _NT_TIB

   +0x01c EnvironmentPointer : Ptr32 Void

   +0x020 ClientId         : _CLIENT_ID

   +0x028 ActiveRpcHandle  : Ptr32 Void

   +0x02c ThreadLocalStoragePointer : Ptr32 Void

   +0x030 ProcessEnvironmentBlock : Ptr32 _PEB

   +0x034 LastErrorValue   : Uint4B

   +0x038 CountOfOwnedCriticalSections : Uint4B

   +0x03c CsrClientThread  : Ptr32 Void

   +0x040 Win32ThreadInfo  : Ptr32 Void

   +0x044 User32Reserved   : [26] Uint4B

   +0x0ac UserReserved     : [5] Uint4B

   +0x0c0 WOW32Reserved    : Ptr32 Void

   +0x0c4 CurrentLocale    : Uint4B

   +0x0c8 FpSoftwareStatusRegister : Uint4B

   +0x0cc ReservedForDebuggerInstrumentation : [16] Ptr32 Void

   +0x10c SystemReserved1  : [38] Ptr32 Void

   +0x1a4 ExceptionCode    : Int4B

   +0x1a8 ActivationContextStackPointer : Ptr32 _ACTIVATION_CONTEXT_STACK

   +0x1ac InstrumentationCallbackSp : Uint4B

   +0x1b0 InstrumentationCallbackPreviousPc : Uint4B

   +0x1b4 InstrumentationCallbackPreviousSp : Uint4B

   +0x1b8 InstrumentationCallbackDisabled : UChar

   +0x1b9 SpareBytes       : [23] UChar

   +0x1d0 TxFsContext      : Uint4B

   +0x1d4 GdiTebBatch      : _GDI_TEB_BATCH

   +0x6b4 RealClientId     : _CLIENT_ID

   +0x6bc GdiCachedProcessHandle : Ptr32 Void

   +0x6c0 GdiClientPID     : Uint4B

   +0x6c4 GdiClientTID     : Uint4B

   +0x6c8 GdiThreadLocalInfo : Ptr32 Void

   +0x6cc Win32ClientInfo  : [62] Uint4B

   +0x7c4 glDispatchTable  : [233] Ptr32 Void

   +0xb68 glReserved1      : [29] Uint4B

   +0xbdc glReserved2      : Ptr32 Void

   +0xbe0 glSectionInfo    : Ptr32 Void

   +0xbe4 glSection        : Ptr32 Void

   +0xbe8 glTable          : Ptr32 Void

   +0xbec glCurrentRC      : Ptr32 Void

   +0xbf0 glContext        : Ptr32 Void

   +0xbf4 LastStatusValue  : Uint4B

   +0xbf8 StaticUnicodeString : _UNICODE_STRING

   +0xc00 StaticUnicodeBuffer : [261] Wchar

   +0xe0c DeallocationStack : Ptr32 Void

   +0xe10 TlsSlots         : [64] Ptr32 Void

   +0xf10 TlsLinks         : _LIST_ENTRY

   +0xf18 Vdm              : Ptr32 Void

   +0xf1c ReservedForNtRpc : Ptr32 Void

   +0xf20 DbgSsReserved    : [2] Ptr32 Void

   +0xf28 HardErrorMode    : Uint4B

   +0xf2c Instrumentation  : [9] Ptr32 Void

   +0xf50 ActivityId       : _GUID

   +0xf60 SubProcessTag    : Ptr32 Void

   +0xf64 PerflibData      : Ptr32 Void

   +0xf68 EtwTraceData     : Ptr32 Void

   +0xf6c WinSockData      : Ptr32 Void

   +0xf70 GdiBatchCount    : Uint4B

   +0xf74 CurrentIdealProcessor : _PROCESSOR_NUMBER

   +0xf74 IdealProcessorValue : Uint4B

   +0xf74 ReservedPad0     : UChar

   +0xf75 ReservedPad1     : UChar

   +0xf76 ReservedPad2     : UChar

   +0xf77 IdealProcessor   : UChar

   +0xf78 GuaranteedStackBytes : Uint4B

   +0xf7c ReservedForPerf  : Ptr32 Void

   +0xf80 ReservedForOle   : Ptr32 Void

   +0xf84 WaitingOnLoaderLock : Uint4B

   +0xf88 SavedPriorityState : Ptr32 Void

   +0xf8c ReservedForCodeCoverage : Uint4B

   +0xf90 ThreadPoolData   : Ptr32 Void

   +0xf94 TlsExpansionSlots : Ptr32 Ptr32 Void

   +0xf98 MuiGeneration    : Uint4B

   +0xf9c IsImpersonating  : Uint4B

   +0xfa0 NlsCache         : Ptr32 Void

   +0xfa4 pShimData        : Ptr32 Void

   +0xfa8 HeapVirtualAffinity : Uint2B

   +0xfaa LowFragHeapDataSlot : Uint2B

   +0xfac CurrentTransactionHandle : Ptr32 Void

   +0xfb0 ActiveFrame      : Ptr32 _TEB_ACTIVE_FRAME

   +0xfb4 FlsData          : Ptr32 Void

   +0xfb8 PreferredLanguages : Ptr32 Void

   +0xfbc UserPrefLanguages : Ptr32 Void

   +0xfc0 MergedPrefLanguages : Ptr32 Void

   +0xfc4 MuiImpersonation : Uint4B

   +0xfc8 CrossTebFlags    : Uint2B

   +0xfc8 SpareCrossTebBits : Pos 0, 16 Bits

   +0xfca SameTebFlags     : Uint2B

   +0xfca SafeThunkCall    : Pos 0, 1 Bit

   +0xfca InDebugPrint     : Pos 1, 1 Bit

   +0xfca HasFiberData     : Pos 2, 1 Bit

   +0xfca SkipThreadAttach : Pos 3, 1 Bit

   +0xfca WerInShipAssertCode : Pos 4, 1 Bit

   +0xfca RanProcessInit   : Pos 5, 1 Bit

   +0xfca ClonedThread     : Pos 6, 1 Bit

   +0xfca SuppressDebugMsg : Pos 7, 1 Bit

   +0xfca DisableUserStackWalk : Pos 8, 1 Bit

   +0xfca RtlExceptionAttached : Pos 9, 1 Bit

   +0xfca InitialThread    : Pos 10, 1 Bit

   +0xfca SessionAware     : Pos 11, 1 Bit

   +0xfca LoadOwner        : Pos 12, 1 Bit

   +0xfca LoaderWorker     : Pos 13, 1 Bit

   +0xfca SpareSameTebBits : Pos 14, 2 Bits

   +0xfcc TxnScopeEnterCallback : Ptr32 Void

   +0xfd0 TxnScopeExitCallback : Ptr32 Void

   +0xfd4 TxnScopeContext  : Ptr32 Void

   +0xfd8 LockCount        : Uint4B

   +0xfdc WowTebOffset     : Int4B

   +0xfe0 ResourceRetValue : Ptr32 Void

   +0xfe4 ReservedForWdf   : Ptr32 Void

   +0xfe8 ReservedForCrt   : Uint8B

   +0xff0 EffectiveContainerId : _GUID

 


> dt _PEB

 ntdll!_PEB

   +0x000 InheritedAddressSpace : UChar

   +0x001 ReadImageFileExecOptions : UChar

   +0x002 BeingDebugged    : UChar

   +0x003 BitField         : UChar

   +0x003 ImageUsesLargePages : Pos 0, 1 Bit

   +0x003 IsProtectedProcess : Pos 1, 1 Bit

   +0x003 IsImageDynamicallyRelocated : Pos 2, 1 Bit

   +0x003 SkipPatchingUser32Forwarders : Pos 3, 1 Bit

   +0x003 IsPackagedProcess : Pos 4, 1 Bit

   +0x003 IsAppContainer   : Pos 5, 1 Bit

   +0x003 IsProtectedProcessLight : Pos 6, 1 Bit

   +0x003 SpareBits        : Pos 7, 1 Bit

   +0x004 Mutant           : Ptr32 Void

   +0x008 ImageBaseAddress : Ptr32 Void

   +0x00c Ldr              : Ptr32 _PEB_LDR_DATA

   +0x010 ProcessParameters : Ptr32 _RTL_USER_PROCESS_PARAMETERS

   +0x014 SubSystemData    : Ptr32 Void

   +0x018 ProcessHeap      : Ptr32 Void

   +0x01c FastPebLock      : Ptr32 _RTL_CRITICAL_SECTION

   +0x020 AtlThunkSListPtr : Ptr32 Void

   +0x024 IFEOKey          : Ptr32 Void

   +0x028 CrossProcessFlags : Uint4B

   +0x028 ProcessInJob     : Pos 0, 1 Bit

   +0x028 ProcessInitializing : Pos 1, 1 Bit

   +0x028 ProcessUsingVEH  : Pos 2, 1 Bit

   +0x028 ProcessUsingVCH  : Pos 3, 1 Bit

   +0x028 ProcessUsingFTH  : Pos 4, 1 Bit

   +0x028 ReservedBits0    : Pos 5, 27 Bits

   +0x02c KernelCallbackTable : Ptr32 Void

   +0x02c UserSharedInfoPtr : Ptr32 Void

   +0x030 SystemReserved   : [1] Uint4B

   +0x034 AtlThunkSListPtr32 : Uint4B

   +0x038 ApiSetMap        : Ptr32 Void

   +0x03c TlsExpansionCounter : Uint4B

   +0x040 TlsBitmap        : Ptr32 Void

   +0x044 TlsBitmapBits    : [2] Uint4B

   +0x04c ReadOnlySharedMemoryBase : Ptr32 Void

   +0x050 SparePvoid0      : Ptr32 Void

   +0x054 ReadOnlyStaticServerData : Ptr32 Ptr32 Void

   +0x058 AnsiCodePageData : Ptr32 Void

   +0x05c OemCodePageData  : Ptr32 Void

   +0x060 UnicodeCaseTableData : Ptr32 Void

   +0x064 NumberOfProcessors : Uint4B

   +0x068 NtGlobalFlag     : Uint4B

   +0x070 CriticalSectionTimeout : _LARGE_INTEGER

   +0x078 HeapSegmentReserve : Uint4B

   +0x07c HeapSegmentCommit : Uint4B

   +0x080 HeapDeCommitTotalFreeThreshold : Uint4B

   +0x084 HeapDeCommitFreeBlockThreshold : Uint4B

   +0x088 NumberOfHeaps    : Uint4B

   +0x08c MaximumNumberOfHeaps : Uint4B

   +0x090 ProcessHeaps     : Ptr32 Ptr32 Void

   +0x094 GdiSharedHandleTable : Ptr32 Void

   +0x098 ProcessStarterHelper : Ptr32 Void

   +0x09c GdiDCAttributeList : Uint4B

   +0x0a0 LoaderLock       : Ptr32 _RTL_CRITICAL_SECTION

   +0x0a4 OSMajorVersion   : Uint4B

   +0x0a8 OSMinorVersion   : Uint4B

   +0x0ac OSBuildNumber    : Uint2B

   +0x0ae OSCSDVersion     : Uint2B

   +0x0b0 OSPlatformId     : Uint4B

   +0x0b4 ImageSubsystem   : Uint4B

   +0x0b8 ImageSubsystemMajorVersion : Uint4B

   +0x0bc ImageSubsystemMinorVersion : Uint4B

   +0x0c0 ActiveProcessAffinityMask : Uint4B

   +0x0c4 GdiHandleBuffer  : [34] Uint4B

   +0x14c PostProcessInitRoutine : Ptr32     void 

   +0x150 TlsExpansionBitmap : Ptr32 Void

   +0x154 TlsExpansionBitmapBits : [32] Uint4B

   +0x1d4 SessionId        : Uint4B

   +0x1d8 AppCompatFlags   : _ULARGE_INTEGER

   +0x1e0 AppCompatFlagsUser : _ULARGE_INTEGER

   +0x1e8 pShimData        : Ptr32 Void

   +0x1ec AppCompatInfo    : Ptr32 Void

   +0x1f0 CSDVersion       : _UNICODE_STRING

   +0x1f8 ActivationContextData : Ptr32 _ACTIVATION_CONTEXT_DATA

   +0x1fc ProcessAssemblyStorageMap : Ptr32 _ASSEMBLY_STORAGE_MAP

   +0x200 SystemDefaultActivationContextData : Ptr32 _ACTIVATION_CONTEXT_DATA

   +0x204 SystemAssemblyStorageMap : Ptr32 _ASSEMBLY_STORAGE_MAP

   +0x208 MinimumStackCommit : Uint4B

   +0x20c FlsCallback      : Ptr32 _FLS_CALLBACK_INFO

   +0x210 FlsListHead      : _LIST_ENTRY

   +0x218 FlsBitmap        : Ptr32 Void

   +0x21c FlsBitmapBits    : [4] Uint4B

   +0x22c FlsHighIndex     : Uint4B

   +0x230 WerRegistrationData : Ptr32 Void

   +0x234 WerShipAssertPtr : Ptr32 Void

   +0x238 pUnused          : Ptr32 Void

   +0x23c pImageHeaderHash : Ptr32 Void

   +0x240 TracingFlags     : Uint4B

   +0x240 HeapTracingEnabled : Pos 0, 1 Bit

   +0x240 CritSecTracingEnabled : Pos 1, 1 Bit

   +0x240 LibLoaderTracingEnabled : Pos 2, 1 Bit

   +0x240 SpareTracingBits : Pos 3, 29 Bits

   +0x248 CsrServerReadOnlySharedMemoryBase : Uint8B





























'O / S > Window' 카테고리의 다른 글

Windows 10 _HANDLES_TABLE, _HADNLES_TABLE_ENTRY  (0) 2015.11.09
Control registers - wiki  (0) 2015.11.07
_EPROCESS, _KPOCESS Windows 10  (0) 2015.11.05
System Overview  (0) 2015.10.28
Memory.dmp  (0) 2015.10.09

Memory.dmp

Kail-KM
|2015. 10. 9. 22:35

'O / S > Window' 카테고리의 다른 글

_EPROCESS, _KPOCESS Windows 10  (0) 2015.11.05
System Overview  (0) 2015.10.28
Jump List App ID  (0) 2015.09.27
OpenSCManager FAILED 5 Error  (0) 2015.09.18
KPROCESS struct  (0) 2015.09.14