7 #ifndef UNPACKERTOOL_PLUGINS_UPX_PE_PE_UPX_STUB_H
8 #define UNPACKERTOOL_PLUGINS_UPX_PE_PE_UPX_STUB_H
10 #include <unordered_set>
20 namespace unpackertool {
39 UpxExtraData() : _importsOffset(0), _relocsOffset(0), _originalHeaderOffset(0), _relocsBigEndian(false) {}
41 : _importsOffset(extraData._importsOffset), _relocsOffset(extraData._relocsOffset), _originalHeaderOffset(extraData._originalHeaderOffset), _relocsBigEndian(extraData._relocsBigEndian) {}
69 std::unique_ptr<Decompressor> decompressor,
const UpxMetadata& metadata);
71 virtual void unpack(
const std::string& ouputFile)
override;
72 virtual void setupPackingMethod(std::uint8_t packingMethod);
74 virtual void readPackedData(
DynamicBuffer& packedData,
bool trustMetadata);
76 virtual void cleanup()
override;
78 virtual std::uint32_t getRealEpAddress()
const override;
79 void setRealEpAddress(std::uint32_t realEpAddress);
99 void fixLoadConfiguration(
const DynamicBuffer& originalHeader);
102 void fixCoffSymbolTable();
103 void fixCertificates();
105 void saveFile(
const std::string& outputFile,
DynamicBuffer& unpackedData);
107 void loadResources(
PeLib::ResourceNode* rootNode, std::uint32_t offset, std::uint32_t uncompressedRsrcRva, std::uint32_t compressedRsrcRva,
109 std::uint8_t getPackingMethod(
bool trustMetadata)
const;
std::unordered_set< Node > visitedNodes
Definition: cfg_traversal.cpp:46
ResourceNodes represent the nodes in the resource tree.
Definition: ResourceDirectory.h:188
Definition: signature.h:57
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.
Definition: unpacking_stub.h:16
Definition: archive_wrapper.h:19
void cleanup(ProgramOptions &po)
Definition: retdec-decompiler.cpp:910
Declaration of class for matching signatures in executable files or buffers.
Declaration of abstract UPX stub class that represents the unpacking procedure itself.