1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
import sys
from miasm.jitter.csts import PAGE_READ, PAGE_WRITE
from miasm.analysis.machine import Machine
from miasm.core.locationdb import LocationDB
loc_db = LocationDB()
myjit = Machine("x86_32").jitter(loc_db, sys.argv[1])
base_addr = 0x13371337
page_size = 0x1000
data = b"\x00" * page_size
rights = [0, PAGE_READ, PAGE_WRITE, PAGE_READ|PAGE_WRITE]
shuffled_rights = [PAGE_READ, 0, PAGE_READ|PAGE_WRITE, PAGE_WRITE]
# Add pages
for i, access_right in enumerate(rights):
myjit.vm.add_memory_page(base_addr + i * page_size, access_right, data)
# Check rights
for i, access_right in enumerate(rights):
assert myjit.vm.get_mem_access(base_addr + i * page_size) == access_right
# Modify rights
for i, access_right in enumerate(shuffled_rights):
myjit.vm.set_mem_access(base_addr + i * page_size, access_right)
# Check for modification
for i, access_right in enumerate(shuffled_rights):
assert myjit.vm.get_mem_access(base_addr + i * page_size) == access_right
# Remove pages
for i in range(len(rights)):
myjit.vm.remove_memory_page(base_addr + i * page_size)
# Add pages again
for i, access_right in enumerate(rights):
myjit.vm.add_memory_page(base_addr + i * page_size, access_right, data)
|