mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-11 16:46:16 +00:00
remove references to nt_memory_permission from backend
This commit is contained in:
@@ -317,7 +317,7 @@ namespace
|
||||
{
|
||||
for (const auto& section : exe.sections)
|
||||
{
|
||||
if ((section.region.permissions.common & memory_permission::exec) != memory_permission::exec)
|
||||
if ((section.region.permissions & memory_permission::exec) != memory_permission::exec)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -193,9 +193,9 @@ namespace icicle
|
||||
icicle_map_mmio(this->emu_, address, size, read_wrapper, ptr, write_wrapper, ptr);
|
||||
}
|
||||
|
||||
void map_memory(const uint64_t address, const size_t size, nt_memory_permission permissions) override
|
||||
void map_memory(const uint64_t address, const size_t size, memory_permission permissions) override
|
||||
{
|
||||
const auto res = icicle_map_memory(this->emu_, address, size, static_cast<uint8_t>(permissions.common));
|
||||
const auto res = icicle_map_memory(this->emu_, address, size, static_cast<uint8_t>(permissions));
|
||||
ice(res, "Failed to map memory");
|
||||
}
|
||||
|
||||
@@ -222,10 +222,9 @@ namespace icicle
|
||||
ice(res, "Failed to write memory");
|
||||
}
|
||||
|
||||
void apply_memory_protection(const uint64_t address, const size_t size,
|
||||
nt_memory_permission permissions) override
|
||||
void apply_memory_protection(const uint64_t address, const size_t size, memory_permission permissions) override
|
||||
{
|
||||
const auto res = icicle_protect_memory(this->emu_, address, size, static_cast<uint8_t>(permissions.common));
|
||||
const auto res = icicle_protect_memory(this->emu_, address, size, static_cast<uint8_t>(permissions));
|
||||
ice(res, "Failed to apply permissions");
|
||||
}
|
||||
|
||||
|
||||
@@ -335,9 +335,9 @@ namespace unicorn
|
||||
this->mmio_[address] = std::move(cb);
|
||||
}
|
||||
|
||||
void map_memory(const uint64_t address, const size_t size, nt_memory_permission permissions) override
|
||||
void map_memory(const uint64_t address, const size_t size, memory_permission permissions) override
|
||||
{
|
||||
uce(uc_mem_map(*this, address, size, static_cast<uint32_t>(permissions.common)));
|
||||
uce(uc_mem_map(*this, address, size, static_cast<uint32_t>(permissions)));
|
||||
}
|
||||
|
||||
void unmap_memory(const uint64_t address, const size_t size) override
|
||||
@@ -367,9 +367,9 @@ namespace unicorn
|
||||
}
|
||||
|
||||
void apply_memory_protection(const uint64_t address, const size_t size,
|
||||
nt_memory_permission permissions) override
|
||||
memory_permission permissions) override
|
||||
{
|
||||
uce(uc_mem_protect(*this, address, size, static_cast<uint32_t>(permissions.common)));
|
||||
uce(uc_mem_protect(*this, address, size, static_cast<uint32_t>(permissions)));
|
||||
}
|
||||
|
||||
emulator_hook* hook_instruction(const int instruction_type, instruction_hook_callback callback) override
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
|
||||
#include "windows-emulator/memory_permission_ext.hpp"
|
||||
#include "memory_permission.hpp"
|
||||
|
||||
using mmio_read_callback = std::function<void(uint64_t addr, void* data, size_t size)>;
|
||||
using mmio_write_callback = std::function<void(uint64_t addr, const void* data, size_t size)>;
|
||||
@@ -22,10 +22,10 @@ class memory_interface
|
||||
|
||||
private:
|
||||
virtual void map_mmio(uint64_t address, size_t size, mmio_read_callback read_cb, mmio_write_callback write_cb) = 0;
|
||||
virtual void map_memory(uint64_t address, size_t size, nt_memory_permission permissions) = 0;
|
||||
virtual void map_memory(uint64_t address, size_t size, memory_permission permissions) = 0;
|
||||
virtual void unmap_memory(uint64_t address, size_t size) = 0;
|
||||
|
||||
virtual void apply_memory_protection(uint64_t address, size_t size, nt_memory_permission permissions) = 0;
|
||||
virtual void apply_memory_protection(uint64_t address, size_t size, memory_permission permissions) = 0;
|
||||
|
||||
public:
|
||||
template <typename T>
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
#pragma once
|
||||
#include "windows-emulator/memory_permission_ext.hpp"
|
||||
#include "memory_permission.hpp"
|
||||
#include <cstddef>
|
||||
|
||||
struct basic_memory_region
|
||||
{
|
||||
uint64_t start{};
|
||||
size_t length{}; // uint64_t?
|
||||
nt_memory_permission permissions{};
|
||||
memory_permission permissions{};
|
||||
};
|
||||
|
||||
struct memory_region : basic_memory_region
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
#include "memory_permission.hpp"
|
||||
#include "std_include.hpp"
|
||||
#include "memory_manager.hpp"
|
||||
|
||||
@@ -269,12 +268,9 @@ bool memory_manager::allocate_memory(const uint64_t address, const size_t size,
|
||||
|
||||
if (!reserve_only)
|
||||
{
|
||||
this->map_memory(address, size, permissions);
|
||||
|
||||
auto common = memory_permission::read_write;
|
||||
auto extended = permissions.is_guarded() ? memory_permission_ext::guard : memory_permission_ext::none;
|
||||
|
||||
entry->second.committed_regions[address] = committed_region{size, nt_memory_permission{common, extended}};
|
||||
this->map_memory(address, size, permissions.is_guarded() ? memory_permission::none : permissions.common);
|
||||
entry->second.committed_regions[address] =
|
||||
committed_region{size, nt_memory_permission{memory_permission::read_write, permissions.extended}};
|
||||
}
|
||||
|
||||
this->update_layout_version();
|
||||
@@ -630,11 +626,9 @@ void memory_manager::map_mmio(const uint64_t address, const size_t size, mmio_re
|
||||
this->memory_->map_mmio(address, size, std::move(read_cb), std::move(write_cb));
|
||||
}
|
||||
|
||||
void memory_manager::map_memory(const uint64_t address, const size_t size, const nt_memory_permission permissions)
|
||||
void memory_manager::map_memory(const uint64_t address, const size_t size, const memory_permission permissions)
|
||||
{
|
||||
auto perms = permissions.is_guarded() ? nt_memory_permission(memory_permission::none) : permissions;
|
||||
|
||||
this->memory_->map_memory(address, size, perms);
|
||||
this->memory_->map_memory(address, size, permissions);
|
||||
}
|
||||
|
||||
void memory_manager::unmap_memory(const uint64_t address, const size_t size)
|
||||
@@ -643,7 +637,7 @@ void memory_manager::unmap_memory(const uint64_t address, const size_t size)
|
||||
}
|
||||
|
||||
void memory_manager::apply_memory_protection(const uint64_t address, const size_t size,
|
||||
const nt_memory_permission permissions)
|
||||
const memory_permission permissions)
|
||||
{
|
||||
this->memory_->apply_memory_protection(address, size, permissions);
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#include <atomic>
|
||||
#include <cstdint>
|
||||
|
||||
#include "memory_region.hpp"
|
||||
#include "memory_permission_ext.hpp"
|
||||
#include "serialization.hpp"
|
||||
|
||||
#include <memory_interface.hpp>
|
||||
@@ -12,7 +12,16 @@ constexpr auto ALLOCATION_GRANULARITY = 0x0000000000010000ULL;
|
||||
constexpr auto MIN_ALLOCATION_ADDRESS = 0x0000000000010000ULL;
|
||||
constexpr auto MAX_ALLOCATION_ADDRESS = 0x00007ffffffeffffULL;
|
||||
|
||||
struct region_info : basic_memory_region
|
||||
// This maps to the `basic_memory_region` struct defined in
|
||||
// emulator\memory_region.hpp
|
||||
struct nt_basic_memory_region
|
||||
{
|
||||
uint64_t start{};
|
||||
size_t length{};
|
||||
nt_memory_permission permissions{};
|
||||
};
|
||||
|
||||
struct region_info : nt_basic_memory_region
|
||||
{
|
||||
uint64_t allocation_base{};
|
||||
size_t allocation_length{};
|
||||
@@ -96,9 +105,9 @@ class memory_manager : public memory_interface
|
||||
std::atomic<std::uint64_t> layout_version_{0};
|
||||
|
||||
void map_mmio(uint64_t address, size_t size, mmio_read_callback read_cb, mmio_write_callback write_cb) final;
|
||||
void map_memory(uint64_t address, size_t size, nt_memory_permission permissions) final;
|
||||
void map_memory(uint64_t address, size_t size, memory_permission permissions) final;
|
||||
void unmap_memory(uint64_t address, size_t size) final;
|
||||
void apply_memory_protection(uint64_t address, size_t size, nt_memory_permission permissions) final;
|
||||
void apply_memory_protection(uint64_t address, size_t size, memory_permission permissions) final;
|
||||
|
||||
void update_layout_version();
|
||||
};
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
#include <cstdint>
|
||||
#include <string>
|
||||
#include <emulator.hpp>
|
||||
#include "memory_permission_ext.hpp"
|
||||
|
||||
inline std::string get_permission_string(const memory_permission permission)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user