Skip to content

Commit 7c49c49

Browse files
committed
Add corflags project and executable.
1 parent bfb8df8 commit 7c49c49

File tree

3 files changed

+131
-55
lines changed

3 files changed

+131
-55
lines changed

MetadataTools.sln

Lines changed: 61 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,55 +1,61 @@
1-
2-
Microsoft Visual Studio Solution File, Format Version 12.00
3-
# Visual Studio 15
4-
VisualStudioVersion = 15.0.27004.2005
5-
MinimumVisualStudioVersion = 10.0.40219.1
6-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BinaryCompatChecker", "src\BinaryCompatChecker\BinaryCompatChecker.csproj", "{E28FE956-860F-4418-9C44-67BBA8B47932}"
7-
EndProject
8-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pdb", "src\Pdb\Pdb.csproj", "{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}"
9-
EndProject
10-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PEFile", "src\PEFile\PEFile.csproj", "{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}"
11-
EndProject
12-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PEFile.Tests", "src\PEFile.Tests\PEFile.Tests.csproj", "{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}"
13-
EndProject
14-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RefDump", "src\RefDump\RefDump.csproj", "{D914402D-04ED-478E-B8E3-5A225681AEAB}"
15-
EndProject
16-
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyBindingFixer", "src\AssemblyBindingFixer\AssemblyBindingFixer.csproj", "{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}"
17-
EndProject
18-
Global
19-
GlobalSection(SolutionConfigurationPlatforms) = preSolution
20-
Debug|Any CPU = Debug|Any CPU
21-
Release|Any CPU = Release|Any CPU
22-
EndGlobalSection
23-
GlobalSection(ProjectConfigurationPlatforms) = postSolution
24-
{E28FE956-860F-4418-9C44-67BBA8B47932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
25-
{E28FE956-860F-4418-9C44-67BBA8B47932}.Debug|Any CPU.Build.0 = Debug|Any CPU
26-
{E28FE956-860F-4418-9C44-67BBA8B47932}.Release|Any CPU.ActiveCfg = Release|Any CPU
27-
{E28FE956-860F-4418-9C44-67BBA8B47932}.Release|Any CPU.Build.0 = Release|Any CPU
28-
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
29-
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
30-
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
31-
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Release|Any CPU.Build.0 = Release|Any CPU
32-
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33-
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Debug|Any CPU.Build.0 = Debug|Any CPU
34-
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Release|Any CPU.ActiveCfg = Release|Any CPU
35-
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Release|Any CPU.Build.0 = Release|Any CPU
36-
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
37-
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Debug|Any CPU.Build.0 = Debug|Any CPU
38-
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Release|Any CPU.ActiveCfg = Release|Any CPU
39-
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Release|Any CPU.Build.0 = Release|Any CPU
40-
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
41-
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
42-
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
43-
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Release|Any CPU.Build.0 = Release|Any CPU
44-
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
45-
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
46-
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
47-
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Release|Any CPU.Build.0 = Release|Any CPU
48-
EndGlobalSection
49-
GlobalSection(SolutionProperties) = preSolution
50-
HideSolutionNode = FALSE
51-
EndGlobalSection
52-
GlobalSection(ExtensibilityGlobals) = postSolution
53-
SolutionGuid = {C2E0B4E9-A103-4522-B36F-943D00F2A710}
54-
EndGlobalSection
55-
EndGlobal
1+
2+
Microsoft Visual Studio Solution File, Format Version 12.00
3+
# Visual Studio 15
4+
VisualStudioVersion = 15.0.27004.2005
5+
MinimumVisualStudioVersion = 10.0.40219.1
6+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "BinaryCompatChecker", "src\BinaryCompatChecker\BinaryCompatChecker.csproj", "{E28FE956-860F-4418-9C44-67BBA8B47932}"
7+
EndProject
8+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Pdb", "src\Pdb\Pdb.csproj", "{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}"
9+
EndProject
10+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PEFile", "src\PEFile\PEFile.csproj", "{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}"
11+
EndProject
12+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "PEFile.Tests", "src\PEFile.Tests\PEFile.Tests.csproj", "{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}"
13+
EndProject
14+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "RefDump", "src\RefDump\RefDump.csproj", "{D914402D-04ED-478E-B8E3-5A225681AEAB}"
15+
EndProject
16+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AssemblyBindingFixer", "src\AssemblyBindingFixer\AssemblyBindingFixer.csproj", "{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}"
17+
EndProject
18+
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Corflags", "src\Corflags\Corflags.csproj", "{0FDE9438-641B-407D-9376-0E57F350F453}"
19+
EndProject
20+
Global
21+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
22+
Debug|Any CPU = Debug|Any CPU
23+
Release|Any CPU = Release|Any CPU
24+
EndGlobalSection
25+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
26+
{E28FE956-860F-4418-9C44-67BBA8B47932}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
27+
{E28FE956-860F-4418-9C44-67BBA8B47932}.Debug|Any CPU.Build.0 = Debug|Any CPU
28+
{E28FE956-860F-4418-9C44-67BBA8B47932}.Release|Any CPU.ActiveCfg = Release|Any CPU
29+
{E28FE956-860F-4418-9C44-67BBA8B47932}.Release|Any CPU.Build.0 = Release|Any CPU
30+
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
31+
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Debug|Any CPU.Build.0 = Debug|Any CPU
32+
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Release|Any CPU.ActiveCfg = Release|Any CPU
33+
{F0B0CBD7-476C-44F9-87EE-DC56E238AC9C}.Release|Any CPU.Build.0 = Release|Any CPU
34+
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
35+
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Debug|Any CPU.Build.0 = Debug|Any CPU
36+
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Release|Any CPU.ActiveCfg = Release|Any CPU
37+
{D282C9B2-E4A1-4E14-AF44-61D0D2221F63}.Release|Any CPU.Build.0 = Release|Any CPU
38+
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
39+
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Debug|Any CPU.Build.0 = Debug|Any CPU
40+
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Release|Any CPU.ActiveCfg = Release|Any CPU
41+
{29BCCBE3-9D9F-4EF6-9B49-B33C0672EC20}.Release|Any CPU.Build.0 = Release|Any CPU
42+
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
43+
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Debug|Any CPU.Build.0 = Debug|Any CPU
44+
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Release|Any CPU.ActiveCfg = Release|Any CPU
45+
{D914402D-04ED-478E-B8E3-5A225681AEAB}.Release|Any CPU.Build.0 = Release|Any CPU
46+
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
47+
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Debug|Any CPU.Build.0 = Debug|Any CPU
48+
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Release|Any CPU.ActiveCfg = Release|Any CPU
49+
{7D5AB2ED-8CFF-4C9A-9C24-7E0424F041F7}.Release|Any CPU.Build.0 = Release|Any CPU
50+
{0FDE9438-641B-407D-9376-0E57F350F453}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
51+
{0FDE9438-641B-407D-9376-0E57F350F453}.Debug|Any CPU.Build.0 = Debug|Any CPU
52+
{0FDE9438-641B-407D-9376-0E57F350F453}.Release|Any CPU.ActiveCfg = Release|Any CPU
53+
{0FDE9438-641B-407D-9376-0E57F350F453}.Release|Any CPU.Build.0 = Release|Any CPU
54+
EndGlobalSection
55+
GlobalSection(SolutionProperties) = preSolution
56+
HideSolutionNode = FALSE
57+
EndGlobalSection
58+
GlobalSection(ExtensibilityGlobals) = postSolution
59+
SolutionGuid = {C2E0B4E9-A103-4522-B36F-943D00F2A710}
60+
EndGlobalSection
61+
EndGlobal

src/Corflags/Corflags.cs

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
using System;
2+
using System.IO;
3+
using System.Reflection.PortableExecutable;
4+
5+
namespace PEFile
6+
{
7+
public class Corflags
8+
{
9+
static void Main(string[] args)
10+
{
11+
if (args.Length < 2 || !File.Exists(args[0]) || args[1] != "/32BITPREF-")
12+
{
13+
Console.WriteLine("Usage: corflags Assembly [options]");
14+
Console.WriteLine("Options:");
15+
Console.WriteLine("/32BITPREF-");
16+
return;
17+
}
18+
19+
Set32BitPreferredSRM(args[0], prefer32Bit: false);
20+
}
21+
22+
public static void Set32BitPreferredSRM(string filePath, bool prefer32Bit)
23+
{
24+
using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.ReadWrite))
25+
{
26+
PEReader reader = new PEReader(stream);
27+
28+
CorFlags attributes = reader.PEHeaders.CorHeader.Flags;
29+
30+
var old = (attributes & CorFlags.Prefers32Bit) == CorFlags.Prefers32Bit;
31+
if (old != prefer32Bit)
32+
{
33+
if (prefer32Bit)
34+
{
35+
attributes = attributes | CorFlags.Prefers32Bit;
36+
}
37+
else
38+
{
39+
attributes = attributes & ~CorFlags.Prefers32Bit;
40+
attributes = attributes & ~CorFlags.Requires32Bit;
41+
}
42+
43+
var offset = reader.PEHeaders.CorHeaderStartOffset;
44+
offset += 0x10; // flags offset
45+
stream.Position = offset;
46+
int value = (int)attributes;
47+
stream.WriteByte((byte)(value & 0xFF));
48+
stream.WriteByte((byte)(value & 0xFF00));
49+
stream.WriteByte((byte)(value & 0xFF0000));
50+
stream.WriteByte((byte)(value & 0xFF000000));
51+
}
52+
}
53+
}
54+
}
55+
}

src/Corflags/Corflags.csproj

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<Project Sdk="Microsoft.NET.Sdk">
3+
<PropertyGroup>
4+
<AssemblyName>corflags</AssemblyName>
5+
<TargetFramework>net46</TargetFramework>
6+
<LangVersion>latest</LangVersion>
7+
<OutputType>Exe</OutputType>
8+
</PropertyGroup>
9+
10+
<ItemGroup>
11+
<PackageReference Include="System.Collections.Immutable" Version="1.4.0" />
12+
<PackageReference Include="System.Reflection.Metadata" Version="1.5.0" />
13+
</ItemGroup>
14+
15+
</Project>

0 commit comments

Comments
 (0)