retdec
Public Member Functions | Static Public Member Functions | Protected Member Functions | Protected Attributes | Static Private Member Functions | List of all members
retdec::unpackertool::upx::UpxStub Class Reference

#include <upx_stub.h>

Inheritance diagram for retdec::unpackertool::upx::UpxStub:
Inheritance graph
[legend]
Collaboration diagram for retdec::unpackertool::upx::UpxStub:
Collaboration graph
[legend]

Public Member Functions

 UpxStub (retdec::loader::Image *inputFile, const UpxStubData *stubData, const DynamicBuffer &stubCapturedData, std::unique_ptr< Decompressor > decompressor, const UpxMetadata &metadata)
 
UpxStubVersion getVersion () const
 
const UpxStubDatagetStubData () const
 
const DynamicBuffergetStubCapturedData () const
 
DecompressorgetDecompressor () const
 
const UpxMetadatagetUpxMetadata () const
 
virtual std::uint32_t getRealEpAddress () const
 
void setStubData (const UpxStubData *stubData)
 
void setStubCapturedData (const DynamicBuffer &stubCapturedData)
 
- Public Member Functions inherited from retdec::unpacker::UnpackingStub
 UnpackingStub (loader::Image *file)
 
virtual ~UnpackingStub ()=default
 
virtual void unpack (const std::string &outputFile)=0
 
virtual void cleanup ()=0
 
loader::ImagegetFile ()
 

Static Public Member Functions

static std::shared_ptr< UpxStubcreateStub (retdec::loader::Image *file)
 
static std::shared_ptr< UpxStubcreateStub (retdec::loader::Image *file, const DynamicBuffer &stubBytes)
 

Protected Member Functions

std::unique_ptr< DecompressordecodePackingMethod (std::uint8_t packingMethod) const
 
- Protected Member Functions inherited from retdec::unpacker::UnpackingStub
void setFile (loader::Image *file)
 

Protected Attributes

const UpxStubData_stubData
 Additional stub information. More...
 
DynamicBuffer _stubCapturedData
 Data captured while matching signature of this stub. More...
 
std::unique_ptr< Decompressor_decompressor
 Decompressor associated with stub. More...
 
UpxMetadata _metadata
 UPX metadata aka packheader. More...
 
- Protected Attributes inherited from retdec::unpacker::UnpackingStub
loader::Image_file
 

Static Private Member Functions

static std::shared_ptr< UpxStub_createStubImpl (retdec::loader::Image *file, const DynamicBuffer *stubBytes)
 

Detailed Description

Base class that represents UPX unpacking stub and its functionality. Every different type of unpacking stub should subclass this class and implement its unpacker, decompress and cleanup method.

Constructor & Destructor Documentation

◆ UpxStub()

retdec::unpackertool::upx::UpxStub::UpxStub ( retdec::loader::Image inputFile,
const UpxStubData stubData,
const DynamicBuffer stubCapturedData,
std::unique_ptr< Decompressor decompressor,
const UpxMetadata metadata 
)

Creates a new UPX unpacking stub object.

Parameters
inputFileThe packed input file.
stubDataThe additional information about the unpacking stub.
stubCapturedDataData that were captured during the signature matching.
decompressorAssociated decompressor with this unpacking stub.
metadataThe UPX metadata associated with this unpacking stub.

Member Function Documentation

◆ _createStubImpl()

std::shared_ptr< UpxStub > retdec::unpackertool::upx::UpxStub::_createStubImpl ( retdec::loader::Image file,
const DynamicBuffer stubBytes 
)
staticprivate

◆ createStub() [1/2]

std::shared_ptr< UpxStub > retdec::unpackertool::upx::UpxStub::createStub ( retdec::loader::Image file)
static

◆ createStub() [2/2]

std::shared_ptr< UpxStub > retdec::unpackertool::upx::UpxStub::createStub ( retdec::loader::Image file,
const DynamicBuffer stubBytes 
)
static

◆ decodePackingMethod()

std::unique_ptr< Decompressor > retdec::unpackertool::upx::UpxStub::decodePackingMethod ( std::uint8_t  packingMethod) const
protected

◆ getDecompressor()

Decompressor * retdec::unpackertool::upx::UpxStub::getDecompressor ( ) const

Returns the decompressor associated with this stub.

Returns
Decompressor.

◆ getRealEpAddress()

uint32_t retdec::unpackertool::upx::UpxStub::getRealEpAddress ( ) const
virtual

Returns the EP address of the packed input file. This method shouldn't be overridden until you really want to change the way EP address is being parsed. You may override this in case of UPX scramblers. Their real EP address lies somewhere else than the file EP address is set to.

Returns
Entry point address.

Reimplemented in retdec::unpackertool::upx::PeUpxStub< bits >.

◆ getStubCapturedData()

const DynamicBuffer * retdec::unpackertool::upx::UpxStub::getStubCapturedData ( ) const

Returns the captured data that were captured during signature matching.

Returns
Captured data.

◆ getStubData()

const UpxStubData * retdec::unpackertool::upx::UpxStub::getStubData ( ) const

Returns a UpxStubData containg all the information about this stub.

Returns
UPX unpacking stab data.

◆ getUpxMetadata()

const UpxMetadata * retdec::unpackertool::upx::UpxStub::getUpxMetadata ( ) const

Returns the UPX metadata aka UPX packheader.

Returns
UPX metadata.

◆ getVersion()

UpxStubVersion retdec::unpackertool::upx::UpxStub::getVersion ( ) const

Returns a version of this UPX unpacking stub.

Returns
UPX unpacking stub version.

◆ setStubCapturedData()

void retdec::unpackertool::upx::UpxStub::setStubCapturedData ( const DynamicBuffer stubCapturedData)

◆ setStubData()

void retdec::unpackertool::upx::UpxStub::setStubData ( const UpxStubData stubData)

Member Data Documentation

◆ _decompressor

std::unique_ptr<Decompressor> retdec::unpackertool::upx::UpxStub::_decompressor
protected

Decompressor associated with stub.

◆ _metadata

UpxMetadata retdec::unpackertool::upx::UpxStub::_metadata
protected

UPX metadata aka packheader.

◆ _stubCapturedData

DynamicBuffer retdec::unpackertool::upx::UpxStub::_stubCapturedData
protected

Data captured while matching signature of this stub.

◆ _stubData

const UpxStubData* retdec::unpackertool::upx::UpxStub::_stubData
protected

Additional stub information.


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