retdec
Public Member Functions | Private Member Functions | Private Attributes | List of all members
retdec::unpackertool::mpress::MpressPlugin Class Reference

#include <mpress.h>

Inheritance diagram for retdec::unpackertool::mpress::MpressPlugin:
Inheritance graph
[legend]
Collaboration diagram for retdec::unpackertool::mpress::MpressPlugin:
Collaboration graph
[legend]

Public Member Functions

 MpressPlugin ()
 
virtual ~MpressPlugin () override
 
virtual void prepare () override
 
virtual void unpack () override
 
virtual void cleanup () override
 
- Public Member Functions inherited from retdec::unpackertool::Plugin
virtual ~Plugin ()=default
 
const Plugin::InfogetInfo () const
 
const Plugin::ArgumentsgetStartupArguments () const
 
PluginExitCode run (const Plugin::Arguments &args)
 
template<typename... Args>
void log (const Args &... args)
 
template<typename... Args>
void error (const Args &... args)
 

Private Member Functions

bool decompressData (retdec::utils::DynamicBuffer &compressedContent, retdec::utils::DynamicBuffer &decompressedContent)
 
void decodeLzmaProperties (retdec::utils::DynamicBuffer &compressedContent, std::uint8_t &pb, std::uint8_t &lp, std::uint8_t &lc)
 
std::uint32_t getFixStub ()
 
void fixJumpsAndCalls (retdec::utils::DynamicBuffer &buffer)
 
void fixImportsAndEp (retdec::utils::DynamicBuffer &buffer)
 
void offsetAnalysis (const retdec::utils::DynamicBuffer &buffer)
 
void trailingBytesAnalysis (const retdec::utils::DynamicBuffer &buffer)
 
void fixRelocations ()
 
MpressUnpackerStub detectUnpackerStubVersion ()
 
MpressFixStub detectFixStubVersion (retdec::utils::DynamicBuffer &unpackedContent)
 
void saveFile (const std::string &fileName, retdec::utils::DynamicBuffer &content)
 
void copySectionFromOriginalFile (std::uint32_t origSectIndex, std::ostream &outputFile, std::uint32_t newSectIndex)
 

Private Attributes

std::unique_ptr< retdec::loader::Image_file
 
PeLib::PeFileT_peFile
 
MpressUnpackerStub _unpackerStub
 
MpressFixStub _fixStub
 
const retdec::loader::Segment_packedContentSect
 
std::uint32_t _addedSectionCount
 
std::uint32_t _iatVa
 
std::uint32_t _iatSize
 
std::uint32_t _oepVa
 
std::uint32_t _importHintsOffset
 

Additional Inherited Members

- Static Public Member Functions inherited from retdec::unpackertool::Plugin
template<typename T >
static T * instance ()
 
- Protected Member Functions inherited from retdec::unpackertool::Plugin
 Plugin ()
 
 Plugin (const Plugin &)
 
Pluginoperator= (const Plugin &)
 
- Protected Attributes inherited from retdec::unpackertool::Plugin
Plugin::Info info
 The static info of the plugin. More...
 
Plugin::Arguments startupArgs
 Startup arguments of the plugin. More...
 

Constructor & Destructor Documentation

◆ MpressPlugin()

retdec::unpackertool::mpress::MpressPlugin::MpressPlugin ( )

Constructor.

◆ ~MpressPlugin()

retdec::unpackertool::mpress::MpressPlugin::~MpressPlugin ( )
overridevirtual

Destructor.

Member Function Documentation

◆ cleanup()

void retdec::unpackertool::mpress::MpressPlugin::cleanup ( )
overridevirtual

Performs freeing of all owned resources.

Implements retdec::unpackertool::Plugin.

◆ copySectionFromOriginalFile()

void retdec::unpackertool::mpress::MpressPlugin::copySectionFromOriginalFile ( std::uint32_t  origSectIndex,
std::ostream &  outputFile,
std::uint32_t  newSectIndex 
)
private

◆ decodeLzmaProperties()

void retdec::unpackertool::mpress::MpressPlugin::decodeLzmaProperties ( retdec::utils::DynamicBuffer compressedContent,
std::uint8_t &  pb,
std::uint8_t &  lp,
std::uint8_t &  lc 
)
private

◆ decompressData()

bool retdec::unpackertool::mpress::MpressPlugin::decompressData ( retdec::utils::DynamicBuffer compressedContent,
retdec::utils::DynamicBuffer decompressedContent 
)
private

◆ detectFixStubVersion()

MpressFixStub retdec::unpackertool::mpress::MpressPlugin::detectFixStubVersion ( retdec::utils::DynamicBuffer unpackedContent)
private

◆ detectUnpackerStubVersion()

MpressUnpackerStub retdec::unpackertool::mpress::MpressPlugin::detectUnpackerStubVersion ( )
private

◆ fixImportsAndEp()

void retdec::unpackertool::mpress::MpressPlugin::fixImportsAndEp ( retdec::utils::DynamicBuffer buffer)
private

◆ fixJumpsAndCalls()

void retdec::unpackertool::mpress::MpressPlugin::fixJumpsAndCalls ( retdec::utils::DynamicBuffer buffer)
private

◆ fixRelocations()

void retdec::unpackertool::mpress::MpressPlugin::fixRelocations ( )
private

◆ getFixStub()

std::uint32_t retdec::unpackertool::mpress::MpressPlugin::getFixStub ( )
private

◆ offsetAnalysis()

void retdec::unpackertool::mpress::MpressPlugin::offsetAnalysis ( const retdec::utils::DynamicBuffer buffer)
private

◆ prepare()

void retdec::unpackertool::mpress::MpressPlugin::prepare ( )
overridevirtual

Performs preparation of unpacking.

Implements retdec::unpackertool::Plugin.

◆ saveFile()

void retdec::unpackertool::mpress::MpressPlugin::saveFile ( const std::string &  fileName,
retdec::utils::DynamicBuffer content 
)
private

◆ trailingBytesAnalysis()

void retdec::unpackertool::mpress::MpressPlugin::trailingBytesAnalysis ( const retdec::utils::DynamicBuffer buffer)
private

◆ unpack()

void retdec::unpackertool::mpress::MpressPlugin::unpack ( )
overridevirtual

Starts unpacking in the current plugin.

Implements retdec::unpackertool::Plugin.

Member Data Documentation

◆ _addedSectionCount

std::uint32_t retdec::unpackertool::mpress::MpressPlugin::_addedSectionCount
private

◆ _file

std::unique_ptr<retdec::loader::Image> retdec::unpackertool::mpress::MpressPlugin::_file
private

◆ _fixStub

MpressFixStub retdec::unpackertool::mpress::MpressPlugin::_fixStub
private

◆ _iatSize

std::uint32_t retdec::unpackertool::mpress::MpressPlugin::_iatSize
private

◆ _iatVa

std::uint32_t retdec::unpackertool::mpress::MpressPlugin::_iatVa
private

◆ _importHintsOffset

std::uint32_t retdec::unpackertool::mpress::MpressPlugin::_importHintsOffset
private

◆ _oepVa

std::uint32_t retdec::unpackertool::mpress::MpressPlugin::_oepVa
private

◆ _packedContentSect

const retdec::loader::Segment* retdec::unpackertool::mpress::MpressPlugin::_packedContentSect
private

◆ _peFile

PeLib::PeFileT* retdec::unpackertool::mpress::MpressPlugin::_peFile
private

◆ _unpackerStub

MpressUnpackerStub retdec::unpackertool::mpress::MpressPlugin::_unpackerStub
private

The documentation for this class was generated from the following files: