retdec
Public Member Functions | Protected Member Functions | List of all members
retdec::unpackertool::upx::Decompressor Class Referenceabstract

#include <decompressor.h>

Inheritance diagram for retdec::unpackertool::upx::Decompressor:
Inheritance graph
[legend]

Public Member Functions

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

Protected Member Functions

void performDecompression (const std::weak_ptr< retdec::unpacker::CompressedData > &compressedDataWptr, retdec::utils::DynamicBuffer &unpackedData)
 

Detailed Description

Base class for all UPX decompressors. Provides visitor-like interface for all UPX stubs.

Constructor & Destructor Documentation

◆ ~Decompressor()

virtual retdec::unpackertool::upx::Decompressor::~Decompressor ( )
virtualdefault

Member Function Documentation

◆ decompress() [1/6]

virtual void retdec::unpackertool::upx::Decompressor::decompress ( ElfUpxStub< 32 > *  stub,
retdec::utils::DynamicBuffer packedData,
retdec::utils::DynamicBuffer unpackedData 
)
pure virtual

◆ decompress() [2/6]

virtual void retdec::unpackertool::upx::Decompressor::decompress ( ElfUpxStub< 64 > *  stub,
retdec::utils::DynamicBuffer packedData,
retdec::utils::DynamicBuffer unpackedData 
)
pure virtual

◆ decompress() [3/6]

virtual void retdec::unpackertool::upx::Decompressor::decompress ( MachOUpxStub< 32 > *  stub,
retdec::utils::DynamicBuffer packedData,
retdec::utils::DynamicBuffer unpackedData 
)
pure virtual

◆ decompress() [4/6]

virtual void retdec::unpackertool::upx::Decompressor::decompress ( MachOUpxStub< 64 > *  stub,
retdec::utils::DynamicBuffer packedData,
retdec::utils::DynamicBuffer unpackedData 
)
pure virtual

◆ decompress() [5/6]

virtual void retdec::unpackertool::upx::Decompressor::decompress ( PeUpxStub< 32 > *  stub,
retdec::utils::DynamicBuffer packedData,
retdec::utils::DynamicBuffer unpackedData,
bool  trustMetadata 
)
pure virtual

◆ decompress() [6/6]

virtual void retdec::unpackertool::upx::Decompressor::decompress ( PeUpxStub< 64 > *  stub,
retdec::utils::DynamicBuffer packedData,
retdec::utils::DynamicBuffer unpackedData,
bool  trustMetadata 
)
pure virtual

◆ performDecompression()

void retdec::unpackertool::upx::Decompressor::performDecompression ( const std::weak_ptr< retdec::unpacker::CompressedData > &  compressedDataWptr,
retdec::utils::DynamicBuffer unpackedData 
)
protected

Performs decompression using provided compressed data and decompresses it into provided buffer. If it fails to decompress them, it uses XOR bruteforce on the packed data.

Parameters
compressedDataWptrThe compressed data.
unpackedDataBuffer where to decompress data.

◆ readPackedData() [1/2]

virtual void retdec::unpackertool::upx::Decompressor::readPackedData ( PeUpxStub< 32 > *  stub,
retdec::utils::DynamicBuffer packedData,
bool  trustMetadata 
)
pure virtual

◆ readPackedData() [2/2]

virtual void retdec::unpackertool::upx::Decompressor::readPackedData ( PeUpxStub< 64 > *  stub,
retdec::utils::DynamicBuffer packedData,
bool  trustMetadata 
)
pure virtual

◆ readUnpackingStub() [1/2]

virtual void retdec::unpackertool::upx::Decompressor::readUnpackingStub ( PeUpxStub< 32 > *  stub,
retdec::utils::DynamicBuffer unpackingStub 
)
pure virtual

◆ readUnpackingStub() [2/2]

virtual void retdec::unpackertool::upx::Decompressor::readUnpackingStub ( PeUpxStub< 64 > *  stub,
retdec::utils::DynamicBuffer unpackingStub 
)
pure virtual

◆ setupPackingMethod() [1/6]

virtual void retdec::unpackertool::upx::Decompressor::setupPackingMethod ( ElfUpxStub< 32 > *  stub,
std::uint8_t  packingMethod 
)
pure virtual

◆ setupPackingMethod() [2/6]

virtual void retdec::unpackertool::upx::Decompressor::setupPackingMethod ( ElfUpxStub< 64 > *  stub,
std::uint8_t  packingMethod 
)
pure virtual

◆ setupPackingMethod() [3/6]

virtual void retdec::unpackertool::upx::Decompressor::setupPackingMethod ( MachOUpxStub< 32 > *  stub,
std::uint8_t  packingMethod 
)
pure virtual

◆ setupPackingMethod() [4/6]

virtual void retdec::unpackertool::upx::Decompressor::setupPackingMethod ( MachOUpxStub< 64 > *  stub,
std::uint8_t  packingMethod 
)
pure virtual

◆ setupPackingMethod() [5/6]

virtual void retdec::unpackertool::upx::Decompressor::setupPackingMethod ( PeUpxStub< 32 > *  stub,
std::uint8_t  packingMethod 
)
pure virtual

◆ setupPackingMethod() [6/6]

virtual void retdec::unpackertool::upx::Decompressor::setupPackingMethod ( PeUpxStub< 64 > *  stub,
std::uint8_t  packingMethod 
)
pure virtual

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