retdec
unfilter.h
Go to the documentation of this file.
1 
7 #ifndef UNPACKERTOOL_PLUGINS_UPX_UNFILTER_H
8 #define UNPACKERTOOL_PLUGINS_UPX_UNFILTER_H
9 
11 
12 using namespace retdec::utils;
13 
14 namespace retdec {
15 namespace unpackertool {
16 namespace upx {
17 
21 enum Filters
22 {
23  FILTER_NONE = 0x0,
24  FILTER_11 = 0x11,
25  FILTER_16 = 0x16,
26  FILTER_24 = 0x24,
27  FILTER_26 = 0x26,
28  FILTER_46 = 0x46,
29  FILTER_49 = 0x49,
30  FILTER_50 = 0x50,
31  FILTER_D0 = 0xD0,
33 };
34 
38 struct Unfilter
39 {
40  virtual ~Unfilter() = default;
41 
42  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) = 0;
43 
44  static bool run(DynamicBuffer& unpackedData, std::uint32_t filterId, std::uint32_t filterParam, std::uint32_t filterCount = 0, std::uint32_t startOffset = 0, std::uint32_t size = 0);
45 };
46 
50 struct Unfilter11 : public Unfilter
51 {
52  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
53 };
54 
58 struct Unfilter16 : public Unfilter
59 {
60  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
61 };
62 
66 struct Unfilter24 : public Unfilter
67 {
68  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
69 };
70 
74 struct Unfilter26_46 : public Unfilter
75 {
76  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
77 };
78 
82 struct Unfilter49 : public Unfilter
83 {
84  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
85 };
86 
90 struct Unfilter50 : public Unfilter
91 {
92  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
93 };
94 
98 struct UnfilterD0 : public Unfilter
99 {
100  virtual void perform(DynamicBuffer& unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size) override;
101 };
102 
103 } // namespace upx
104 } // namespace unpackertool
105 } // namespace retdec
106 
107 #endif
The class for dynamic buffered data manipulation taking the endianness of the data in account.
Definition: dynamic_buffer.h:36
Declaration of class for buffered data mainpulation.
Filters
Definition: unfilter.h:22
@ FILTER_26
Definition: unfilter.h:27
@ FILTER_50
Definition: unfilter.h:30
@ FILTER_D0
Definition: unfilter.h:31
@ FILTER_49
Definition: unfilter.h:29
@ FILTER_UNKNOWN
Definition: unfilter.h:32
@ FILTER_24
Definition: unfilter.h:26
@ FILTER_46
Definition: unfilter.h:28
@ FILTER_NONE
Definition: unfilter.h:23
@ FILTER_11
Definition: unfilter.h:24
@ FILTER_16
Definition: unfilter.h:25
Definition: unpacking_stub.h:16
Definition: archive_wrapper.h:19
Definition: unfilter.h:51
Definition: unfilter.h:59
Definition: unfilter.h:67
Definition: unfilter.h:83
Definition: unfilter.h:91
Definition: unfilter.h:99
Definition: unfilter.h:39
virtual void perform(DynamicBuffer &unpackedData, std::uint32_t filterParam, std::uint32_t filterCount, std::uint32_t startOffset, std::uint32_t size)=0