mirror of
https://github.com/mike1k/pepp
synced 2026-06-08 16:02:04 +00:00
88 lines
1.8 KiB
C++
88 lines
1.8 KiB
C++
#pragma once
|
|
|
|
namespace pepp
|
|
{
|
|
enum class PEMachine
|
|
{
|
|
MACHINE_I386 = 0x14c,
|
|
MACHINE_IA64 = 0x200,
|
|
MACHINE_AMD64 = 0x8664
|
|
};
|
|
|
|
class FileHeader : pepp::msc::NonCopyable
|
|
{
|
|
friend class PEHeader<32>;
|
|
friend class PEHeader<64>;
|
|
|
|
IMAGE_FILE_HEADER* m_base;
|
|
public:
|
|
FileHeader()
|
|
{
|
|
}
|
|
|
|
void setMachine(PEMachine machine) {
|
|
m_base->Machine = static_cast<std::uint16_t>(machine);
|
|
}
|
|
|
|
PEMachine getMachine() const {
|
|
return static_cast<PEMachine>(m_base->Machine);
|
|
}
|
|
|
|
void setNumberOfSections(std::uint16_t numSections) {
|
|
m_base->NumberOfSections = numSections;
|
|
}
|
|
|
|
std::uint16_t getNumberOfSections() const {
|
|
return m_base->NumberOfSections;
|
|
}
|
|
|
|
void setTimeDateStamp(std::uint32_t dwTimeDateStamp) {
|
|
m_base->TimeDateStamp = dwTimeDateStamp;
|
|
}
|
|
|
|
std::uint32_t getTimeDateStamp() const {
|
|
return m_base->TimeDateStamp;
|
|
}
|
|
|
|
void setPointerToSymbolTable(std::uint32_t dwPointerToSymbolTable) {
|
|
m_base->PointerToSymbolTable = dwPointerToSymbolTable;
|
|
}
|
|
|
|
std::uint32_t setPointerToSymbolTable() const {
|
|
return m_base->PointerToSymbolTable;
|
|
}
|
|
|
|
void setNumberOfSymbols(std::uint32_t numSymbols) {
|
|
m_base->NumberOfSymbols = numSymbols;
|
|
}
|
|
|
|
std::uint32_t getNumberOfSymbols() const {
|
|
return m_base->NumberOfSymbols;
|
|
}
|
|
|
|
void setSizeOfOptionalHeader(std::uint16_t size) {
|
|
m_base->SizeOfOptionalHeader = size;
|
|
}
|
|
|
|
std::uint16_t getSizeOfOptionalHeader() const {
|
|
return m_base->SizeOfOptionalHeader;
|
|
}
|
|
|
|
void setCharacteristics(std::uint16_t chars) {
|
|
m_base->Characteristics = chars;
|
|
}
|
|
|
|
std::uint16_t getCharacteristics() const {
|
|
return m_base->Characteristics;
|
|
}
|
|
|
|
IMAGE_FILE_HEADER* native() const {
|
|
return m_base;
|
|
}
|
|
private:
|
|
template<unsigned int bitsize>
|
|
void _setup(Image<bitsize>* image) {
|
|
m_base = &image->getPEHdr().native()->FileHeader;
|
|
}
|
|
};
|
|
} |