?? cloadconfigripper.cpp
字號:
// Author: Brandon LaCombe
// Date: February 3, 2006
// License: Public Domain
#include "CLoadConfigRipper.h"
#include "..\..\FileTools.h"
#include "..\..\remem.h"
// class constructor
// Class constructor.
CLoadConfigRipper::CLoadConfigRipper()
{
m_bOutput = FALSE;
m_bStrip = FALSE;
}
// Exports load config table.
VOID CLoadConfigRipper::Export(PVOID pvOutput)
{
if(pvOutput && m_bOutput && m_bStrip == FALSE)
*PIMAGE_LOAD_CONFIG_DIRECTORY(pvOutput) = m_LoadConfig;
}
// Returns size of data exported.
DWORD CLoadConfigRipper::GetSize()
{
DWORD dwSize;
dwSize = 0;
if(m_bOutput && m_bStrip == FALSE)
dwSize = sizeof(IMAGE_LOAD_CONFIG_DIRECTORY);
return dwSize;
}
// Loads input file. Returns FALSE if no load config table exists.
BOOL CLoadConfigRipper::LoadFile(PBYTE pbFile)
{
BOOL bRet;
DWORD dwLoadConfigRva;
PIMAGE_NT_HEADERS pNt;
bRet = FALSE;
m_pbFile = pbFile;
pNt = PIMAGE_NT_HEADERS(pbFile + PIMAGE_DOS_HEADER(pbFile)->e_lfanew);
dwLoadConfigRva = pNt->OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_LOAD_CONFIG].VirtualAddress;
m_pLoadConfig = (PIMAGE_LOAD_CONFIG_DIRECTORY)RvaToPointer(pbFile, dwLoadConfigRva);
if(m_pLoadConfig) bRet = TRUE;
return bRet;
}
// Rips load config table from the input.
VOID CLoadConfigRipper::Rip(PVOID pvFile)
{
m_bOutput = FALSE;
if(LoadFile((PBYTE)pvFile))
{
m_LoadConfig = *m_pLoadConfig;
ZeroMemory(m_pLoadConfig, sizeof(IMAGE_LOAD_CONFIG_DIRECTORY));
m_bOutput = TRUE;
}
}
// Sets strip flag.
VOID CLoadConfigRipper::Strip(BOOL bStrip)
{
m_bStrip = bStrip;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -