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

#include <decompressor_scrambler.h>

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

Public Member Functions

virtual void setupPackingMethod (ElfUpxStub< 32 > *stub, std::uint8_t packingMethod) override
 
virtual void decompress (ElfUpxStub< 32 > *stub, DynamicBuffer &packedData, DynamicBuffer &unpackedData) override
 
virtual void setupPackingMethod (ElfUpxStub< 64 > *stub, std::uint8_t packingMethod) override
 
virtual void decompress (ElfUpxStub< 64 > *stub, DynamicBuffer &packedData, DynamicBuffer &unpackedData) override
 
virtual void setupPackingMethod (MachOUpxStub< 32 > *stub, std::uint8_t packingMethod) override
 
virtual void decompress (MachOUpxStub< 32 > *stub, DynamicBuffer &packedData, DynamicBuffer &unpackedData) override
 
virtual void setupPackingMethod (MachOUpxStub< 64 > *stub, std::uint8_t packingMethod) override
 
virtual void decompress (MachOUpxStub< 64 > *stub, DynamicBuffer &packedData, DynamicBuffer &unpackedData) override
 
virtual void setupPackingMethod (PeUpxStub< 32 > *stub, std::uint8_t packingMethod) override
 
virtual void readPackedData (PeUpxStub< 32 > *stub, DynamicBuffer &packedData, bool trustMetadata) override
 
virtual void decompress (PeUpxStub< 32 > *stub, DynamicBuffer &packedData, DynamicBuffer &unpackedData, bool trustMetadata) override
 
virtual void setupPackingMethod (PeUpxStub< 64 > *stub, std::uint8_t packingMethod) override
 
virtual void readPackedData (PeUpxStub< 64 > *stub, DynamicBuffer &packedData, bool trustMetadata) override
 
virtual void decompress (PeUpxStub< 64 > *stub, DynamicBuffer &packedData, DynamicBuffer &unpackedData, bool trustMetadata) override
 
- Public Member Functions inherited from retdec::unpackertool::upx::Decompressor
virtual ~Decompressor ()=default
 
virtual void readUnpackingStub (PeUpxStub< 32 > *stub, retdec::utils::DynamicBuffer &unpackingStub)=0
 
virtual void readUnpackingStub (PeUpxStub< 64 > *stub, retdec::utils::DynamicBuffer &unpackingStub)=0
 

Protected Attributes

std::shared_ptr< UpxStub_scrambledStub
 The unpacking stub packed by this scrambler. More...
 

Additional Inherited Members

- Protected Member Functions inherited from retdec::unpackertool::upx::Decompressor
void performDecompression (const std::weak_ptr< retdec::unpacker::CompressedData > &compressedDataWptr, retdec::utils::DynamicBuffer &unpackedData)
 

Detailed Description

Visitor-like decompressor for UPX scramblers decompression.

Member Function Documentation

◆ decompress() [1/6]

void retdec::unpackertool::upx::DecompressorScrambler::decompress ( ElfUpxStub< 32 > *  stub,
DynamicBuffer packedData,
DynamicBuffer unpackedData 
)
overridevirtual

Performs decompression of packed data and place it into another buffer.

Parameters
stubThe ELF32 UPX unpacking stub object.
packedDataThe compressed packed data.
unpackedDataThe buffer where to decompress data.

Implements retdec::unpackertool::upx::Decompressor.

◆ decompress() [2/6]

void retdec::unpackertool::upx::DecompressorScrambler::decompress ( ElfUpxStub< 64 > *  stub,
DynamicBuffer packedData,
DynamicBuffer unpackedData 
)
overridevirtual

Performs decompression of packed data and place it into another buffer.

Parameters
stubThe ELF64 UPX unpacking stub object.
packedDataThe compressed packed data.
unpackedDataThe buffer where to decompress data.

Implements retdec::unpackertool::upx::Decompressor.

◆ decompress() [3/6]

void retdec::unpackertool::upx::DecompressorScrambler::decompress ( MachOUpxStub< 32 > *  stub,
DynamicBuffer packedData,
DynamicBuffer unpackedData 
)
overridevirtual

Performs decompression of packed data and place it into another buffer.

Parameters
stubThe Mach-O 32-bit UPX unpacking stub object.
packedDataThe compressed packed data.
unpackedDataThe buffer where to decompress data.

Implements retdec::unpackertool::upx::Decompressor.

◆ decompress() [4/6]

void retdec::unpackertool::upx::DecompressorScrambler::decompress ( MachOUpxStub< 64 > *  stub,
DynamicBuffer packedData,
DynamicBuffer unpackedData 
)
overridevirtual

Performs decompression of packed data and place it into another buffer.

Parameters
stubThe Mach-O 64-bit UPX unpacking stub object.
packedDataThe compressed packed data.
unpackedDataThe buffer where to decompress data.

Implements retdec::unpackertool::upx::Decompressor.

◆ decompress() [5/6]

