aboutsummaryrefslogtreecommitdiffhomepage
path: root/tests/corruptor.h
blob: f945287443b9c6772144cdcdee7af022cd906d1e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
//////////////////////////////////////////////////////
//
//  Unit Test Image Corruptor (corruptor.h of unittests.exe)
//
//  Microsoft Research Detours Package
//
//  Copyright (c) Microsoft Corporation.  All rights reserved.
//
#pragma once

class ImageCorruptor final
{
public:

    ImageCorruptor(PIMAGE_DOS_HEADER Header);

    ~ImageCorruptor();

    void ModifyDosMagic(WORD Value);

    void ModifyNtSignature(ULONG Value);

private:
    // Pointer to the target image header to corrupt.
    //
    PIMAGE_DOS_HEADER m_TargetDosHeader;

    // Cached copy of the DOS header, to restore state with.
    //
    IMAGE_DOS_HEADER m_OriginalDosHeader;

    // The original protection of the DOS header.
    //
    DWORD m_OriginalDosProtection;

    // Pointer to the target NT image header to corrupt.
    //
    PIMAGE_NT_HEADERS m_TargetNtHeaders;

    // Cached copy of the NT headers, to restore state with.
    //
    IMAGE_NT_HEADERS m_OriginalNtHeaders;

    // The original protection of the NT headers.
    //
    DWORD m_OriginalNtProtection;
};