39 lines
766 B
C++
39 lines
766 B
C++
#pragma once
|
|
#include "ApiLoader.h"
|
|
#include "utils.h"
|
|
|
|
class Packer
|
|
{
|
|
DWORD size;
|
|
DWORD capacity;
|
|
BYTE* buffer;
|
|
DWORD index;
|
|
|
|
public:
|
|
Packer();
|
|
Packer(BYTE* buffer, ULONG size);
|
|
~Packer();
|
|
|
|
VOID Set32(ULONG index, ULONG value);
|
|
VOID EnsureCapacity(ULONG needed);
|
|
|
|
VOID Pack64(ULONG64 value);
|
|
VOID Pack32(ULONG value);
|
|
VOID Pack16(WORD value);
|
|
VOID Pack8(BYTE value);
|
|
VOID PackBytes(PBYTE data, ULONG data_size);
|
|
VOID PackFlatBytes(PBYTE data, ULONG data_size);
|
|
VOID PackStringA(LPSTR str);
|
|
|
|
BYTE Unpack8();
|
|
ULONG Unpack32();
|
|
BYTE* UnpackBytes(ULONG* size);
|
|
BYTE* UnpackBytesCopy(ULONG* size);
|
|
|
|
VOID Clear(BOOL renew);
|
|
PBYTE data();
|
|
ULONG datasize();
|
|
|
|
static void* operator new(size_t sz);
|
|
static void operator delete(void* p) noexcept;
|
|
}; |