void retdec::unpackertool::upx::DecompressorScrambler::decompress ( PeUpxStub< 32 > *  stub,
DynamicBuffer packedData,
DynamicBuffer unpackedData,
bool  trustMetadata 
)
overridevirtual

Performs decompression of packed data and place it into another buffer.

Parameters
stubThe PE32 UPX unpacking stub object.
packedDataThe compressed packed data.
unpackedDataThe buffer where to decompress data.
trustMetadataTrue if UPX metadata are trusted, otherwise false.

Implements retdec::unpackertool::upx::Decompressor.

◆ decompress() [6/6]

void retdec::unpackertool::upx::DecompressorScrambler::decompress ( PeUpxStub< 64 > *  stub,
DynamicBuffer packedData,
DynamicBuffer unpackedData,
bool  trustMetadata 
)
overridevirtual

Performs decompression of packed data and place it into another buffer.

Parameters
stubThe PE64 UPX unpacking stub object.
packedDataThe compressed packed data.
unpackedDataThe buffer where to decompress data.
trustMetadataTrue if UPX metadata are trusted, otherwise false.

Implements retdec::unpackertool::upx::Decompressor.

◆ readPackedData() [1/2]

void retdec::unpackertool::upx::DecompressorScrambler::readPackedData ( PeUpxStub< 32 > *  stub,
DynamicBuffer packedData,
bool  trustMetadata 
)
overridevirtual

Reads the packed data from the input file.

Parameters
stubThe PE32 UPX unpacking stub object.
packedDataBuffer where to read packed data.
trustMetadataTrue if UPX metadata are trusted, otherwise false.

Implements retdec::unpackertool::upx::Decompressor.

◆ readPackedData() [2/2]

void retdec::unpackertool::upx::DecompressorScrambler::readPackedData ( PeUpxStub< 64 > *  stub,
DynamicBuffer packedData,
bool  trustMetadata 
)
overridevirtual

Reads the packed data from the input file.

Parameters
stubThe PE64 UPX unpacking stub object.
packedDataBuffer where to read packed data.
trustMetadataTrue if UPX metadata are trusted, otherwise false.

Implements retdec::unpackertool::upx::Decompressor.

◆ setupPackingMethod() [1/6]

void retdec::unpackertool::upx::DecompressorScrambler::setupPackingMethod ( ElfUpxStub< 32 > *  stub,
std::uint8_t  packingMethod 
)
overridevirtual

Checks whether the provided packing method is valid.

Parameters
stubThe ELF32 UPX unpacking stub object.
packingMethodThe packing method to setup.

Implements retdec::unpackertool::upx::Decompressor.

◆ setupPackingMethod() [2/6]

void retdec::unpackertool::upx::DecompressorScrambler::setupPackingMethod ( ElfUpxStub< 64 > *  stub,
std::uint8_t  packingMethod 
)
overridevirtual

Checks whether the provided packing method is valid.

Parameters
stubThe ELF64 UPX unpacking stub object.
packingMethodThe packing method to setup.

Implements retdec::unpackertool::upx::Decompressor.

◆ setupPackingMethod() [3/6]

void retdec::unpackertool::upx::DecompressorScrambler::setupPackingMethod ( MachOUpxStub< 32 > *  stub,
std::uint8_t  packingMethod 
)
overridevirtual

Checks whether the provided packing method is valid.

Parameters
stubThe Mach-O 32-bit UPX unpacking stub object.
packingMethodThe packing method to setup.

Implements retdec::unpackertool::upx::Decompressor.

◆ setupPackingMethod() [4/6]

void retdec::unpackertool::upx::DecompressorScrambler::setupPackingMethod ( MachOUpxStub< 64 > *  stub,
std::uint8_t  packingMethod 
)
overridevirtual

Checks whether the provided packing method is valid.

Parameters
stubThe Mach-O 64-bit UPX unpacking stub object.
packingMethodThe packing method to setup.

Implements retdec::unpackertool::upx::Decompressor.

◆ setupPackingMethod() [5/6]

void retdec::unpackertool::upx::DecompressorScrambler::setupPackingMethod ( PeUpxStub< 32 > *  stub,
std::uint8_t  packingMethod 
)
overridevirtual

Checks whether the provided packing method is valid.

Parameters
stubThe PE32 UPX unpacking stub object.
packingMethodThe packing method to setup.

Implements retdec::unpackertool::upx::Decompressor.

◆ setupPackingMethod() [6/6]

void retdec::unpackertool::upx::DecompressorScrambler::setupPackingMethod ( PeUpxStub< 64 > *  stub,
std::uint8_t  packingMethod 
)
overridevirtual

Checks whether the provided packing method is valid.

Parameters
stubThe PE64 UPX unpacking stub object.
packingMethodThe packing method to setup.

Implements retdec::unpackertool::upx::Decompressor.

Member Data Documentation

◆ _scrambledStub

std::shared_ptr<UpxStub> retdec::unpackertool::upx::DecompressorScrambler::_scrambledStub
protected

The unpacking stub packed by this scrambler.


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