1
0
Fork 0

functions to get memory base/size/protect

This commit is contained in:
mrexodia 2017-03-19 13:12:42 +01:00
parent dd0c4ff268
commit af6bc45b2e
No known key found for this signature in database
GPG Key ID: FC89E0AAA0C1AAD8
2 changed files with 29 additions and 0 deletions

View File

@ -1,5 +1,6 @@
#include "_scriptapi_memory.h"
#include "memory.h"
#include "threading.h"
SCRIPT_EXPORT bool Script::Memory::Read(duint addr, void* data, duint size, duint* sizeRead)
{
@ -26,6 +27,31 @@ SCRIPT_EXPORT bool Script::Memory::RemoteFree(duint addr)
return MemFreeRemote(addr);
}
SCRIPT_EXPORT unsigned int Script::Memory::GetProtect(duint addr, bool reserved, bool cache)
{
if(!cache)
MemUpdateMap();
SHARED_ACQUIRE(LockMemoryPages);
auto found = memoryPages.find({ addr, addr });
if(found == memoryPages.end())
return 0;
if(!reserved && found->second.mbi.State == MEM_RESERVE) //check if the current page is reserved.
return 0;
return found->second.mbi.Protect;
}
SCRIPT_EXPORT duint Script::Memory::GetBase(duint addr, bool reserved, bool cache)
{
return MemFindBaseAddr(addr, nullptr, !cache, reserved);
}
SCRIPT_EXPORT duint Script::Memory::GetSize(duint addr, bool reserved, bool cache)
{
duint size = 0;
MemFindBaseAddr(addr, &size, !cache, reserved);
return size;
}
SCRIPT_EXPORT unsigned char Script::Memory::ReadByte(duint addr)
{
unsigned char data;

View File

@ -12,6 +12,9 @@ namespace Script
SCRIPT_EXPORT bool IsValidPtr(duint addr);
SCRIPT_EXPORT duint RemoteAlloc(duint addr, duint size);
SCRIPT_EXPORT bool RemoteFree(duint addr);
SCRIPT_EXPORT unsigned int GetProtect(duint addr, bool reserved = false, bool cache = true);
SCRIPT_EXPORT duint GetBase(duint addr, bool reserved = false, bool cache = true);
SCRIPT_EXPORT duint GetSize(duint addr, bool reserved = false, bool cache = true);
SCRIPT_EXPORT unsigned char ReadByte(duint addr);
SCRIPT_EXPORT bool WriteByte(duint addr, unsigned char data);