mirror of
https://github.com/hasherezade/pe-sieve
synced 2026-06-08 14:34:52 +00:00
66 lines
1.6 KiB
C++
66 lines
1.6 KiB
C++
#pragma once
|
|
#include <windows.h>
|
|
#include "basic_buffer.h"
|
|
|
|
namespace pesieve {
|
|
|
|
namespace util {
|
|
|
|
struct ByteBuffer : public BasicBuffer
|
|
{
|
|
ByteBuffer()
|
|
: BasicBuffer()
|
|
{
|
|
}
|
|
|
|
~ByteBuffer()
|
|
{
|
|
free();
|
|
}
|
|
|
|
bool isValidPtr(BYTE * field_bgn, size_t field_size)
|
|
{
|
|
return peconv::validate_ptr(this->data, this->data_size, field_bgn, field_size);
|
|
}
|
|
|
|
bool isDataContained(const BYTE* rawData, size_t r_size)
|
|
{
|
|
size_t smaller_size = data_size > r_size ? r_size : data_size;
|
|
if (::memcmp(data, rawData, smaller_size) == 0) {
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool allocData(size_t size)
|
|
{
|
|
free();
|
|
data = peconv::alloc_aligned(size, PAGE_READWRITE);
|
|
if (data == nullptr) {
|
|
return false;
|
|
}
|
|
data_size = size;
|
|
padding = 0;
|
|
return true;
|
|
}
|
|
|
|
void free()
|
|
{
|
|
if (!data) {
|
|
data_size = 0;
|
|
padding = 0;
|
|
return;
|
|
}
|
|
peconv::free_aligned(data, data_size);
|
|
data = nullptr;
|
|
data_size = 0;
|
|
padding = 0;
|
|
}
|
|
|
|
};
|
|
|
|
}; // namespace util
|
|
|
|
}; // namespace pesieve
|
|
|