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

#include <decompressor_nrv.h>

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

Public Member Functions

 DecompressorNrv (std::unique_ptr< retdec::unpacker::BitParser > bitParser=nullptr)
 
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 readUnpackingStub (PeUpxStub< 32 > *stub, DynamicBuffer &unpackingStub) 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 readUnpackingStub (PeUpxStub< 64 > *stub, DynamicBuffer &unpackingStub) 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
 

Protected Member Functions

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

Private Attributes

char _nrvVersion
 
std::unique_ptr< retdec::unpacker::BitParser_bitParser
 

Detailed Description

Visitor-like decompressor for LZMA decompression.

Constructor & Destructor Documentation

◆ DecompressorNrv()

retdec::unpackertool::upx::DecompressorNrv::DecompressorNrv ( std::unique_ptr< retdec::unpacker::BitParser bitParser = nullptr)
explicit

Constructor.

Member Function Documentation

◆ decompress() [1/7]

void retdec::unpackertool::upx::DecompressorNrv::decompress ( DynamicBuffer packedData,
DynamicBuffer unpackedData 
)
protected

◆ decompress() [2/7]

void retdec::unpackertool::upx::DecompressorNrv::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() [3/7]

void retdec::unpackertool::upx::DecompressorNrv::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() [4/7]

void retdec::unpackertool::upx::DecompressorNrv::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() [5/7]

void retdec::unpackertool::upx::DecompressorNrv::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() [6/7]

void retdec::unpackertool::upx::DecompressorNrv::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() [7/7]

void retdec::unpackertool::upx::DecompressorNrv::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::DecompressorNrv::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::DecompressorNrv::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.

◆ readUnpackingStub() [1/2]

void retdec::unpackertool::upx::DecompressorNrv::readUnpackingStub ( PeUpxStub< 32 > *  stub,
DynamicBuffer unpackingStub 
)
overridevirtual

Reads the unpacking stub into buffer.

Parameters
stubThe PE32 UPX unpacking stub object.
unpackingStubBuffer where to place unpacking stub.

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

◆ readUnpackingStub() [2/2]

void retdec::unpackertool::upx::DecompressorNrv::readUnpackingStub ( PeUpxStub< 64 > *  stub,
DynamicBuffer unpackingStub 
)
overridevirtual

Reads the unpacking stub into buffer.

Parameters
stubThe PE64 UPX unpacking stub object.
unpackingStubBuffer where to place unpacking stub.

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

◆ setupPackingMethod() [1/7]

void retdec::unpackertool::upx::DecompressorNrv::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/7]

void retdec::unpackertool::upx::DecompressorNrv::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/7]

void retdec::unpackertool::upx::DecompressorNrv::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/7]

void retdec::unpackertool::upx::DecompressorNrv::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/7]

void retdec::unpackertool::upx::DecompressorNrv::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/7]

void retdec::unpackertool::upx::DecompressorNrv::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.

◆ setupPackingMethod() [7/7]

void retdec::unpackertool::upx::DecompressorNrv::setupPackingMethod ( std::uint8_t  packingMethod)
protected

Member Data Documentation

◆ _bitParser

std::unique_ptr<retdec::unpacker::BitParser> retdec::unpackertool::upx::DecompressorNrv::_bitParser
private

◆ _nrvVersion

char retdec::unpackertool::upx::DecompressorNrv::_nrvVersion
private

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