⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 headers.cpp

📁 一个用BCB写的壳!
💻 CPP
字号:
// Headers.cpp: implementation of the CHeaders class.
//
//////////////////////////////////////////////////////////////////////

#include "StdAfx.h"
#include "Headers.h"
#include "Util.h"

namespace PE {

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CHeaders::CHeaders()
{
    ZeroMemory(&m_hdrDos, sizeof(IMAGE_DOS_HEADER));
    ZeroMemory(&m_hdrNt, sizeof(IMAGE_NT_HEADERS));
    m_dwDOSHeaderSize = 0;
}

CHeaders::~CHeaders()
{

}

// Set DOS header
void CHeaders::SetDos(IMAGE_DOS_HEADER &hdrDos)
{
    CopyMemory(&m_hdrDos, &hdrDos, sizeof(IMAGE_DOS_HEADER));
}

// Set NT header
void CHeaders::SetNt(IMAGE_NT_HEADERS &hdrNt)
{
    CopyMemory(&m_hdrNt, &hdrNt, sizeof(IMAGE_NT_HEADERS));
}

// Return size aligned according to FileAlignment field
DWORD CHeaders::FileAlignment(DWORD dwSize) const
{
    return(CUtil::Align(dwSize, m_hdrNt.OptionalHeader.FileAlignment));
}

// Return size aligned according to SectionAlignment field
DWORD CHeaders::SectionAlignment(DWORD dwSize) const
{
    return(CUtil::Align(dwSize, m_hdrNt.OptionalHeader.SectionAlignment));
}

// Fix SizeOfHeaders field
void CHeaders::FixSizeOfHeaders(void)
{
    DWORD dwSize;

    dwSize = m_hdrDos.e_lfanew;
    dwSize += sizeof(IMAGE_NT_HEADERS);
    dwSize += sizeof(IMAGE_SECTION_HEADER) * m_hdrNt.FileHeader.NumberOfSections;
    dwSize = FileAlignment(dwSize);

    m_hdrNt.OptionalHeader.SizeOfHeaders = dwSize;
}

// Get NT header
void CHeaders::GetNt(IMAGE_NT_HEADERS &hdrNt) const
{
    if (IsBadWritePtr(&hdrNt, sizeof(IMAGE_NT_HEADERS)) == FALSE)
        CopyMemory(&hdrNt, &m_hdrNt, sizeof(IMAGE_NT_HEADERS));
}

// Get DOS header
void CHeaders::GetDos(IMAGE_DOS_HEADER &hdrDos) const
{
    if (IsBadWritePtr(&hdrDos, sizeof(IMAGE_DOS_HEADER)) == FALSE)
        CopyMemory(&hdrDos, &m_hdrDos, sizeof(IMAGE_DOS_HEADER));
}

// Get stub header size
DWORD CHeaders::GetHeaderSize(void) const
{
    return(m_dwDOSHeaderSize);
}

// Set stub header size
void CHeaders::SetHeaderSize(DWORD dwSize)
{
    m_dwDOSHeaderSize = dwSize;
}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -