08.04.2021 19:39:16 Andrew Fish <af...@apple.com>:
> > >> On Apr 8, 2021, at 10:02 AM, Marvin Häuser <mhaeu...@posteo.de> wrote: >> >> On 08.04.21 18:44, Andrew Fish via groups.io wrote: >>> >>> >>>> On Apr 8, 2021, at 9:06 AM, Marvin Häuser <mhaeu...@posteo.de >>>> <mailto:mhaeu...@posteo.de>> wrote: >>>> >>>> We use the loader code in userspace anyway for fuzzing and such. I also >>>> want to build a database of all sorts of UEFI binaries some time before >>>> the merge to confirm they are all accepted (Windows / macOS / Linux >>>> bootloaders, tools like memtest, drivers like iPXE). As part of that, I'm >>>> sure we can have a userspace tool that uses the code to emit parsing >>>> information. >>>> >>>> But as the EDK II build system is very... not so userspace friendly, I >>>> will not promise it will be very nice. :) >>>> >>> >>> Marvin, >>> >>> The BaseTools can easily build C command line tools that are cross platform? >>> >>> Actually GenFw [1] already does a lot of PE/COFF magic, so it should be >>> relatively easy to add a -I, —info, and dump out an overview of a PE/COFF >>> image, and make comments on things that are not secure. It would also >>> probably be useful to dump out information about the Debug Directory >>> entries, His sections, etc. for general debug. >> >> I did not look at the code much, but I do know that BaseTools duplicates the >> PE/COFF code from MdePkg. Whether it was changed or not I cannot tell. >> > > GenFw does the ELF to PE/COFF conversion, zeroing out Debug Directory Entries > etc. so it should be correct. It is not like the PE/COFF spec is a moving > target. PE is not a moving target, but EDK II is. The fact that even old and proven code sometimes needs maintanance is evidental from the proposal and its so far positive feedback. I'm not ready to duplicate code, I'd rather take the utilities out of the current scope and discuss ways to consume MdePkg libraries later. In fact, I want to reduce code duplication as a "free benefit" from the changes, especially image hashing. I know it takes time, but I think it will be worth it. We have been debugging and fuzztesting our EDK II packages in userland for a while, and found it to be a great help. I hope you will agree. :) Best regards, Marvin > > Thanks, > > Andrew Fish > >> Best regards, >> Marvin >> >>> >>> [1] https://github.com/tianocore/edk2/tree/master/BaseTools/Source/C/GenFw >>> <https://github.com/tianocore/edk2/tree/master/BaseTools/Source/C/GenFw> >>> /Volumes/Case/edk2-github(eng/PR-557-XcodeResourceSections)>. edksetup.sh >>> Loading previous configuration from >>> /Volumes/Case/edk2-github/Conf/BuildEnv.sh >>> WORKSPACE: /Volumes/Case/edk2-github >>> EDK_TOOLS_PATH: /Volumes/Case/edk2-github/BaseTools >>> CONF_PATH: /Volumes/Case/edk2-github/Conf >>> /Volumes/Case/edk2-github(eng/PR-557-XcodeResourceSections)>GenFw -h >>> GenFw Version 0.2 Developer Build based on Revision: Unknown >>> >>> Usage: GenFw [options] <input_file> >>> >>> Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved. >>> >>> Options: >>> -o FileName, --outputfile FileName >>> File will be created to store the output content. >>> -e EFI_FILETYPE, --efiImage EFI_FILETYPE >>> Create Efi Image. EFI_FILETYPE is one of >>> BASE,SMM_CORE, >>> PEI_CORE, PEIM, DXE_CORE, DXE_DRIVER, >>> UEFI_APPLICATION, >>> SEC, DXE_SAL_DRIVER, UEFI_DRIVER, >>> DXE_RUNTIME_DRIVER, >>> DXE_SMM_DRIVER, SECURITY_CORE, COMBINED_PEIM_DRIVER, >>> MM_STANDALONE, MM_CORE_STANDALONE, >>> PIC_PEIM, RELOCATABLE_PEIM, BS_DRIVER, RT_DRIVER, >>> APPLICATION, SAL_RT_DRIVER to support all module >>> types >>> It can only be used together with >>> --keepexceptiontable, >>> --keepzeropending, --keepoptionalheader, -r, -o >>> option. >>> It is a action option. If it is combined with other >>> action options, >>> the later input action option will override the >>> previous one. >>> -c, --acpi Create Acpi table. >>> It can't be combined with other action options >>> except for -o, -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -t, --terse Create Te Image. >>> It can only be used together with >>> --keepexceptiontable, >>> --keepzeropending, --keepoptionalheader, -r, -o >>> option. >>> It is a action option. If it is combined with other >>> action options, >>> the later input action option will override the >>> previous one. >>> -u, --dump Dump TeImage Header. >>> It can't be combined with other action options >>> except for -o, -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -z, --zero Zero the Debug Data Fields in the PE input image >>> file. >>> It also zeros the time stamp fields. >>> This option can be used to compare the binary efi >>> image. >>> It can't be combined with other action options >>> except for -o, -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -b, --exe2bin Convert the input EXE to the output BIN file. >>> It can't be combined with other action options >>> except for -o, -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -l, --stripped Strip off the relocation info from PE or TE image. >>> It can't be combined with other action options >>> except for -o, -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -s timedate, --stamp timedate >>> timedate format is "yyyy-mm-dd 00:00:00". if >>> timedata >>> is set to NOW, current system time is used. The >>> support >>> date scope is 1970-01-01 00+timezone:00:00 >>> ~ 2038-01-19 03+timezone:14:07 >>> The scope is adjusted according to the different >>> zones. >>> It can't be combined with other action options >>> except for -o, -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -m, --mcifile Convert input microcode txt file to microcode bin >>> file. >>> It can't be combined with other action options >>> except for -o option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -j, --join Combine multi microcode bin files to one file. >>> It can be specified with -a, -p, -o option. >>> No other options can be combined with it. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -a NUM, --align NUM NUM is one HEX or DEC format alignment value. >>> This option is only used together with -j option. >>> -p NUM, --pad NUM NUM is one HEX or DEC format padding value. >>> This option is only used together with -j option. >>> --keepexceptiontable Don't clear exception table. >>> This option can be used together with -e or -t. >>> It doesn't work for other options. >>> --keepoptionalheader Don't zero PE/COFF optional header fields. >>> This option can be used together with -e or -t. >>> It doesn't work for other options. >>> --keepzeropending Don't strip zero pending of .reloc. >>> This option can be used together with -e or -t. >>> It doesn't work for other options. >>> -r, --replace Overwrite the input file with the output content. >>> If more input files are specified, >>> the last input file will be as the output file. >>> -g HiiPackageListGuid, --hiiguid HiiPackageListGuid >>> Guid is used to specify hii package list guid. >>> Its format is xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx >>> If not specified, the first Form FormSet guid is >>> used. >>> --hiipackage Combine all input binary hii packages into >>> a single package list as the text resource data(RC). >>> It can't be combined with other action options >>> except for -o option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> --hiibinpackage Combine all input binary hii packages into >>> a single package list as the binary resource >>> section. >>> It can't be combined with other action options >>> except for -o option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> --rc FlieName Append a Hii resource section to the >>> last PE/COFF section. The FileName is the resource >>> section to append >>> If FileName does not exist this operation is >>> skipped. This feature is >>> only intended for toolchains, like XCODE, that >>> don't suport $(RC). >>> This option can only be combined with -e >>> --rebase NewAddress Rebase image to new base address. New address >>> is also set to the first none code section header. >>> It can't be combined with other action options >>> except for -o or -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> --address NewAddress Set new address into the first none code >>> section header of the input image. >>> It can't be combined with other action options >>> except for -o or -r option. It is a action option. >>> If it is combined with other action options, the >>> later >>> input action option will override the previous one. >>> -v, --verbose Turn on verbose output with informational messages. >>> -q, --quiet Disable all messages except key message and fatal >>> error >>> -d, --debug level Enable debug messages, at input debug level. >>> --version Show program's version number and exit >>> -h, --help Show this help message and exit >>> >>> Thanks, >>> >>> Andrew Fish >>> >>>> Best regards, >>>> Marvin >>>> >>>> On 08.04.21 16:13, Andrew (EFI) Fish wrote: >>>>> At a minimum it would be nice if we had a tool that would point out the >>>>> security faults with a given PE/COFF file layout. >>>>> >>>>> >>>>> >>>>>> … >>>> >>>> >>>> >>> >>> >> -=-=-=-=-=-=-=-=-=-=-=- Groups.io Links: You receive all messages sent to this group. View/Reply Online (#73879): https://edk2.groups.io/g/devel/message/73879 Mute This Topic: https://groups.io/mt/81853302/21656 Group Owner: devel+ow...@edk2.groups.io Unsubscribe: https://edk2.groups.io/g/devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-