A C++11 library used to create a managed program (CIL) and dump to either .IL, .EXE, or .DLL format
C++ Batchfile Other
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
ObjTest
docs
netlink
test
util
.gitignore
Allocator.cpp
AssemblyDef.cpp
ChangeLog.txt
Class.cpp
CodeContainer.cpp
CreateGUID.cpp
CustomAttributeContainer.cpp
DLLExportReader.cpp
DLLExportReader.h
DataContainer.cpp
DotNetPELib.h
DotNetPELib.sln
DotNetPELib.vcxproj
DotNetPELib.vcxproj.filters
DotNetPELib.vcxproj.user
Enum.cpp
Field.cpp
Instruction.cpp
MZHeader.h
Method.cpp
MethodSignature.cpp
NameSpace.cpp
NetSignature.cpp
Operand.cpp
PECor20Headers.cpp
PEFile.h
PEHeader.h
PELib.cpp
PELibError.cpp
PEReader.cpp
PEWriter.cpp
Property.cpp
Qualifiers.cpp
README.md
RSAEncoder.cpp
RSAEncoder.h
Type.cpp
Value.cpp
appveyor.yml
bigd license.txt
bigdigits.cpp
bigdigits.h
bigdtypes.h
ms.bat
sha1.cpp
sha1.h
targetver.h
vcvars32.bat
vcvarsall.bat

README.md

DotNetPELib

DotNetPELib is a library which abstracts managed information such as namespaces, classes, fields, methods, properties, and instructions. The information can then be used to generate intermediate language source files, or PE executables or DLLs.

Build Status Build status

The library has been tested as the backend for the OCCIL compiler, and is reasonably functional. That said this version of the library does have various limitations; not all aspects of the managed environment are enabled at this time.

In addition to being able to generate .net programs, version 2.0 of the library has support for importing managed assemblies, and strong names. See 'changelog.txt' for a full description of the changes.

Version 2.2 of the library introduces read/write of a simple object file format in the familiar object-file-per-module paradigm, along with a linker.

A simple test program is included which generates several example executables in both IL and EXE format.

The project files are for Visual Studio 2017 community edition. This source code does use some of the new features in C++11.