diff options
| author | Warmist | 2011-07-28 01:00:12 +0300 |
|---|---|---|
| committer | Warmist | 2011-07-28 01:00:12 +0300 |
| commit | bc23cc9eca8a0f6053f0ef7a6087dfbb7a764df8 (patch) | |
| tree | 28a7b7e81c56a4890235a6ecbdc88ce64a224975 /library/Process-windows.cpp | |
| parent | a01004efd6a7962c52a88cfc662924e884ee7097 (diff) | |
| download | dfhack-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.cpp | 15 |
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; +} |
