Всем привет! Хочу закинуть вам трушный мемвраппер под плюсы для трушных ASI скриптеров, который использует NLE Choppa в своих проектах.
Поддержка: C++20, Windows и любая битность которую поддерживает
Использование:
Исходный код:
gist.github.com
Мемесы: Залог успеха очень прост, нужно всего лишь...
Поддержка: C++20, Windows и любая битность которую поддерживает
uintptr_t
. При чтении/записи указателя отработает по размерности uintptr_t
. Работа со сложными типами описана в примере использования.Использование:
C++:
auto addr = whyega::address_t{0x1337};
// математика
addr += 0x228;
addr -= 0x228;
// доступные касты
std::uintptr_t{addr}; // авто каст
addr.ptr(); // к указателю
addr.as<uint32_t>(); // к типу
std::cout << addr; // к ostream
// чтение (в non-const сам снимает протекцию)
std::println("{:d}", addr.read<uint32_t>());
// запись (сам снимает протекцию)
addr.write<uint32_t>(1337);
// протекция
auto prot = addr.protect();
if (!prot.executable()) {
addr.protect(sizeof(uint32_t), prot.read_write_execute());
auto flags = *addr; // получаем PAGE флаги
flags = addr.get(); // тоже самое через метод
}
// вызов функции
addr.execute<void, uint8_t>(255);
// простой пример
whyega::address_t{0x1337}.write<uint32_t>(1337);
// работа со сложными типами
auto buf = addr.span(100);
std::fill(buf.begin(), buf.end(), 0x90);
// + можете снять протект на диапазон
Исходный код:

true memwrap. something else?
true memwrap. something else? GitHub Gist: instantly share code, notes, and snippets.

Последнее редактирование: