retdec
decompressor_scrambler.h
Go to the documentation of this file.
1 
6 #ifndef UNPACKERTOOL_PLUGINS_UPX_DECOMPRESSORS_DECOMPRESSOR_SCRAMBLER_H
7 #define UNPACKERTOOL_PLUGINS_UPX_DECOMPRESSORS_DECOMPRESSOR_SCRAMBLER_H
8 
10 
11 using namespace retdec::utils;
12 
13 namespace retdec {
14 namespace unpackertool {
15 namespace upx {
16 
17 class UpxStub;
18 
23 {
24 public:
25  virtual void setupPackingMethod(ElfUpxStub<32>* stub, std::uint8_t packingMethod) override;
26  virtual void decompress(ElfUpxStub<32>* stub, DynamicBuffer& packedData, DynamicBuffer& unpackedData) override;
27 
28  virtual void setupPackingMethod(ElfUpxStub<64>* stub, std::uint8_t packingMethod) override;
29  virtual void decompress(ElfUpxStub<64>* stub, DynamicBuffer& packedData, DynamicBuffer& unpackedData) override;
30 
31  virtual void setupPackingMethod(MachOUpxStub<32>* stub, std::uint8_t packingMethod) override;
32  virtual void decompress(MachOUpxStub<32>* stub, DynamicBuffer& packedData, DynamicBuffer& unpackedData) override;
33 
34  virtual void setupPackingMethod(MachOUpxStub<64>* stub, std::uint8_t packingMethod) override;
35  virtual void decompress(MachOUpxStub<64>* stub, DynamicBuffer& packedData, DynamicBuffer& unpackedData) override;
36 
37  virtual void setupPackingMethod(PeUpxStub<32>* stub, std::uint8_t packingMethod) override;
38  virtual void readPackedData(PeUpxStub<32>* stub, DynamicBuffer& packedData, bool trustMetadata) override;
39  virtual void decompress(PeUpxStub<32>* stub, DynamicBuffer& packedData, DynamicBuffer& unpackedData, bool trustMetadata) override;
40 
41  virtual void setupPackingMethod(PeUpxStub<64>* stub, std::uint8_t packingMethod) override;
42  virtual void readPackedData(PeUpxStub<64>* stub, DynamicBuffer& packedData, bool trustMetadata) override;
43  virtual void decompress(PeUpxStub<64>* stub, DynamicBuffer& packedData, DynamicBuffer& unpackedData, bool trustMetadata) override;
44 
45 protected:
46  std::shared_ptr<UpxStub> _scrambledStub;
47 };
48 
49 } // namespace upx
50 } // namespace unpackertool
51 } // namespace retdec
52 
53 #endif
Definition: decompressor_scrambler.h:23
std::shared_ptr< UpxStub > _scrambledStub
The unpacking stub packed by this scrambler.
Definition: decompressor_scrambler.h:46
Definition: decompressor.h:28
Definition: elf_upx_stub.h:99
Definition: macho_upx_stub.h:66
Definition: pe_upx_stub.h:65
The class for dynamic buffered data manipulation taking the endianness of the data in account.
Definition: dynamic_buffer.h:36
Declaration of base decompressor visitor for unpacking packed data.
Definition: unpacking_stub.h:16
Definition: archive_wrapper.h:19