mirror of
https://github.com/Obfuscator-Collections/VMProtect.git
synced 2026-09-01 01:44:41 +03:00
first commit
Version 3.x.x
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
#ifndef STRING_MANAGER_H
|
||||
#define STRING_MANAGER_H
|
||||
|
||||
class CipherRC5;
|
||||
|
||||
struct STRING_DIRECTORY {
|
||||
uint32_t NumberOfEntries;
|
||||
// STRING_ENTRY Entries[];
|
||||
};
|
||||
|
||||
struct STRING_ENTRY {
|
||||
uint32_t Id;
|
||||
uint32_t OffsetToData;
|
||||
uint32_t Size;
|
||||
};
|
||||
|
||||
class VirtualString
|
||||
{
|
||||
public:
|
||||
VirtualString(const STRING_ENTRY *entry, HMODULE instance, uint32_t key);
|
||||
~VirtualString();
|
||||
uint8_t *AcquirePointer();
|
||||
bool Release();
|
||||
uint8_t *address() const { return address_; }
|
||||
private:
|
||||
void Clear();
|
||||
size_t use_count_;
|
||||
uint8_t *address_;
|
||||
size_t size_;
|
||||
|
||||
// no copy ctr or assignment op
|
||||
VirtualString(const VirtualString &);
|
||||
VirtualString &operator =(const VirtualString &);
|
||||
};
|
||||
|
||||
class StringManager
|
||||
{
|
||||
public:
|
||||
StringManager(const uint8_t *data, HMODULE instance, const uint8_t *key);
|
||||
~StringManager();
|
||||
const void *DecryptString(const void *str);
|
||||
bool FreeString(const void *str);
|
||||
private:
|
||||
STRING_DIRECTORY DecryptDirectory(const STRING_DIRECTORY *directory_enc) const;
|
||||
STRING_ENTRY DecryptEntry(const STRING_ENTRY *entry_enc) const;
|
||||
size_t IndexById(uint32_t id) const;
|
||||
size_t IndexByAddress(const void *address) const;
|
||||
const uint8_t *data_;
|
||||
HMODULE instance_;
|
||||
CRITICAL_SECTION critical_section_;
|
||||
VirtualString **strings_;
|
||||
uint32_t key_;
|
||||
size_t size_;
|
||||
|
||||
// no copy ctr or assignment op
|
||||
StringManager(const StringManager &);
|
||||
StringManager &operator =(const StringManager &);
|
||||
};
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user