1b6cee71dSXin LI 2b6cee71dSXin LI#------------------------------------------------------------------------------ 3*ae316d1dSXin LI# $File: virtual,v 1.21 2024/09/04 19:09:00 christos Exp $ 4b6cee71dSXin LI# From: James Nobis <quel@quelrod.net> 5b6cee71dSXin LI# Microsoft hard disk images for: 6b6cee71dSXin LI# Virtual Server 7b6cee71dSXin LI# Virtual PC 848c779cdSXin LI# VirtualBox 948c779cdSXin LI# URL: http://fileformats.archiveteam.org/wiki/VHD_(Virtual_Hard_Disk) 1048c779cdSXin LI# Reference: https://download.microsoft.com/download/f/f/e/ffef50a5-07dd-4cf8-aaa3-442c0673a029/ 1148c779cdSXin LI# Virtual%20Hard%20Disk%20Format%20Spec_10_18_06.doc 12a2dfb722SXin LI0 string conectix Microsoft Disk Image, Virtual Server or Virtual PC 1348c779cdSXin LI# alternative shorter names 14a2dfb722SXin LI#0 string conectix Microsoft Virtual Hard Disk image 15a2dfb722SXin LI#0 string conectix Microsoft Virtual HD image 1648c779cdSXin LI!:mime application/x-virtualbox-vhd 1748c779cdSXin LI!:ext vhd 1848c779cdSXin LI# Features is a bit field used to indicate specific feature support 1943a5ec4eSXin LI#>8 ubelong !0x00000002 \b, Features %#x 2048c779cdSXin LI# Reserved. This bit must always be set to 1. 2143a5ec4eSXin LI#>8 ubelong &0x00000002 \b, Reserved %#x 2248c779cdSXin LI# File Format Version for the current specification 0x00010000 2343a5ec4eSXin LI#>12 ubelong !0x00010000 \b, Version %#8.8x 2448c779cdSXin LI# Data Offset only found 0x200 2543a5ec4eSXin LI#>16 ubequad !0x200 \b, Data Offset %#llx 2643a5ec4eSXin LI#>16 ubequad x \b, at %#llx 2748c779cdSXin LI# Dynamic Disk Header cookie like cxsparse 2848c779cdSXin LI#>(16.Q) string x "%-.8s" 2948c779cdSXin LI# This field contains a Unicode string (UTF-16) of the parent hard disk filename 3043a5ec4eSXin LI#>(16.Q+64) ubequad x \b, parent name %#llx 3148c779cdSXin LI# Creator Application 3248c779cdSXin LI# vpc~Microsoft Virtual PC, vs~Microsoft Virtual Server, vbox~VirtualBox, d2v~disk2vhd 3348c779cdSXin LI>28 string x \b, Creator %-4.4s 3448c779cdSXin LI# Creator Version: 0x00010000~Virtual Server 2004, 0x00050000~Virtual PC 2004 3548c779cdSXin LI# holds the major/minor version of the application that created the image 3648c779cdSXin LI>32 ubeshort x %x 3748c779cdSXin LI>34 ubeshort x \b.%x 3843a5ec4eSXin LI#>32 ubelong x \b, Version %#8.8x 3948c779cdSXin LI# Creator Host OS: 0x5769326B~Windows (Wi2k), 0x4D616320~Macintosh (Mac) 4048c779cdSXin LI>36 ubelong x ( 4148c779cdSXin LI>>36 ubelong 0x5769326B \bW2k 4248c779cdSXin LI>>36 ubelong 0x4D616320 \bMac 4348c779cdSXin LI>>36 default x \b0x 4448c779cdSXin LI>>>36 ubelong x \b%8.8x 4548c779cdSXin LI# creation Time in seconds since 1 Jan 2000 UTC~946684800 sec. since Unix Epoch 4648c779cdSXin LI>24 bedate+946684800 x \b) %s 4748c779cdSXin LI# Original Size 4843a5ec4eSXin LI#>40 ubequad x \b, o.-Size %#llx 4948c779cdSXin LI# Current Size is same as original size, but change when disk is expanded 5043a5ec4eSXin LI#>48 ubequad x \b, Size %#llx 5148c779cdSXin LI>48 ubequad x \b, %llu bytes 5248c779cdSXin LI# Disk Geometry: cylinder, heads, and sectors/track for hard disk 5343a5ec4eSXin LI#>56 ubeshort x \b, Cylinder %#x 5448c779cdSXin LI>56 ubeshort x \b, CHS %u 5548c779cdSXin LI# Heads 5643a5ec4eSXin LI#>58 ubyte x \b, Heads %#x 5748c779cdSXin LI>58 ubyte x \b/%u 5848c779cdSXin LI# Sectors per track 5943a5ec4eSXin LI#>59 ubyte x \b, Sectors %#x 6048c779cdSXin LI>59 ubyte x \b/%u 6148c779cdSXin LI# Disk Type: 3~Dynamic hard disk 6243a5ec4eSXin LI>60 ubelong !0x3 \b, type %#x 6348c779cdSXin LI# Checksum 6443a5ec4eSXin LI#>64 ubelong x \b, cksum %#x 6548c779cdSXin LI# universally unique identifier (UUID) to associate a parent with its differencing image 6643a5ec4eSXin LI#>68 ubequad x \b, id %#16.16llx 6748c779cdSXin LI#>76 ubequad x \b-%16.16llx 6848c779cdSXin LI# Saved State: 1~Saved State 6943a5ec4eSXin LI>84 ubyte !0 \b, State %#x 7048c779cdSXin LI# Reserved 427 bytes with nils 7143a5ec4eSXin LI#>85 ubequad !0 \b, Reserved %#16.16llx 72b6cee71dSXin LI 7348c779cdSXin LI# From: Joerg Jenderek 7448c779cdSXin LI# URL: https://msdn.microsoft.com/en-us/library/mt740058.aspx 7548c779cdSXin LI# Reference: https://winprotocoldoc.blob.core.windows.net/productionwindowsarchives/ 7648c779cdSXin LI# MS-VHDX/[MS-VHDX].pdf 7748c779cdSXin LI# Note: extends the VHD format with new capabilities, such as a 16TB maximum size 7848c779cdSXin LI# TODO: find and display values like virtual size, disk size, cluster_size, etc 7948c779cdSXin LI# display id in GUID format 8048c779cdSXin LI# 8148c779cdSXin LI# VHDX_FILE_IDENTIFIER signature 0x656C696678646876 8248c779cdSXin LI0 string vhdxfile 8348c779cdSXin LI# VHDX_HEADER signature. 1 header is stored at offset 64KB and the other at 128KB 8448c779cdSXin LI>0x10000 string head Microsoft Disk Image eXtended 8548c779cdSXin LI#>0x20000 string head \b, 2nd header 8648c779cdSXin LI#!:mime application/x-virtualbox-vhdx 8748c779cdSXin LI!:ext vhdx 8848c779cdSXin LI# Creator[256] like "QEMU v3.0.0", "Microsoft Windows 6.3.9600.18512" 8948c779cdSXin LI>>8 lestring16 x \b, by %.256s 9048c779cdSXin LI# The Checksum field is a CRC-32C hash over the entire 4 KB structure 9143a5ec4eSXin LI#>>0x10004 ulelong x \b, CRC %#x 9248c779cdSXin LI# SequenceNumber 9343a5ec4eSXin LI>>0x10008 ulequad x \b, sequence %#llx 9448c779cdSXin LI# FileWriteGuid 9543a5ec4eSXin LI#>>0x10010 ubequad x \b, file id %#llx 9648c779cdSXin LI#>>>0x10018 ubequad x \b-%llx 9748c779cdSXin LI# DataWriteGuid 9843a5ec4eSXin LI#>>0x10020 ubequad x \b, data id %#llx 9948c779cdSXin LI#>>>0x10028 ubequad x \b-%llx 10048c779cdSXin LI# LogGuid. If this field is zero, then the log is empty or has no valid entries 10143a5ec4eSXin LI>>0x10030 ubequad >0 \b, log id %#llx 10248c779cdSXin LI>>>0x10038 ubequad x \b-%llx 10348c779cdSXin LI# LogVersion. If not 0 there is a log to replay 10443a5ec4eSXin LI>>0x10040 uleshort >0 \b, LogVersion %#x 10548c779cdSXin LI# Version. This field must be set to 1 10643a5ec4eSXin LI>>0x10042 uleshort !1 \b, Version %#x 10748c779cdSXin LI# LogLength must be multiples of 1 MB 10848c779cdSXin LI>>0x10044 ulelong/1048576 >1 \b, LogLength %u MB 10948c779cdSXin LI# LogOffset (normally 0x100000 when log direct after header); multiples of 1 MB 11043a5ec4eSXin LI>>0x10048 ulequad !0x100000 \b, LogOffset %#llx 11148c779cdSXin LI# Log Entry Signature must be 0x65676F6C~loge 11248c779cdSXin LI>>(0x10048.q) ulelong !0x65676F6C \b, NO Log Signature 11348c779cdSXin LI>>(0x10048.q) ulelong =0x65676F6C \b; LOG 11448c779cdSXin LI# Log Entry Checksum 11543a5ec4eSXin LI#>>>(0x10048.q+4) ulelong x \b, Log CRC %#x 11648c779cdSXin LI# Log Entry Length must be a multiple of 4 KB 11748c779cdSXin LI>>>(0x10048.q+8) ulelong/1024 >4 \b, EntryLength %u KB 11848c779cdSXin LI# Log Entry Tail must be a multiple of 4 KB 11943a5ec4eSXin LI#>>>(0x10048.q+12) ulelong x \b, Tail %#x 12048c779cdSXin LI# Log Entry SequenceNumber 12143a5ec4eSXin LI#>>>(0x10048.q+16) ulequad x \b, # %#llx 12248c779cdSXin LI# Log Entry DescriptorCount may be zero. only 4 bytes in other docs instead 8 12343a5ec4eSXin LI#>>>(0x10048.q+24) ulelong x \b, DescriptorCount %#llx 12448c779cdSXin LI# Log Entry Reserved must be set to 0 12543a5ec4eSXin LI>>>(0x10048.q+28) ulelong !0 \b, Reserved %#x 12648c779cdSXin LI# Log Entry LogGuid 12743a5ec4eSXin LI#>>>(0x10048.q+32) ubequad x \b, Log id %#llx 12848c779cdSXin LI#>>>(0x10048.q+40) ubequad x \b-%llx 12948c779cdSXin LI# Log Entry FlushedFileOffset should VHDX size when entry is written. 13048c779cdSXin LI#>>>(0x10048.q+48) ulequad x \b, FlushedFileOffset %llu 13148c779cdSXin LI# Log Entry LastFileOffset 13248c779cdSXin LI#>>>(0x10048.q+56) ulequad x \b, LastFileOffset %llu 13348c779cdSXin LI# filling 13448c779cdSXin LI#>>>(0x10048.q+64) ulequad >0 \b, filling %llx 13548c779cdSXin LI# Reserved[4016] 13643a5ec4eSXin LI#>>0x10050 ulequad >0 \b, Reserved %#llx 13748c779cdSXin LI# VHDX_REGION_TABLE_HEADER Signature 0x69676572~regi at offset 192 KB and 256 KB 138*ae316d1dSXin LI>0x30000 ulelong !0x69676572 Microsoft Disk Image Extended, 1st region INVALID 139*ae316d1dSXin LI>0x30000 ulelong =0x69676572 Microsoft Disk Image Extended; region 14048c779cdSXin LI# region Checksum. CRC-32C hash over the entire 64-KB table 14143a5ec4eSXin LI#>>0x30004 ulelong x \b, CRC %#x 14248c779cdSXin LI# The EntryCount specifies number of valid entries; Found 2; This must be =< 2047. 14348c779cdSXin LI>>0x30008 ulelong x \b, %u entries 14448c779cdSXin LI# reserved must be zero 14543a5ec4eSXin LI#>>0x3000C ulelong !0 \b, RESERVED %#x 14648c779cdSXin LI# Region Table Entry starts with identifier for the object. often BAT id 14748c779cdSXin LI>>0x30010 use vhdx-id 14848c779cdSXin LI# FileOffset 14943a5ec4eSXin LI>>0x30020 ulequad x \b, at %#llx 15048c779cdSXin LI# Length. Specifies the length of the object within the file 15143a5ec4eSXin LI#>>0x30028 ulelong x \b, Length %#x 15248c779cdSXin LI# 1 means region entry is required. if region not recognized, then REFUSE to load VHDX 15348c779cdSXin LI>>0x3002C ulelong x \b, Required %u 15448c779cdSXin LI# 2nd region entry often metadata id 15548c779cdSXin LI>>0x30030 use vhdx-id 15648c779cdSXin LI# 2nd entry FileOffset 15743a5ec4eSXin LI>>0x30040 ulequad x \b, at %#llx 15848c779cdSXin LI# 1 means region entry is required. if region not recognized, then REFUSE to load VHDX 15948c779cdSXin LI>>0x3004C ulelong x \b, Required %u 16048c779cdSXin LI# 2nd region 16148c779cdSXin LI>>0x40000 ulelong !0x69676572 \b, 2nd region INVALID 16248c779cdSXin LI# check in vhdx images for known id and show names instead hexadecimal 16348c779cdSXin LI0 name vhdx-id 16448c779cdSXin LI# https://www.windowstricks.in/online-windows-guid-converter 16548c779cdSXin LI# 2DC27766-F623-4200-9D64-115E9BFD4A08 BAT GUID 16648c779cdSXin LI# 6677C22D23F600429D64115E9BFD4A08 BAT ID 16748c779cdSXin LI>0 ubequad =0x6677C22D23F60042 16848c779cdSXin LI>>8 ubequad =0x9D64115E9BFD4A08 \b, id BAT 16948c779cdSXin LI# no BAT id 17048c779cdSXin LI>>8 default x 17148c779cdSXin LI>>>0 use vhdx-id-hex 17248c779cdSXin LI# 8B7CA206-4790-4B9A-B8FE-575F050F886E Metadata region GUID 17348c779cdSXin LI# 06A27C8B90479A4BB8FE575F050F886E Metadata region ID 17448c779cdSXin LI>0 ubequad =0x06A27C8B90479A4B 17548c779cdSXin LI>>8 ubequad =0xB8FE575F050F886E \b, id Metadata 17648c779cdSXin LI# no Metadata id 17748c779cdSXin LI>>8 default x 17848c779cdSXin LI>>>0 use vhdx-id-hex 17948c779cdSXin LI# 2FA54224-CD1B-4876-B211-5DBED83BF4B8 Virtual Disk Size GUID 18048c779cdSXin LI# 2442A52F1BCD7648B2115DBED83BF4B8 Virtual Disk Size ID 18148c779cdSXin LI# value "virtual size" can be verified by command `qemu-img info ` 18248c779cdSXin LI>0 ubequad =0x2442A52F1BCD7648 18348c779cdSXin LI>>8 ubequad =0xB2115DBED83BF4B8 \b, id vsize 18448c779cdSXin LI# no Virtual Disk Size ID 18548c779cdSXin LI>>8 default x 18648c779cdSXin LI>>>0 use vhdx-id-hex 18748c779cdSXin LI# other ids 18848c779cdSXin LI>0 default x 18948c779cdSXin LI>>0 use vhdx-id-hex 19048c779cdSXin LI# in vhdx images show id as hexadecimal 19148c779cdSXin LI0 name vhdx-id-hex 19243a5ec4eSXin LI>0 ubequad x \b, ID %#16.16llx 19348c779cdSXin LI>8 ubequad x \b-%16.16llx 19448c779cdSXin LI# 195b6cee71dSXin LI# libvirt 196b6cee71dSXin LI# From: Philipp Hahn <hahn@univention.de> 197b6cee71dSXin LI0 string LibvirtQemudSave Libvirt QEMU Suspend Image 198b6cee71dSXin LI>0x10 lelong x \b, version %u 199b6cee71dSXin LI>0x14 lelong x \b, XML length %u 200b6cee71dSXin LI>0x18 lelong 1 \b, running 201b6cee71dSXin LI>0x1c lelong 1 \b, compressed 202b6cee71dSXin LI 203b6cee71dSXin LI0 string LibvirtQemudPart Libvirt QEMU partial Suspend Image 204b6cee71dSXin LI# From: Alex Beregszaszi <alex@fsn.hu> 205b6cee71dSXin LI0 string/b COWD VMWare3 206b6cee71dSXin LI>4 byte 3 disk image 207b6cee71dSXin LI>>32 lelong x (%d/ 208b6cee71dSXin LI>>36 lelong x \b%d/ 209b6cee71dSXin LI>>40 lelong x \b%d) 210b6cee71dSXin LI>4 byte 2 undoable disk image 211b6cee71dSXin LI>>32 string >\0 (%s) 212b6cee71dSXin LI 213b6cee71dSXin LI0 string/b VMDK VMware4 disk image 214b6cee71dSXin LI0 string/b KDMV VMware4 disk image 215b6cee71dSXin LI 216b6cee71dSXin LI#-------------------------------------------------------------------- 217b6cee71dSXin LI# Qemu Emulator Images 218b6cee71dSXin LI# Lines written by Friedrich Schwittay (f.schwittay@yousable.de) 219b6cee71dSXin LI# Updated by Adam Buchbinder (adam.buchbinder@gmail.com) 220b6cee71dSXin LI# Made by reading sources, reading documentation, and doing trial and error 221b6cee71dSXin LI# on existing QCOW files 222a4d6d3b8SXin LI0 string/b QFI\xFB QEMU QCOW Image 223a4d6d3b8SXin LI!:mime application/x-qemu-disk 224b6cee71dSXin LI 225b6cee71dSXin LI# Uncomment the following line to display Magic (only used for debugging 226b6cee71dSXin LI# this magic number) 227b6cee71dSXin LI#>0 string/b x , Magic: %s 228b6cee71dSXin LI 229b6cee71dSXin LI# There are currently 2 Versions: "1" and "2". 23048c779cdSXin LI# https://www.gnome.org/~markmc/qcow-image-format-version-1.html 231a4d6d3b8SXin LI>4 belong x (v%d) 232b6cee71dSXin LI 233b6cee71dSXin LI# Using the existence of the Backing File Offset to determine whether 234b6cee71dSXin LI# to read Backing File Information 235b6cee71dSXin LI>>12 belong >0 \b, has backing file ( 236b6cee71dSXin LI# Note that this isn't a null-terminated string; the length is actually 237b6cee71dSXin LI# (16.L). Assuming a null-terminated string happens to work usually, but it 238b6cee71dSXin LI# may spew junk until it reaches a \0 in some cases. 239b6cee71dSXin LI>>>(12.L) string >\0 \bpath %s 240b6cee71dSXin LI 241b6cee71dSXin LI# Modification time of the Backing File 242b6cee71dSXin LI# Really useful if you want to know if your backing 243b6cee71dSXin LI# file is still usable together with this image 244b6cee71dSXin LI>>>>20 bedate >0 \b, mtime %s) 245b6cee71dSXin LI>>>>20 default x \b) 246b6cee71dSXin LI 247b6cee71dSXin LI# Size is stored in bytes in a big-endian u64. 248b6cee71dSXin LI>>24 bequad x \b, %lld bytes 249b6cee71dSXin LI 250b6cee71dSXin LI# 1 for AES encryption, 0 for none. 251b6cee71dSXin LI>>36 belong 1 \b, AES-encrypted 252b6cee71dSXin LI 25348c779cdSXin LI# https://www.gnome.org/~markmc/qcow-image-format.html 254b6cee71dSXin LI>4 belong 2 (v2) 255b6cee71dSXin LI# Using the existence of the Backing File Offset to determine whether 256b6cee71dSXin LI# to read Backing File Information 257b6cee71dSXin LI>>8 bequad >0 \b, has backing file 258b6cee71dSXin LI# Note that this isn't a null-terminated string; the length is actually 259b6cee71dSXin LI# (16.L). Assuming a null-terminated string happens to work usually, but it 260b6cee71dSXin LI# may spew junk until it reaches a \0 in some cases. Also, since there's no 261b6cee71dSXin LI# .Q modifier, we just use the bottom four bytes as an offset. Note that if 262b6cee71dSXin LI# the file is over 4G, and the backing file path is stored after the first 4G, 263b6cee71dSXin LI# the wrong filename will be printed. (This should be (8.Q), when that syntax 264b6cee71dSXin LI# is introduced.) 265b6cee71dSXin LI>>>(12.L) string >\0 (path %s) 266b6cee71dSXin LI>>24 bequad x \b, %lld bytes 267b6cee71dSXin LI>>32 belong 1 \b, AES-encrypted 268b6cee71dSXin LI 269b6cee71dSXin LI>4 belong 3 (v3) 270b6cee71dSXin LI# Using the existence of the Backing File Offset to determine whether 271b6cee71dSXin LI# to read Backing File Information 272b6cee71dSXin LI>>8 bequad >0 \b, has backing file 273b6cee71dSXin LI# Note that this isn't a null-terminated string; the length is actually 274b6cee71dSXin LI# (16.L). Assuming a null-terminated string happens to work usually, but it 275b6cee71dSXin LI# may spew junk until it reaches a \0 in some cases. Also, since there's no 276b6cee71dSXin LI# .Q modifier, we just use the bottom four bytes as an offset. Note that if 277b6cee71dSXin LI# the file is over 4G, and the backing file path is stored after the first 4G, 278b6cee71dSXin LI# the wrong filename will be printed. (This should be (8.Q), when that syntax 279b6cee71dSXin LI# is introduced.) 280b6cee71dSXin LI>>>(12.L) string >\0 (path %s) 281b6cee71dSXin LI>>24 bequad x \b, %lld bytes 282b6cee71dSXin LI>>32 belong 1 \b, AES-encrypted 283b6cee71dSXin LI 284b6cee71dSXin LI>4 default x (unknown version) 285b6cee71dSXin LI 286b6cee71dSXin LI0 string/b QEVM QEMU suspend to disk image 287b6cee71dSXin LI 288b6cee71dSXin LI# QEMU QED Image 28948c779cdSXin LI# https://wiki.qemu.org/Features/QED/Specification 290b6cee71dSXin LI0 string/b QED\0 QEMU QED Image 291b6cee71dSXin LI 292b6cee71dSXin LI# VDI Image 293b6cee71dSXin LI# Sun xVM VirtualBox Disk Image 294b6cee71dSXin LI# From: Richard W.M. Jones <rich@annexia.org> 295b6cee71dSXin LI# VirtualBox Disk Image 296b6cee71dSXin LI0x40 ulelong 0xbeda107f VirtualBox Disk Image 297b6cee71dSXin LI>0x44 uleshort >0 \b, major %u 298b6cee71dSXin LI>0x46 uleshort >0 \b, minor %u 299b6cee71dSXin LI>0 string >\0 (%s) 300b6cee71dSXin LI>368 lequad x \b, %lld bytes 301b6cee71dSXin LI 302*ae316d1dSXin LI# From: Joerg Jenderek 303*ae316d1dSXin LI# URL: https://www.virtualbox.org/manual/ch08.html#vboxmanage-modifynvram 304*ae316d1dSXin LI# Reference: http://mark0.net/download/triddefs_xml.7z/defs/n/nvram-virtualbox.trid.xml 305*ae316d1dSXin LI# Note: called "VirtualBox saved (U)EFI BIOS settings" by TrID and 306*ae316d1dSXin LI# verfied partly by VirtualBox version 7.0.12 `VBoxManage modifynvram <uuid|vmname> listvars` 307*ae316d1dSXin LI# first 64 bytes seems to be constant 308*ae316d1dSXin LI0 long 0 309*ae316d1dSXin LI>0x28 string _FVH 310*ae316d1dSXin LI>>0x64 beshort 0xAA55 311*ae316d1dSXin LI>>>0 use virtualbox-nvram 312*ae316d1dSXin LI# display information of virtualbox *.nvram 313*ae316d1dSXin LI0 name virtualbox-nvram 314*ae316d1dSXin LI>0x64 beshort x VirtualBox NVRAM file 315*ae316d1dSXin LI#!:mime application/octet-stream 316*ae316d1dSXin LI!:mime application/x-virtualbox-nvram 317*ae316d1dSXin LI!:ext nvram 318*ae316d1dSXin LI 319b6cee71dSXin LI0 string/b Bochs\ Virtual\ HD\ Image Bochs disk image, 320b6cee71dSXin LI>32 string x type %s, 321b6cee71dSXin LI>48 string x subtype %s 322b6cee71dSXin LI 323b6cee71dSXin LI0 lelong 0x02468ace Bochs Sparse disk image 324b6cee71dSXin LI 325*ae316d1dSXin LI# QEMU replay image 326*ae316d1dSXin LI# From: Alexandre Iooss <erdnaxe@crans.org> 327*ae316d1dSXin LI# URL: https://www.qemu.org/docs/master/system/replay.html 328*ae316d1dSXin LI# Reference: https://gitlab.com/qemu/qemu/-/blob/master/replay/replay.c 329*ae316d1dSXin LI0 ubelong&0xFFFFFFF0 0x00e02000 330*ae316d1dSXin LI>3 byte >5 331*ae316d1dSXin LI>>4 quad 0 332*ae316d1dSXin LI>>>12 ulelong <40 QEMU replay 333*ae316d1dSXin LI>>>>3 byte x \b, version %d 334*ae316d1dSXin LI>>>>3 byte 6 (QEMU 2.10-2.11) 335*ae316d1dSXin LI>>>>3 byte 7 (QEMU 2.12-4.1) 336*ae316d1dSXin LI>>>>3 byte 8 (QEMU 4.2) 337*ae316d1dSXin LI>>>>3 byte 9 (QEMU 5.0) 338*ae316d1dSXin LI>>>>3 byte 10 (QEMU 5.1-7.0) 339*ae316d1dSXin LI>>>>3 byte 12 (QEMU 7.1+) 340