2026-04-06 00:20:51 -05:00

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;
};