PETools/PETools.format.ps1xml

<?xml version="1.0" encoding="utf-8" ?>
<Configuration>
    <SelectionSets>
            <SelectionSet>
                <Name>OptionHeaderTypes</Name>
                <Types>
                    <TypeName>PE+_IMAGE_OPTIONAL_HEADER32</TypeName>
                    <TypeName>PE+_IMAGE_OPTIONAL_HEADER64</TypeName>
                </Types>
            </SelectionSet>
        </SelectionSets>
    <ViewDefinitions>
        <View>
            <Name>PEView</Name>
            <ViewSelectedBy>
                <TypeName>PEHeader</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Module</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>DOSHeader</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>FileHeader</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>OptionalHeader</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>SectionHeaders</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Imports</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Exports</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>OptionalHeaderView</Name>
            <ViewSelectedBy>
                <SelectionSetName>OptionHeaderTypes</SelectionSetName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Magic</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>MajorLinkerVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>MinorLinkerVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfCode</Label>
                                <ScriptBlock>"0x$($_.SizeOfCode.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfInitializedData</Label>
                                <ScriptBlock>"0x$($_.SizeOfInitializedData.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfUninitializedData</Label>
                                <ScriptBlock>"0x$($_.SizeOfUninitializedData.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>AddressOfEntryPoint</Label>
                                <ScriptBlock>"0x$($_.AddressOfEntryPoint.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>BaseOfCode</Label>
                                <ScriptBlock>"0x$($_.BaseOfCode.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>BaseOfData</Label>
                                <ScriptBlock>"0x$($_.BaseOfData.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>ImageBase</Label>
                                <ScriptBlock>if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.ImageBase.ToString('X8'))" } else { "0x$($_.ImageBase.ToString('X16'))" }</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SectionAlignment</Label>
                                <ScriptBlock>"0x$($_.SectionAlignment.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>FileAlignment</Label>
                                <ScriptBlock>"0x$($_.FileAlignment.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <PropertyName>MajorOperatingSystemVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>MinorOperatingSystemVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>MajorSubsystemVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>MinorSubsystemVersion</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Win32VersionValue</PropertyName>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfImage</Label>
                                <ScriptBlock>"0x$($_.SizeOfImage.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfHeaders</Label>
                                <ScriptBlock>"0x$($_.SizeOfHeaders.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>CheckSum</Label>
                                <ScriptBlock>"0x$($_.CheckSum.ToString('X8'))"</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Subsystem</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>DllCharacteristics</PropertyName>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfStackReserve</Label>
                                <ScriptBlock>if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfStackReserve.ToString('X8'))" } else { "0x$($_.SizeOfStackReserve.ToString('X16'))" }</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfStackCommit</Label>
                                <ScriptBlock>if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfStackCommit.ToString('X8'))" } else { "0x$($_.SizeOfStackCommit.ToString('X16'))" }</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfHeapReserve</Label>
                                <ScriptBlock>if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfHeapReserve.ToString('X8'))" } else { "0x$($_.SizeOfHeapReserve.ToString('X16'))" }</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <Label>SizeOfHeapCommit</Label>
                                <ScriptBlock>if ($_.Magic.ToString() -eq 'PE32') { "0x$($_.SizeOfHeapCommit.ToString('X8'))" } else { "0x$($_.SizeOfHeapCommit.ToString('X16'))" }</ScriptBlock>
                            </ListItem>
                            <ListItem>
                                <PropertyName>LoaderFlags</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>NumberOfRvaAndSizes</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>DataDirectory</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>SectionHeaderView</Name>
                <ViewSelectedBy>
                    <TypeName>PE+_IMAGE_SECTION_HEADER</TypeName>
                </ViewSelectedBy>
                <TableControl>
                    <AutoSize/>
                    <TableHeaders>
                        <TableColumnHeader>
                            <Label>Name</Label>
                            <Alignment>Right</Alignment>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>VirtualSize</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>VirtualAddress</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>SizeOfRawData</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>PointerToRawData</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>Characteristics</Label>
                            <Alignment>Left</Alignment>
                        </TableColumnHeader>
                    </TableHeaders>
                    <TableRowEntries>
                        <TableRowEntry>
                            <TableColumnItems>
                                <TableColumnItem>
                                    <Alignment>Right</Alignment>
                                    <PropertyName>Name</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <ScriptBlock>"0x$($_.VirtualSize.ToString('X8'))"</ScriptBlock>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <ScriptBlock>"0x$($_.VirtualAddress.ToString('X8'))"</ScriptBlock>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <ScriptBlock>"0x$($_.SizeOfRawData.ToString('X8'))"</ScriptBlock>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <ScriptBlock>"0x$($_.PointerToRawData.ToString('X8'))"</ScriptBlock>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>Characteristics</PropertyName>
                                </TableColumnItem>
                            </TableColumnItems>
                        </TableRowEntry>
                    </TableRowEntries>
                </TableControl>
        </View>
        <View>
            <Name>FileHeaderView</Name>
            <ViewSelectedBy>
                <TypeName>PE+_IMAGE_FILE_HEADER</TypeName>
            </ViewSelectedBy>
            <ListControl>
                <ListEntries>
                    <ListEntry>
                        <ListItems>
                            <ListItem>
                                <PropertyName>Machine</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>NumberOfSections</PropertyName>
                            </ListItem>
                            <ListItem>
                                <Label>TimeDateStamp</Label>
                                <!-- GMT compile time -->
                                <ScriptBlock>(New-Object DateTime(1970, 1, 1, 0, 0, 0)).AddSeconds($_.TimeDateStamp)</ScriptBlock>
                                <!-- Compile time assuming it was compiled in Redmond, Washington (PST - GMT-8) -->
                                <!-- <ScriptBlock>(New-Object DateTime(1969, 12, 31, 16, 0, 0)).AddSeconds($_.TimeDateStamp)</ScriptBlock> -->
                            </ListItem>
                            <ListItem>
                                <PropertyName>PointerToSymbolTable</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>NumberOfSymbols</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>SizeOfOptionalHeader</PropertyName>
                            </ListItem>
                            <ListItem>
                                <PropertyName>Characteristics</PropertyName>
                            </ListItem>
                        </ListItems>
                    </ListEntry>
                </ListEntries>
            </ListControl>
        </View>
        <View>
            <Name>DataDirectoryView</Name>
                <ViewSelectedBy>
                    <TypeName>PE+_IMAGE_DATA_DIRECTORY</TypeName>
                </ViewSelectedBy>
                <TableControl>
                    <AutoSize/>
                    <TableHeaders>
                        <TableColumnHeader>
                            <Label>VirtualAddress</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>Size</Label>
                        </TableColumnHeader>
                    </TableHeaders>
                    <TableRowEntries>
                        <TableRowEntry>
                            <TableColumnItems>
                                <TableColumnItem>
                                    <ScriptBlock>"0x$($_.VirtualAddress.ToString('X8'))"</ScriptBlock>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <ScriptBlock>"0x$($_.Size.ToString('X8'))"</ScriptBlock>
                                </TableColumnItem>
                            </TableColumnItems>
                        </TableRowEntry>
                    </TableRowEntries>
                </TableControl>
        </View>
        <View>
            <Name>ImportView</Name>
                <ViewSelectedBy>
                    <TypeName>Import</TypeName>
                </ViewSelectedBy>
                <TableControl>
                    <AutoSize/>
                    <TableHeaders>
                        <TableColumnHeader>
                            <Label>ModuleName</Label>
                            <Alignment>Right</Alignment>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>VA/FT</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>Ordinal</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>FunctionName</Label>
                        </TableColumnHeader>
                    </TableHeaders>
                    <TableRowEntries>
                        <TableRowEntry>
                            <TableColumnItems>
                                <TableColumnItem>
                                    <Alignment>Right</Alignment>
                                    <PropertyName>ModuleName</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>RVA</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>Ordinal</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>FunctionName</PropertyName>
                                </TableColumnItem>
                            </TableColumnItems>
                        </TableRowEntry>
                    </TableRowEntries>
                </TableControl>
        </View>
        <View>
            <Name>ExportView</Name>
                <ViewSelectedBy>
                    <TypeName>Export</TypeName>
                </ViewSelectedBy>
                <TableControl>
                    <AutoSize/>
                    <TableHeaders>
                        <TableColumnHeader>
                            <Label>RVA</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>Ordinal</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>FunctionName</Label>
                        </TableColumnHeader>
                        <TableColumnHeader>
                            <Label>ForwardedName</Label>
                        </TableColumnHeader>
                    </TableHeaders>
                    <TableRowEntries>
                        <TableRowEntry>
                            <TableColumnItems>
                                <TableColumnItem>
                                    <PropertyName>RVA</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>Ordinal</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>FunctionName</PropertyName>
                                </TableColumnItem>
                                <TableColumnItem>
                                    <PropertyName>ForwardedName</PropertyName>
                                </TableColumnItem>
                            </TableColumnItems>
                        </TableRowEntry>
                    </TableRowEntries>
                </TableControl>
        </View>
    </ViewDefinitions>
</Configuration>