1# Copyright (c) 2017, The MITRE Corporation. All rights reserved.
2# See LICENSE.txt for complete terms.
3
4from mixbox import fields
5
6import cybox.bindings.win_memory_page_region_object as win_memory_page_region_binding
7from cybox.common import String, HashList, UnsignedLong, HexBinary, ExtractedFeatures
8from cybox.objects.memory_object import Memory
9
10
11class WinMemoryPageRegion(Memory):
12    _binding = win_memory_page_region_binding
13    _binding_class = win_memory_page_region_binding.WindowsMemoryPageRegionObjectType
14    _namespace = "http://cybox.mitre.org/objects#WinMemoryPageRegionObject-2"
15    _XSI_NS = "WinMemoryPageRegionObj"
16    _XSI_TYPE = "WindowsMemoryPageRegionObjectType"
17
18    is_injected = fields.TypedField("is_injected")
19    is_mapped = fields.TypedField("is_mapped")
20    is_protected = fields.TypedField("is_protected")
21    is_volatile = fields.TypedField("is_volatile")
22    hashes = fields.TypedField("Hashes", HashList)
23    name = fields.TypedField("Name", String)
24    memory_source = fields.TypedField("Memory_Source", String)
25    region_size = fields.TypedField("Region_Size", UnsignedLong)
26    block_type = fields.TypedField("Block_Type", String)
27    region_start_address = fields.TypedField("Region_Start_Address", HexBinary)
28    region_end_address = fields.TypedField("Region_End_Address", HexBinary)
29    extracted_features = fields.TypedField("Extracted_Features", ExtractedFeatures)
30    allocation_base_address = fields.TypedField("Allocation_Base_Address", HexBinary)
31    type_ = fields.TypedField("Type", String)
32    allocation_protect = fields.TypedField("Allocation_Protect", String)
33    state = fields.TypedField("State", String)
34    protect = fields.TypedField("Protect", String)
35