我已阅读 NTFS MFT。这是图片(4字节字,低地址显示在左边)
突出显示的区域是文件名属性。以下是属性格式。
typedef struct _NTFS_ATTRIBUTE {
unsigned int dwType;
unsigned int dwFullLength;
unsigned char uchNonResFlag;
unsigned char uchNameLength;
unsigned short wNameOffset;
unsigned short wFlags;
unsigned short wID;
union ATTR {
struct RESIDENT {
unsigned int dwLength;
unsigned short wAttrOffset;
unsigned char uchIndexedTag;
unsigned char uchPadding;
} Resident;
struct NONRESIDENT {
unsigned long long n64StartVCN;
unsigned long long n64EndVCN;
unsigned short wDatarunOffset;
unsigned short wCompressionSize;
unsigned char uchPadding[4];
unsigned long long n64AllocSize;
unsigned long long n64RealSize;
unsigned long long n64StreamSize;
} NonResident;
} Attr;
} _NTFS_ATTRIBUTE, *P_NTFS_ATTRIBUTE;
如您所见,dwType 是 0x00000030 (FILENAME) , dwFullLength 是 0x00000068。wNameOffset 为 0x0018,wID 为 0x0003。这是一个常驻案例,驻留有 dwLength 0x0000004a、wAttrOffset 0x0018、uchIndexedTag 0x01 和 uchPadding 0x00。因为偏移量是从属性记录开始的 0x18。如下所示。
我不知道如何阅读这个 unicode 字符串。是 utf-16 吗?每个字符都是 16 位的?