retdec
|
#include <macho_upx_stub.h>
Public Types | |
using | AddressType = typename MachOUpxStubTraits< bits >::AddressType |
using | MachOHeaderType = typename MachOUpxStubTraits< bits >::MachOHeaderType |
using | MachOSegmentCommandType = typename MachOUpxStubTraits< bits >::MachOSegmentCommandType |
Public Member Functions | |
MachOUpxStub (retdec::loader::Image *inputFile, const UpxStubData *stubData, const DynamicBuffer &stubCapturedData, std::unique_ptr< Decompressor > decompressor, const UpxMetadata &metadata) | |
virtual void | unpack (const std::string &outputFile) override |
virtual void | cleanup () override |
void | setupPackingMethod (std::uint8_t packingMethod) |
void | decompress (DynamicBuffer &packedData, DynamicBuffer &unpackedData) |
void | unpack (std::ifstream &inputFile, std::ofstream &outputFile, std::uint64_t baseInputOffset, std::uint64_t baseOutputOffset) |
![]() | |
UpxStub (retdec::loader::Image *inputFile, const UpxStubData *stubData, const DynamicBuffer &stubCapturedData, std::unique_ptr< Decompressor > decompressor, const UpxMetadata &metadata) | |
UpxStubVersion | getVersion () const |
const UpxStubData * | getStubData () const |
const DynamicBuffer * | getStubCapturedData () const |
Decompressor * | getDecompressor () const |
const UpxMetadata * | getUpxMetadata () const |
virtual std::uint32_t | getRealEpAddress () const |
void | setStubData (const UpxStubData *stubData) |
void | setStubCapturedData (const DynamicBuffer &stubCapturedData) |
![]() | |
UnpackingStub (loader::Image *file) | |
virtual | ~UnpackingStub ()=default |
loader::Image * | getFile () |
Protected Member Functions | |
std::uint32_t | getFirstBlockOffset (std::ifstream &inputFile) const |
DynamicBuffer | readNextBlock (std::ifstream &inputFile) |
DynamicBuffer | unpackBlock (DynamicBuffer &packedBlock) |
void | unfilterBlock (const DynamicBuffer &packedBlock, DynamicBuffer &unpackedData) |
![]() | |
std::unique_ptr< Decompressor > | decodePackingMethod (std::uint8_t packingMethod) const |
![]() | |
void | setFile (loader::Image *file) |
Private Attributes | |
std::uint64_t | _readPos |
std::unique_ptr< retdec::unpacker::BitParser > | _bitParser |
Additional Inherited Members | |
![]() | |
static std::shared_ptr< UpxStub > | createStub (retdec::loader::Image *file) |
static std::shared_ptr< UpxStub > | createStub (retdec::loader::Image *file, const DynamicBuffer &stubBytes) |
![]() | |
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... | |
![]() | |
loader::Image * | _file |
Base class for Mach-O unpacking stubs. It doesn't implement decompress method from UpxStub as it is left to subclasses which should implement decompression based on the used compression.
bits | Number of bits of the architecture. |
using retdec::unpackertool::upx::MachOUpxStub< bits >::AddressType = typename MachOUpxStubTraits<bits>::AddressType |
using retdec::unpackertool::upx::MachOUpxStub< bits >::MachOHeaderType = typename MachOUpxStubTraits<bits>::MachOHeaderType |
using retdec::unpackertool::upx::MachOUpxStub< bits >::MachOSegmentCommandType = typename MachOUpxStubTraits<bits>::MachOSegmentCommandType |
retdec::unpackertool::upx::MachOUpxStub< bits >::MachOUpxStub | ( | retdec::loader::Image * | inputFile, |
const UpxStubData * | stubData, | ||
const DynamicBuffer & | stubCapturedData, | ||
std::unique_ptr< Decompressor > | decompressor, | ||
const UpxMetadata & | metadata | ||
) |
Constructor.
bits | Number of bits of the architecture. |
inputFile | Packed input file. |
stubData | UpxStubData associated with this unpacking stub. |
stubCapturedData | Data captured from signature matching. |
decompressor | Associated decompressor with this unpacking stub. |
metadata | The UPX metadata associated with this unpacking stub. |
|
overridevirtual |
Performs releasing of owned resources.
bits | Number of bits of the architecture. |
Implements retdec::unpacker::UnpackingStub.
void retdec::unpackertool::upx::MachOUpxStub< bits >::decompress | ( | DynamicBuffer & | packedData, |
DynamicBuffer & | unpackedData | ||
) |
|
protected |
|
protected |
void retdec::unpackertool::upx::MachOUpxStub< bits >::setupPackingMethod | ( | std::uint8_t | packingMethod | ) |
|
protected |
Unfilters the unpacked block based on the packed block header.
bits | Number of bits of the architecture. |
packedBlock | The packed block which contains at least its header. |
unpackedData | Data containing unpacked block. |
|
overridevirtual |
Performs the whole process of unpacking. This is the method that is being run from UpxPlugin to start unpacking stub.
bits | Number of bits of the architecture. |
outputFile | Path to unpacked output file. |
Implements retdec::unpacker::UnpackingStub.
void retdec::unpackertool::upx::MachOUpxStub< bits >::unpack | ( | std::ifstream & | inputFile, |
std::ofstream & | outputFile, | ||
std::uint64_t | baseInputOffset, | ||
std::uint64_t | baseOutputOffset | ||
) |
|
protected |
|
private |
|
private |