aboutsummaryrefslogtreecommitdiff
path: root/core/packer.h
diff options
context:
space:
mode:
authorjmpoep <OriginalEntryPoint@qq.com>2023-12-07 16:51:07 +0800
committerjmpoep <OriginalEntryPoint@qq.com>2023-12-07 16:51:07 +0800
commit28008a746a31abb7909dd86cb0cd413ac8943b0b (patch)
treea30b74b8cad548048c3c1551d652828ab76fa9bd /core/packer.h
downloadvmprotect-3.5.1-master.tar
vmprotect-3.5.1-master.tar.gz
vmprotect-3.5.1-master.tar.bz2
vmprotect-3.5.1-master.zip
first commitHEADmaster
Diffstat (limited to 'core/packer.h')
-rw-r--r--core/packer.h49
1 files changed, 49 insertions, 0 deletions
diff --git a/core/packer.h b/core/packer.h
new file mode 100644
index 0000000..a3b258f
--- /dev/null
+++ b/core/packer.h
@@ -0,0 +1,49 @@
+#ifndef PACKER_H
+#define PACKER_H
+
+#include "../third-party/lzma/LzmaEnc.h"
+
+class IArchitecture;
+
+struct PackerInputStream
+{
+ ISeqInStream p;
+ IArchitecture *file;
+ Data *data;
+ size_t size;
+ size_t pos;
+ PackerInputStream(IArchitecture *file_, size_t size_);
+ PackerInputStream(Data *data_);
+};
+
+struct PackerOutputStream
+{
+ ISeqOutStream p;
+ Data *data;
+ PackerOutputStream(Data *data_);
+};
+
+struct PackerProgress
+{
+ ICompressProgress p;
+ IArchitecture *file;
+ uint64_t last_pos;
+ PackerProgress(IArchitecture *file_);
+};
+
+class Packer
+{
+public:
+ Packer();
+ ~Packer();
+ bool Code(IArchitecture *file, size_t size, Data *data);
+ bool Code(IArchitecture *file, Data *in_data, Data *out_data);
+ bool WriteProps(Data *data);
+private:
+ bool Code(IArchitecture *file, PackerInputStream &in, PackerOutputStream &out);
+
+ CLzmaEncHandle encoder_;
+ CLzmaEncProps props_;
+};
+
+#endif