コード例 #1
0
        public void should_read_pe_header()
        {
            assemblyStream = OpenResourceStream("hello.anycpu.exe");
            CilImage    image  = CilImage.InitializeFrom(assemblyStream);
            CilPEHeader header = image.PEHeader;

            Assert.Equal(0xE0, header.FileHeader.OptionalHeaderSize);
        }
コード例 #2
0
        public void should_read_and_validate()
        {
            assemblyStream = OpenResourceStream("hello.anycpu.exe");
            Exception error = Record.Exception(
                () => CilImage.InitializeFrom(assemblyStream));

            Assert.Null(error);
        }
コード例 #3
0
        public void should_throw_if_dos_header_value_is_invalid()
        {
            byte[] invalidDosHeader =
            {
                0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF,
                0x00, 0x00, 0xC9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
            };

            var error = Assert.Throws <BadImageFormatException>(
                () => CilImage.InitializeFrom(new MemoryStream(invalidDosHeader)));

            Assert.Equal("The field \"initialSp\" value 00c9 does not match the expectation 00b8", error.Message);
        }
コード例 #4
0
        public void should_throw_if_dos_header_signature_is_invalid()
        {
            byte[] invalidDosHeader =
            {
                0x4D, 0x5B, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF,
                0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00
            };

            var error = Assert.Throws <BadImageFormatException>(
                () => CilImage.InitializeFrom(new MemoryStream(invalidDosHeader)));

            Assert.Equal("Invalid MS-DOS file header.", error.Message);
        }
コード例 #5
0
        public void should_throw_if_dos_stub_header_is_not_valid()
        {
            byte[] invalidDosStubHeader =
            {
                0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0xFF, 0xFF,
                0x00, 0x00, 0xB8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x0E, 0x1F, 0xBA, 0x0E, 0x00, 0xB4,
                0x09, 0xCD, 0x21, 0xB8, 0x01, 0x4C, 0xCD, 0x21, 0x54, 0x68, 0x69, 0x73, 0x20, 0x70,
                0x72, 0x6F, 0x67, 0x7A, 0x61, 0x6D, 0x20, 0x63, 0x61, 0x6E, 0x6E, 0x6F, 0x74, 0x20,
                0x62, 0x65, 0x20, 0x72, 0x75, 0x6E, 0x20, 0x69, 0x6E, 0x20, 0x44, 0x4F, 0x53, 0x20,
                0x6D, 0x6F, 0x64, 0x65, 0x2E, 0x0D, 0x0D, 0x0A, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00,
                0x00, 0x00
            };

            var error = Assert.Throws <BadImageFormatException>(
                () => CilImage.InitializeFrom(new MemoryStream(invalidDosStubHeader)));

            Assert.Equal("Invalid MS-DOS Stub header.", error.Message);
        }