summaryrefslogtreecommitdiff
path: root/library/Process-windows.cpp
diff options
context:
space:
mode:
authorWarmist2011-07-28 01:00:12 +0300
committerWarmist2011-07-28 01:00:12 +0300
commitbc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8 (patch)
tree28a7b7e81c56a4890235a6ecbdc88ce64a224975 /library/Process-windows.cpp
parenta01004efd6a7962c52a88cfc662924e884ee7097 (diff)
downloaddfhack-bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8.tar.gz
dfhack-bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8.tar.bz2
dfhack-bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8.tar.xz
Made Process::setPermisions functions, to set memory page's permisions
Diffstat (limited to 'library/Process-windows.cpp')
-rw-r--r--library/Process-windows.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/library/Process-windows.cpp b/library/Process-windows.cpp
index 2edfc632..88b77891 100644
--- a/library/Process-windows.cpp
+++ b/library/Process-windows.cpp
@@ -356,3 +356,18 @@ string Process::getPath()
string out(String);
return(out.substr(0,out.find_last_of("\\")));
}
+
+bool Process::setPermisions(const t_memrange & range,const t_memrange &trgrange)
+{
+ DWORD newprotect=0;
+ if(trgrange.read && !trgrange.write && !trgrange.execute)newprotect=PAGE_READONLY;
+ if(trgrange.read && trgrange.write && !trgrange.execute)newprotect=PAGE_READWRITE;
+ if(!trgrange.read && !trgrange.write && trgrange.execute)newprotect=PAGE_EXECUTE;
+ if(trgrange.read && !trgrange.write && trgrange.execute)newprotect=PAGE_EXECUTE_READ;
+ if(trgrange.read && trgrange.write && trgrange.execute)newprotect=PAGE_EXECUTE_READWRITE;
+ DWORD oldprotect=0;
+ bool result;
+ result=VirtualProtect((LPVOID)range.start,range.end-range.start,newprotect,&oldprotect);
+
+ return result;
+}