mirror of
https://github.com/volatilityfoundation/volatility3.git
synced 2026-09-13 13:17:38 +02:00
#816 - fixes and additional windows versions
This commit is contained in:
@@ -11,12 +11,13 @@ from typing import Tuple, Generator, Set, Dict, Any, Type
|
||||
|
||||
from volatility3.framework import interfaces, symbols, exceptions
|
||||
from volatility3.framework import renderers
|
||||
from volatility3.framework.interfaces import configuration
|
||||
from volatility3.framework.configuration import requirements
|
||||
from volatility3.framework.layers import scanners
|
||||
from volatility3.framework.objects import utility
|
||||
from volatility3.framework.renderers import format_hints
|
||||
from volatility3.framework.symbols import intermed
|
||||
from volatility3.framework.symbols.windows import pdbutil, versions
|
||||
from volatility3.framework.symbols.windows import pdbutil
|
||||
from volatility3.framework.symbols.windows.extensions import pe, consoles
|
||||
from volatility3.plugins.windows import pslist, vadinfo, info, verinfo
|
||||
from volatility3.plugins.windows.registry import hivelist
|
||||
@@ -49,6 +50,9 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
requirements.VersionRequirement(
|
||||
name="pslist", component=pslist.PsList, version=(2, 0, 0)
|
||||
),
|
||||
requirements.VersionRequirement(
|
||||
name="verinfo", component=verinfo.VerInfo, version=(1, 0, 0)
|
||||
),
|
||||
requirements.VersionRequirement(
|
||||
name="pdbutil", component=pdbutil.PDBUtility, version=(1, 0, 0)
|
||||
),
|
||||
@@ -92,18 +96,19 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
"""
|
||||
|
||||
for proc in proc_list:
|
||||
try:
|
||||
proc_id = proc.UniqueProcessId
|
||||
proc_layer_name = proc.add_process_layer()
|
||||
if utility.array_to_string(proc.ImageFileName).lower() == "conhost.exe":
|
||||
try:
|
||||
proc_id = proc.UniqueProcessId
|
||||
proc_layer_name = proc.add_process_layer()
|
||||
|
||||
yield proc, proc_layer_name
|
||||
yield proc, proc_layer_name
|
||||
|
||||
except exceptions.InvalidAddressException as excp:
|
||||
vollog.debug(
|
||||
"Process {}: invalid address {} in layer {}".format(
|
||||
proc_id, excp.invalid_address, excp.layer_name
|
||||
except exceptions.InvalidAddressException as excp:
|
||||
vollog.debug(
|
||||
"Process {}: invalid address {} in layer {}".format(
|
||||
proc_id, excp.invalid_address, excp.layer_name
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@classmethod
|
||||
def find_conhostexe(
|
||||
@@ -122,7 +127,6 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
"""
|
||||
for vad in conhost_proc.get_vad_root().traverse():
|
||||
filename = vad.get_file_name()
|
||||
|
||||
if isinstance(filename, str) and filename.lower().endswith("conhost.exe"):
|
||||
base = vad.get_start()
|
||||
return base, vad.get_size()
|
||||
@@ -135,6 +139,9 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
context: interfaces.context.ContextInterface,
|
||||
layer_name: str,
|
||||
nt_symbol_table: str,
|
||||
config_path: str,
|
||||
conhost_layer_name: str,
|
||||
conhost_base: int,
|
||||
) -> Tuple[str, Type]:
|
||||
"""Tries to determine which symbol filename to use for the image's console information. This is similar to the
|
||||
netstat plugin.
|
||||
@@ -143,6 +150,9 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
context: The context to retrieve required elements (layers, symbol tables) from
|
||||
layer_name: The name of the layer on which to operate
|
||||
nt_symbol_table: The name of the table containing the kernel symbols
|
||||
config_path: The config path where to find symbol files
|
||||
conhost_layer_name: The name of the conhot process memory layer
|
||||
conhost_base: the base address of conhost.exe
|
||||
|
||||
Returns:
|
||||
The filename of the symbol table to use and the associated class types.
|
||||
@@ -150,10 +160,6 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
|
||||
is_64bit = symbols.symbol_table_is_64bit(context, nt_symbol_table)
|
||||
|
||||
is_18363_or_later = versions.is_win10_18363_or_later(
|
||||
context=context, symbol_table=nt_symbol_table
|
||||
)
|
||||
|
||||
if is_64bit:
|
||||
arch = "x64"
|
||||
else:
|
||||
@@ -211,23 +217,15 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
(10, 0, 20348, 1970): "consoles-win10-20348-1970-x64",
|
||||
(10, 0, 20348, 2461): "consoles-win10-20348-2461-x64",
|
||||
(10, 0, 20348, 2520): "consoles-win10-20348-2461-x64",
|
||||
(10, 0, 22000, 0): "consoles-win10-22000-x64",
|
||||
(10, 0, 22621, 1): "consoles-win10-22621-x64",
|
||||
(10, 0, 22621, 3672): "consoles-win10-22621-3672-x64",
|
||||
(10, 0, 25398, 0): "consoles-win10-22000-x64",
|
||||
}
|
||||
|
||||
# we do not need to check for conhost's specific FileVersion in every case
|
||||
conhost_mod_version = 0 # keep it 0 as a default
|
||||
|
||||
# special use cases
|
||||
|
||||
# Win10_18363 is not recognized by windows.info as 18363
|
||||
# because all kernel file headers and debug structures report 18363 as
|
||||
# "10.0.18362.1198" with the last part being incremented. However, we can use
|
||||
# os_distinguisher to differentiate between 18362 and 18363
|
||||
if vers_minor_version == 18362 and is_18363_or_later:
|
||||
vollog.debug(
|
||||
"Detected 18363 data structures: working with 18363 symbol table."
|
||||
)
|
||||
vers_minor_version = 18363
|
||||
|
||||
# we need to define additional version numbers (which are then found via conhost.exe's FileVersion header) in case there is
|
||||
# ambiguity _within_ an OS version. If such a version number (last number of the tuple) is defined for the current OS
|
||||
# we need to inspect conhost.exe's headers to see if we can grab the precise version
|
||||
@@ -240,24 +238,40 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
vollog.debug(
|
||||
"Requiring further version inspection due to OS version by checking conhost.exe's FileVersion header"
|
||||
)
|
||||
# the following is IntelLayer specific and might need to be adapted to other architectures.
|
||||
physical_layer_name = context.layers[layer_name].config.get(
|
||||
"memory_layer", None
|
||||
)
|
||||
if physical_layer_name:
|
||||
ver = verinfo.VerInfo.find_version_info(
|
||||
context, physical_layer_name, "CONHOST.EXE"
|
||||
)
|
||||
|
||||
if ver:
|
||||
conhost_mod_version = ver[3]
|
||||
vollog.debug(
|
||||
"Determined conhost.exe's FileVersion: {}".format(
|
||||
conhost_mod_version
|
||||
)
|
||||
pe_table_name = intermed.IntermediateSymbolTable.create(
|
||||
context,
|
||||
configuration.path_join(config_path, "conhost"),
|
||||
"windows",
|
||||
"pe",
|
||||
class_types=pe.class_types
|
||||
)
|
||||
|
||||
try:
|
||||
(major, minor, product, build) = verinfo.VerInfo.get_version_information(
|
||||
context, pe_table_name, conhost_layer_name, conhost_base
|
||||
)
|
||||
conhost_mod_version = build
|
||||
vollog.debug(f"Found conhost.exe version {major}.{minor}.{product}.{build} in {conhost_layer_name} at base {conhost_base:#x}")
|
||||
except (exceptions.InvalidAddressException, TypeError, AttributeError):
|
||||
# the following is IntelLayer specific and might need to be adapted to other architectures.
|
||||
physical_layer_name = context.layers[layer_name].config.get(
|
||||
"memory_layer", None
|
||||
)
|
||||
if physical_layer_name:
|
||||
ver = verinfo.VerInfo.find_version_info(
|
||||
context, physical_layer_name, "CONHOST.EXE"
|
||||
)
|
||||
else:
|
||||
vollog.debug("Could not determine conhost.exe's FileVersion.")
|
||||
|
||||
if ver:
|
||||
conhost_mod_version = ver[3]
|
||||
vollog.debug(
|
||||
"Determined conhost.exe's FileVersion: {}".format(
|
||||
conhost_mod_version
|
||||
)
|
||||
)
|
||||
else:
|
||||
vollog.debug("Could not determine conhost.exe's FileVersion.")
|
||||
else:
|
||||
vollog.debug(
|
||||
"Unable to retrieve physical memory layer, skipping FileVersion check."
|
||||
@@ -287,6 +301,7 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
for nt_maj, nt_min, vers_min, conhost_ver in version_dict
|
||||
if nt_maj == nt_major_version
|
||||
and nt_min == nt_minor_version
|
||||
and vers_min <= vers_minor_version
|
||||
and conhost_ver <= conhost_mod_version
|
||||
]
|
||||
current_versions.sort()
|
||||
@@ -321,6 +336,8 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
layer_name: str,
|
||||
nt_symbol_table: str,
|
||||
config_path: str,
|
||||
conhost_layer_name: str,
|
||||
conhost_base: int,
|
||||
) -> str:
|
||||
"""Creates a symbol table for conhost structures.
|
||||
|
||||
@@ -339,13 +356,16 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
context,
|
||||
layer_name,
|
||||
nt_symbol_table,
|
||||
config_path,
|
||||
conhost_layer_name,
|
||||
conhost_base,
|
||||
)
|
||||
|
||||
vollog.debug(f"Using symbol file '{symbol_filename}' and types {class_types}")
|
||||
|
||||
return intermed.IntermediateSymbolTable.create(
|
||||
context,
|
||||
config_path,
|
||||
configuration.path_join(config_path, "conhost"),
|
||||
os.path.join("windows", "consoles"),
|
||||
symbol_filename,
|
||||
class_types=class_types,
|
||||
@@ -383,9 +403,7 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
that console information structure.
|
||||
"""
|
||||
|
||||
conhost_symbol_table = cls.create_conhost_symbol_table(
|
||||
context, kernel_layer_name, kernel_table_name, config_path
|
||||
)
|
||||
conhost_symbol_table = None
|
||||
|
||||
for conhost_proc, proc_layer_name in cls.find_conhost_proc(procs):
|
||||
if not conhost_proc:
|
||||
@@ -407,6 +425,16 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
|
||||
proc_layer = context.layers[proc_layer_name]
|
||||
|
||||
if conhost_symbol_table is None:
|
||||
conhost_symbol_table = cls.create_conhost_symbol_table(
|
||||
context,
|
||||
kernel_layer_name,
|
||||
kernel_table_name,
|
||||
config_path,
|
||||
proc_layer_name,
|
||||
conhostexe_base
|
||||
)
|
||||
|
||||
conhost_module = context.module(
|
||||
conhost_symbol_table, proc_layer_name, offset=conhostexe_base
|
||||
)
|
||||
@@ -560,6 +588,60 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
}
|
||||
)
|
||||
|
||||
vollog.debug(
|
||||
f"Getting ExeAliasList entries for {console_info.ExeAliasList}"
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 1,
|
||||
"name": "_CONSOLE_INFORMATION.ExeAliasList",
|
||||
"address": console_info.ExeAliasList.vol.offset,
|
||||
"data": "",
|
||||
}
|
||||
)
|
||||
if console_info.ExeAliasList:
|
||||
for index, exe_alias_list in enumerate(
|
||||
console_info.get_exe_aliases()
|
||||
):
|
||||
try:
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ExeAliasList.AliasList_{index}",
|
||||
"address": exe_alias_list.vol.offset,
|
||||
"data": "",
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ExeAliasList.AliasList_{index}.ExeName",
|
||||
"address": exe_alias_list.ExeName.vol.offset,
|
||||
"data": exe_alias_list.get_exename(),
|
||||
}
|
||||
)
|
||||
for alias_index, alias in enumerate(exe_alias_list.get_aliases()):
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 3,
|
||||
"name": f"_CONSOLE_INFORMATION.ExeAliasList.AliasList_{index}.Alias_{alias_index}.Source",
|
||||
"address": alias.Source.vol.offset,
|
||||
"data": alias.get_source(),
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 3,
|
||||
"name": f"_CONSOLE_INFORMATION.ExeAliasList.AliasList_{index}.Alias_{alias_index}.Target",
|
||||
"address": alias.Target.vol.offset,
|
||||
"data": alias.get_target(),
|
||||
}
|
||||
)
|
||||
except Exception as e:
|
||||
vollog.debug(
|
||||
f"reading {exe_alias_list} encountered exception {e}"
|
||||
)
|
||||
|
||||
vollog.debug(
|
||||
f"Getting HistoryList entries for {console_info.HistoryList}"
|
||||
)
|
||||
@@ -639,60 +721,66 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
f"reading {command_history} encountered exception {e}"
|
||||
)
|
||||
|
||||
vollog.debug(f"Getting ScreenBuffer entries for {console_info}")
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 1,
|
||||
"name": "_CONSOLE_INFORMATION.CurrentScreenBuffer",
|
||||
"address": console_info.CurrentScreenBuffer.vol.offset,
|
||||
"data": "",
|
||||
}
|
||||
)
|
||||
for screen_index, screen_info in enumerate(
|
||||
console_info.get_screens()
|
||||
):
|
||||
try:
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}",
|
||||
"address": screen_info,
|
||||
"data": "",
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}.ScreenX",
|
||||
"address": None,
|
||||
"data": screen_info.ScreenX,
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}.ScreenY",
|
||||
"address": None,
|
||||
"data": screen_info.ScreenY,
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}.Dump",
|
||||
"address": None,
|
||||
"data": "\n".join(screen_info.get_buffer()),
|
||||
}
|
||||
)
|
||||
except Exception as e:
|
||||
vollog.debug(
|
||||
f"reading {screen_info} encountered exception {e}"
|
||||
)
|
||||
try:
|
||||
vollog.debug(f"Getting ScreenBuffer entries for {console_info}")
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 1,
|
||||
"name": "_CONSOLE_INFORMATION.CurrentScreenBuffer",
|
||||
"address": console_info.CurrentScreenBuffer.vol.offset,
|
||||
"data": "",
|
||||
}
|
||||
)
|
||||
for screen_index, screen_info in enumerate(
|
||||
console_info.get_screens()
|
||||
):
|
||||
try:
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}",
|
||||
"address": screen_info,
|
||||
"data": "",
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}.ScreenX",
|
||||
"address": None,
|
||||
"data": screen_info.ScreenX,
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}.ScreenY",
|
||||
"address": None,
|
||||
"data": screen_info.ScreenY,
|
||||
}
|
||||
)
|
||||
console_properties.append(
|
||||
{
|
||||
"level": 2,
|
||||
"name": f"_CONSOLE_INFORMATION.ScreenBuffer_{screen_index}.Dump",
|
||||
"address": None,
|
||||
"data": "\n".join(screen_info.get_buffer()),
|
||||
}
|
||||
)
|
||||
except Exception as e:
|
||||
vollog.debug(
|
||||
f"reading {screen_info} encountered exception {e}"
|
||||
)
|
||||
except Exception as e:
|
||||
vollog.debug(
|
||||
f"reading _CONSOLE_INFORMATION.CurrentScreenBuffer encountered exception {e}"
|
||||
)
|
||||
|
||||
except exceptions.PagedInvalidAddressException as exp:
|
||||
vollog.debug(
|
||||
f"Required memory at {exp.invalid_address:#x} is not valid"
|
||||
)
|
||||
continue
|
||||
|
||||
yield conhost_proc, console_info, console_properties
|
||||
|
||||
@@ -776,6 +864,7 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
vollog.debug(f"Possible CommandHistorySize values: {max_history}")
|
||||
vollog.debug(f"Possible HistoryBufferMax values: {max_buffers}")
|
||||
|
||||
proc = None
|
||||
for proc, console_info, console_properties in self.get_console_info(
|
||||
self.context,
|
||||
kernel.layer_name,
|
||||
@@ -786,13 +875,14 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
max_buffers,
|
||||
):
|
||||
process_name = utility.array_to_string(proc.ImageFileName)
|
||||
process_pid = proc.UniqueProcessId
|
||||
|
||||
if console_info and console_properties:
|
||||
for console_property in console_properties:
|
||||
yield (
|
||||
console_property["level"],
|
||||
(
|
||||
proc.UniqueProcessId,
|
||||
process_pid,
|
||||
process_name,
|
||||
format_hints.Hex(console_info.vol.offset),
|
||||
console_property["name"],
|
||||
@@ -804,6 +894,11 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
str(console_property["data"]),
|
||||
),
|
||||
)
|
||||
else:
|
||||
vollog.warn(f"_CONSOLE_INFORMATION not found for {process_name} with pid {process_pid}.")
|
||||
|
||||
if proc is None:
|
||||
vollog.warn("No conhost.exe processes found.")
|
||||
|
||||
def _conhost_proc_filter(self, proc):
|
||||
"""
|
||||
@@ -811,7 +906,7 @@ class Consoles(interfaces.plugins.PluginInterface):
|
||||
"""
|
||||
process_name = utility.array_to_string(proc.ImageFileName)
|
||||
|
||||
return process_name != "conhost.exe"
|
||||
return process_name.lower() != "conhost.exe"
|
||||
|
||||
def run(self):
|
||||
kernel = self.context.modules[self.config["kernel"]]
|
||||
|
||||
@@ -13,7 +13,7 @@ from volatility3.framework.layers import scanners
|
||||
from volatility3.framework.renderers import format_hints
|
||||
from volatility3.framework.symbols import intermed
|
||||
from volatility3.framework.symbols.windows.extensions import pe
|
||||
from volatility3.plugins.windows import pslist, modules, dlllist
|
||||
from volatility3.plugins.windows import pslist, modules
|
||||
|
||||
vollog = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@@ -152,8 +152,8 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 1392
|
||||
}
|
||||
@@ -562,7 +562,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -581,6 +582,70 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 24
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 32
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 48
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -152,8 +152,8 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 1392
|
||||
}
|
||||
@@ -562,7 +562,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -581,6 +582,70 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 24
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 32
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 48
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -152,10 +152,10 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 1436
|
||||
"offset": -856
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
@@ -552,7 +552,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -571,6 +572,70 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 24
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 32
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 48
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"symbols": {},
|
||||
"symbols": {},
|
||||
"enums": {},
|
||||
"base_types": {
|
||||
"unsigned long": {
|
||||
@@ -152,8 +152,8 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 1436
|
||||
}
|
||||
@@ -552,7 +552,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -571,6 +572,70 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 24
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 32
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 48
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -152,8 +152,11 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 2410
|
||||
}
|
||||
@@ -562,7 +565,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -581,6 +585,104 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -152,8 +152,11 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 9232
|
||||
}
|
||||
@@ -562,7 +565,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -581,6 +585,104 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -152,8 +152,11 @@
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": -376
|
||||
}
|
||||
@@ -562,7 +565,8 @@
|
||||
}
|
||||
},
|
||||
"offset": 88
|
||||
} },
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
@@ -581,6 +585,104 @@
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
|
||||
@@ -0,0 +1,722 @@
|
||||
{
|
||||
"symbols": {},
|
||||
"enums": {},
|
||||
"base_types": {
|
||||
"unsigned long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned char": {
|
||||
"kind": "char",
|
||||
"size": 1,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"pointer": {
|
||||
"kind": "int",
|
||||
"size": 8,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned int": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": true,
|
||||
"endian": "little"
|
||||
},
|
||||
"long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
}
|
||||
},
|
||||
"user_types": {
|
||||
"_CONSOLE_INFORMATION": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 24
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 26
|
||||
},
|
||||
"CommandHistorySize": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 136
|
||||
},
|
||||
"HistoryBufferMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 140
|
||||
},
|
||||
"OriginalTitle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 1648
|
||||
},
|
||||
"Title": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 1616
|
||||
},
|
||||
"GetScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 1664
|
||||
},
|
||||
"CurrentScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 1296
|
||||
},
|
||||
"ConsoleProcessList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 1272
|
||||
},
|
||||
"ProcessCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 1280
|
||||
},
|
||||
"HistoryList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": -920
|
||||
},
|
||||
"HistoryBufferCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": -912
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": -1008
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 140
|
||||
},
|
||||
"_VECTOR": {
|
||||
"fields": {
|
||||
"Begin": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"End": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"EndCapacity": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned long"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_CONSOLE_PROCESS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ConsoleProcess": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_CONSOLE_PROCESS_HANDLE": {
|
||||
"fields": {
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 52
|
||||
},
|
||||
"_CONSOLE_PROCESS": {
|
||||
"fields": {
|
||||
"ProcessId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 28
|
||||
},
|
||||
"ThreadId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND_HISTORY": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"CommandBucket": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_VECTOR"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"CommandCountMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 40
|
||||
},
|
||||
"Application": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
},
|
||||
"offset": 48
|
||||
},
|
||||
"ConsoleProcessHandle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS_HANDLE"
|
||||
}
|
||||
},
|
||||
"offset": 80
|
||||
},
|
||||
"Flags": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 88
|
||||
},
|
||||
"LastDisplayed": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 92
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
"_SCREEN_INFORMATION": {
|
||||
"fields": {
|
||||
"TextBufferInfo": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
},
|
||||
"Next": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 64
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_ROW_POINTER": {
|
||||
"fields": {
|
||||
"Row": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROWS_ARRAY": {
|
||||
"fields": {
|
||||
"Rows": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_TEXT_BUFFER_INFO": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 4
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 6
|
||||
},
|
||||
"BufferRows": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROWS_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"BufferCapacity": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 6
|
||||
},
|
||||
"ThisBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"FirstRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"LastRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"BufferStart": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 80
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_CHAR_ROW_CELL": {
|
||||
"fields": {
|
||||
"Text": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_UNICODE_STRING"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"DbcsAttribute": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 2
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 3
|
||||
},
|
||||
"_CHAR_ROW_CELL_ARRAY": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROW": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": -88
|
||||
},
|
||||
"CharRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"RowLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": -18
|
||||
},
|
||||
"Index": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": -20
|
||||
},
|
||||
"RowLength2": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"TextBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": -8
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 480
|
||||
},
|
||||
"_DEQUE": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "void"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"producer": {
|
||||
"version": "0.0.1",
|
||||
"name": "Dave Lassalle",
|
||||
"datetime": "2024-07-31T15:05:35-06:00"
|
||||
},
|
||||
"format": "4.1.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,722 @@
|
||||
{
|
||||
"symbols": {},
|
||||
"enums": {},
|
||||
"base_types": {
|
||||
"unsigned long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned char": {
|
||||
"kind": "char",
|
||||
"size": 1,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"pointer": {
|
||||
"kind": "int",
|
||||
"size": 8,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned int": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": true,
|
||||
"endian": "little"
|
||||
},
|
||||
"long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
}
|
||||
},
|
||||
"user_types": {
|
||||
"_CONSOLE_INFORMATION": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 2400
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 2402
|
||||
},
|
||||
"CommandHistorySize": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2512
|
||||
},
|
||||
"HistoryBufferMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2516
|
||||
},
|
||||
"OriginalTitle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 2944
|
||||
},
|
||||
"Title": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 2912
|
||||
},
|
||||
"GetScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 3008
|
||||
},
|
||||
"CurrentScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 2632
|
||||
},
|
||||
"ConsoleProcessList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 2608
|
||||
},
|
||||
"ProcessCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2616
|
||||
},
|
||||
"HistoryList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 10640
|
||||
},
|
||||
"HistoryBufferCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 10648
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 10552
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 140
|
||||
},
|
||||
"_VECTOR": {
|
||||
"fields": {
|
||||
"Begin": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"End": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"EndCapacity": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned long"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_CONSOLE_PROCESS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ConsoleProcess": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_CONSOLE_PROCESS_HANDLE": {
|
||||
"fields": {
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 52
|
||||
},
|
||||
"_CONSOLE_PROCESS": {
|
||||
"fields": {
|
||||
"ProcessId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 28
|
||||
},
|
||||
"ThreadId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND_HISTORY": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"CommandBucket": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_VECTOR"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"CommandCountMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 40
|
||||
},
|
||||
"Application": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
},
|
||||
"offset": 48
|
||||
},
|
||||
"ConsoleProcessHandle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS_HANDLE"
|
||||
}
|
||||
},
|
||||
"offset": 80
|
||||
},
|
||||
"Flags": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 88
|
||||
},
|
||||
"LastDisplayed": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 92
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
"_SCREEN_INFORMATION": {
|
||||
"fields": {
|
||||
"TextBufferInfo": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
},
|
||||
"Next": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 64
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_ROW_POINTER": {
|
||||
"fields": {
|
||||
"Row": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROWS_ARRAY": {
|
||||
"fields": {
|
||||
"Rows": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_TEXT_BUFFER_INFO": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 4
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 6
|
||||
},
|
||||
"BufferRows": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROWS_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"BufferCapacity": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 6
|
||||
},
|
||||
"ThisBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"FirstRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"LastRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"BufferStart": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 72
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_CHAR_ROW_CELL": {
|
||||
"fields": {
|
||||
"Text": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_UNICODE_STRING"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"DbcsAttribute": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 2
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 3
|
||||
},
|
||||
"_CHAR_ROW_CELL_ARRAY": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROW": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": -80
|
||||
},
|
||||
"CharRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"RowLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Index": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": -20
|
||||
},
|
||||
"RowLength2": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"TextBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": -16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 472
|
||||
},
|
||||
"_DEQUE": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "void"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"producer": {
|
||||
"version": "0.0.1",
|
||||
"name": "Dave Lassalle",
|
||||
"datetime": "2024-07-31T15:05:35-06:00"
|
||||
},
|
||||
"format": "4.1.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,722 @@
|
||||
{
|
||||
"symbols": {},
|
||||
"enums": {},
|
||||
"base_types": {
|
||||
"unsigned long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned char": {
|
||||
"kind": "char",
|
||||
"size": 1,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"pointer": {
|
||||
"kind": "int",
|
||||
"size": 8,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned int": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": true,
|
||||
"endian": "little"
|
||||
},
|
||||
"long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
}
|
||||
},
|
||||
"user_types": {
|
||||
"_CONSOLE_INFORMATION": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 2400
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 2402
|
||||
},
|
||||
"CommandHistorySize": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2512
|
||||
},
|
||||
"HistoryBufferMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2516
|
||||
},
|
||||
"OriginalTitle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 2944
|
||||
},
|
||||
"Title": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 2912
|
||||
},
|
||||
"GetScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 3008
|
||||
},
|
||||
"CurrentScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 2632
|
||||
},
|
||||
"ConsoleProcessList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 2608
|
||||
},
|
||||
"ProcessCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2616
|
||||
},
|
||||
"HistoryList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 10664
|
||||
},
|
||||
"HistoryBufferCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 10672
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 10576
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 140
|
||||
},
|
||||
"_VECTOR": {
|
||||
"fields": {
|
||||
"Begin": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"End": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"EndCapacity": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned long"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_CONSOLE_PROCESS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ConsoleProcess": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_CONSOLE_PROCESS_HANDLE": {
|
||||
"fields": {
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 52
|
||||
},
|
||||
"_CONSOLE_PROCESS": {
|
||||
"fields": {
|
||||
"ProcessId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 28
|
||||
},
|
||||
"ThreadId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND_HISTORY": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"CommandBucket": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_VECTOR"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"CommandCountMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 40
|
||||
},
|
||||
"Application": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
},
|
||||
"offset": 48
|
||||
},
|
||||
"ConsoleProcessHandle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS_HANDLE"
|
||||
}
|
||||
},
|
||||
"offset": 80
|
||||
},
|
||||
"Flags": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 88
|
||||
},
|
||||
"LastDisplayed": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 92
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
"_SCREEN_INFORMATION": {
|
||||
"fields": {
|
||||
"TextBufferInfo": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
},
|
||||
"Next": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 64
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_ROW_POINTER": {
|
||||
"fields": {
|
||||
"Row": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROWS_ARRAY": {
|
||||
"fields": {
|
||||
"Rows": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_TEXT_BUFFER_INFO": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 4
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 6
|
||||
},
|
||||
"BufferRows": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROWS_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"BufferCapacity": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 6
|
||||
},
|
||||
"ThisBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"FirstRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"LastRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"BufferStart": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 72
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_CHAR_ROW_CELL": {
|
||||
"fields": {
|
||||
"Text": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_UNICODE_STRING"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"DbcsAttribute": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 2
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 3
|
||||
},
|
||||
"_CHAR_ROW_CELL_ARRAY": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROW": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": -96
|
||||
},
|
||||
"CharRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"RowLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Index": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": -20
|
||||
},
|
||||
"RowLength2": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"TextBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": -8
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 480
|
||||
},
|
||||
"_DEQUE": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "void"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"producer": {
|
||||
"version": "0.0.1",
|
||||
"name": "Dave Lassalle",
|
||||
"datetime": "2024-07-31T15:05:35-06:00"
|
||||
},
|
||||
"format": "4.1.0"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,723 @@
|
||||
{
|
||||
"symbols": {},
|
||||
"enums": {},
|
||||
"base_types": {
|
||||
"unsigned long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned char": {
|
||||
"kind": "char",
|
||||
"size": 1,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"pointer": {
|
||||
"kind": "int",
|
||||
"size": 8,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned int": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"unsigned short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
},
|
||||
"short": {
|
||||
"kind": "int",
|
||||
"size": 2,
|
||||
"signed": true,
|
||||
"endian": "little"
|
||||
},
|
||||
"long": {
|
||||
"kind": "int",
|
||||
"size": 4,
|
||||
"signed": false,
|
||||
"endian": "little"
|
||||
}
|
||||
},
|
||||
"user_types": {
|
||||
"_CONSOLE_INFORMATION": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 2592
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 2594
|
||||
},
|
||||
"CommandHistorySize": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2704
|
||||
},
|
||||
"HistoryBufferMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2708
|
||||
},
|
||||
"OriginalTitle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 3056
|
||||
},
|
||||
"Title": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 3120
|
||||
},
|
||||
"GetScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 3216
|
||||
},
|
||||
"CurrentScreenBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 2824
|
||||
},
|
||||
"ConsoleProcessList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 2800
|
||||
},
|
||||
"ProcessCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 2808
|
||||
},
|
||||
"HistoryList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": -360
|
||||
},
|
||||
"HistoryBufferCount": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": -352
|
||||
},
|
||||
"ExeAliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 3776
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 140
|
||||
},
|
||||
"_VECTOR": {
|
||||
"fields": {
|
||||
"Begin": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"End": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
}
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"EndCapacity": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned long"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_CONSOLE_PROCESS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ConsoleProcess": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_CONSOLE_PROCESS_HANDLE": {
|
||||
"fields": {
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 52
|
||||
},
|
||||
"_CONSOLE_PROCESS": {
|
||||
"fields": {
|
||||
"ProcessId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 28
|
||||
},
|
||||
"ThreadId": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 32
|
||||
},
|
||||
"ProcessHandle": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 24
|
||||
},
|
||||
"_COMMAND_HISTORY": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"CommandBucket": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_VECTOR"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"CommandCountMax": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 40
|
||||
},
|
||||
"Application": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_COMMAND"
|
||||
},
|
||||
"offset": 48
|
||||
},
|
||||
"ConsoleProcessHandle": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CONSOLE_PROCESS_HANDLE"
|
||||
}
|
||||
},
|
||||
"offset": 80
|
||||
},
|
||||
"Flags": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned short"
|
||||
},
|
||||
"offset": 88
|
||||
},
|
||||
"LastDisplayed": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 92
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 96
|
||||
},
|
||||
"_SCREEN_INFORMATION": {
|
||||
"fields": {
|
||||
"TextBufferInfo": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
},
|
||||
"Next": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_SCREEN_INFORMATION"
|
||||
}
|
||||
},
|
||||
"offset": 64
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_ROW_POINTER": {
|
||||
"fields": {
|
||||
"Row": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
|
||||
},
|
||||
"_ROWS_ARRAY": {
|
||||
"fields": {
|
||||
"Rows": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW_POINTER"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_TEXT_BUFFER_INFO": {
|
||||
"fields": {
|
||||
"ScreenX": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"ScreenY": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 10
|
||||
},
|
||||
"BufferRows": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROWS_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"BufferCapacity": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 10
|
||||
},
|
||||
"ThisBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": 40
|
||||
},
|
||||
"FirstRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"LastRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": 24
|
||||
},
|
||||
"BufferStart": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 88
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 72
|
||||
},
|
||||
"_CHAR_ROW_CELL": {
|
||||
"fields": {
|
||||
"Text": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_UNICODE_STRING"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"DbcsAttribute": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 2
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 3
|
||||
},
|
||||
"_CHAR_ROW_CELL_ARRAY": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_ROW": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_ROW"
|
||||
}
|
||||
},
|
||||
"offset": -88
|
||||
},
|
||||
"CharRow": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_CHAR_ROW_CELL_ARRAY"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"RowLength": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Index": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": -20
|
||||
},
|
||||
"RowLength2": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 8
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "short"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"TextBuffer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "_TEXT_BUFFER_INFO"
|
||||
}
|
||||
},
|
||||
"offset": -8
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 464
|
||||
},
|
||||
"_DEQUE": {
|
||||
"fields": {
|
||||
"Blink": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "void"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 8
|
||||
},
|
||||
"_EXE_ALIAS_LIST": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"ExeName": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"AliasList": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
}
|
||||
},
|
||||
"offset": 56
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 64
|
||||
},
|
||||
"_ALIAS": {
|
||||
"fields": {
|
||||
"ListEntry": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "nt_symbols!_LIST_ENTRY"
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Source": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Target": {
|
||||
"type": {
|
||||
"kind": "struct",
|
||||
"name": "_ALIAS_STRING"
|
||||
},
|
||||
"offset": 48
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
},
|
||||
"_ALIAS_STRING": {
|
||||
"fields": {
|
||||
"Chars": {
|
||||
"type": {
|
||||
"count": 1,
|
||||
"kind": "array",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "unsigned char"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Pointer": {
|
||||
"type": {
|
||||
"kind": "pointer",
|
||||
"subtype": {
|
||||
"kind": "base",
|
||||
"name": "string"
|
||||
}
|
||||
},
|
||||
"offset": 0
|
||||
},
|
||||
"Length": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 16
|
||||
},
|
||||
"Allocated": {
|
||||
"type": {
|
||||
"kind": "base",
|
||||
"name": "unsigned int"
|
||||
},
|
||||
"offset": 24
|
||||
}
|
||||
},
|
||||
"kind": "struct",
|
||||
"size": 32
|
||||
}
|
||||
},
|
||||
"metadata": {
|
||||
"producer": {
|
||||
"version": "0.0.1",
|
||||
"name": "Dave Lassalle",
|
||||
"datetime": "2024-07-31T15:05:35-06:00"
|
||||
},
|
||||
"format": "4.1.0"
|
||||
}
|
||||
}
|
||||
@@ -9,30 +9,42 @@ from volatility3.framework import constants
|
||||
class ROW(objects.StructType):
|
||||
"""A Row Structure."""
|
||||
|
||||
def _valid_dbcs(self, c):
|
||||
def _valid_dbcs(self, c, n):
|
||||
# TODO this need more research and testing
|
||||
# https://github.com/search?q=repo%3Amicrosoft%2Fterminal+DbcsAttr&type=code
|
||||
valid = c in (
|
||||
valid = n == 0 and c in (
|
||||
0x0,
|
||||
0x1,
|
||||
0x2,
|
||||
0x8,
|
||||
0x10,
|
||||
0x18,
|
||||
0x20,
|
||||
0x28,
|
||||
0x30,
|
||||
0x48,
|
||||
0x50,
|
||||
0x58,
|
||||
0x60,
|
||||
0x68,
|
||||
0x70,
|
||||
0x78,
|
||||
0x80,
|
||||
0x88,
|
||||
0xA8,
|
||||
0xB8,
|
||||
0xC0,
|
||||
0xC8,
|
||||
0x98,
|
||||
0xD8,
|
||||
0xE0,
|
||||
0xE8,
|
||||
0xF8,
|
||||
0xF0,
|
||||
0xA0,
|
||||
)
|
||||
# if not valid:
|
||||
# print("Bad Dbcs Attribute {}".format(hex(c)))
|
||||
if n == 0 and not valid:
|
||||
print("Bad Dbcs Attribute {}".format(hex(c)))
|
||||
return valid
|
||||
|
||||
def get_text(self, truncate=True):
|
||||
@@ -50,10 +62,9 @@ class ROW(objects.StructType):
|
||||
try:
|
||||
if char_row:
|
||||
line = "".join(
|
||||
# "{} {} =".format(char_row[i:i + 2].decode('utf-16le', errors='replace'), char_row[i+2]) if self._valid_dbcs(char_row[i+2]) else ""
|
||||
(
|
||||
char_row[i : i + 2].decode("utf-16le", errors="replace")
|
||||
if self._valid_dbcs(char_row[i + 2])
|
||||
if self._valid_dbcs(char_row[i + 2], char_row[i+1])
|
||||
else ""
|
||||
)
|
||||
for i in range(0, len(char_row), 3)
|
||||
@@ -68,12 +79,78 @@ class ROW(objects.StructType):
|
||||
return line
|
||||
|
||||
|
||||
class ALIAS(objects.StructType):
|
||||
"""An Alias Structure"""
|
||||
|
||||
def get_source(self):
|
||||
if self.Source.Length < 8:
|
||||
return self.Source.Chars.cast(
|
||||
"string",
|
||||
encoding="utf-16",
|
||||
errors="replace",
|
||||
max_length=self.Source.Length * 2,
|
||||
)
|
||||
elif self.Source.Length < 1024:
|
||||
return self.Source.Pointer.dereference().cast(
|
||||
"string", encoding="utf-16", errors="replace", max_length=512
|
||||
)
|
||||
|
||||
def get_target(self):
|
||||
if self.Target.Length < 8:
|
||||
return self.Target.Chars.cast(
|
||||
"string",
|
||||
encoding="utf-16",
|
||||
errors="replace",
|
||||
max_length=self.Target.Length * 2,
|
||||
)
|
||||
elif self.Target.Length < 1024:
|
||||
return self.Target.Pointer.dereference().cast(
|
||||
"string", encoding="utf-16", errors="replace", max_length=512
|
||||
)
|
||||
|
||||
class EXE_ALIAS_LIST(objects.StructType):
|
||||
"""An Exe Alias List Structure"""
|
||||
|
||||
def get_exename(self):
|
||||
exe_name = self.ExeName
|
||||
# Windows 10 22000 and Server 20348 removed the Pointer
|
||||
if isinstance(exe_name, objects.Pointer):
|
||||
exe_name = exe_name.dereference()
|
||||
return exe_name.get_string()
|
||||
|
||||
if self.ExeName.Length < 8:
|
||||
return self.ExeName.Chars.cast(
|
||||
"string",
|
||||
encoding="utf-16",
|
||||
errors="replace",
|
||||
max_length=self.ExeName.Length * 2,
|
||||
)
|
||||
elif self.ExeName.Length < 1024:
|
||||
return self.ExeName.Pointer.dereference().cast(
|
||||
"string", encoding="utf-16", errors="replace", max_length=512
|
||||
)
|
||||
|
||||
def get_aliases(self):
|
||||
"""Generator for the individual aliases for a
|
||||
particular executable."""
|
||||
for alias in self.AliasList.to_list(
|
||||
f"{self.get_symbol_table_name()}{constants.BANG}_ALIAS",
|
||||
"ListEntry",
|
||||
):
|
||||
yield alias
|
||||
|
||||
|
||||
class SCREEN_INFORMATION(objects.StructType):
|
||||
"""A Screen Information Structure."""
|
||||
|
||||
@property
|
||||
def ScreenX(self):
|
||||
return self.TextBufferInfo.BufferRows.Rows[0].Row.RowLength2
|
||||
# 22000 change from an array of pointers to _ROW to an array of _ROW
|
||||
row = self.TextBufferInfo.BufferRows.Rows[0]
|
||||
if hasattr(row, "Row"):
|
||||
return row.Row.RowLength2
|
||||
else:
|
||||
return row.RowLength2
|
||||
|
||||
@property
|
||||
def ScreenY(self):
|
||||
@@ -127,7 +204,9 @@ class SCREEN_INFORMATION(objects.StructType):
|
||||
|
||||
for i in range(capacity):
|
||||
index = (start + i) % capacity
|
||||
row = buffer_rows.Rows[index].Row
|
||||
row = buffer_rows.Rows[index]
|
||||
if hasattr(row, "Row"):
|
||||
row = row.Row
|
||||
try:
|
||||
text = row.get_text(truncate_lines)
|
||||
rows.append(text)
|
||||
@@ -138,9 +217,9 @@ class SCREEN_INFORMATION(objects.StructType):
|
||||
rows = self._truncate_rows(rows)
|
||||
|
||||
if rows:
|
||||
rows = ["=== Start of buffer ==="] + rows + ["=== End of buffer ==="]
|
||||
rows = ["=== START OF BUFFER ==="] + rows + ["=== END OF BUFFER ==="]
|
||||
else:
|
||||
rows = ["=== No buffer data found ==="]
|
||||
rows = ["=== NO BUFFER DATA FOUND ==="]
|
||||
return rows
|
||||
|
||||
|
||||
@@ -198,6 +277,17 @@ class CONSOLE_INFORMATION(objects.StructType):
|
||||
):
|
||||
yield cmd_hist
|
||||
|
||||
def get_exe_aliases(self):
|
||||
exe_alias_list = self.ExeAliasList
|
||||
# Windows 10 22000 and Server 20348 made this a Pointer
|
||||
if isinstance(exe_alias_list, objects.Pointer):
|
||||
exe_alias_list = exe_alias_list.dereference()
|
||||
for exe_alias_list_item in exe_alias_list.to_list(
|
||||
f"{self.get_symbol_table_name()}{constants.BANG}_EXE_ALIAS_LIST",
|
||||
"ListEntry"
|
||||
):
|
||||
yield exe_alias_list_item
|
||||
|
||||
def get_processes(self):
|
||||
for proc in self.ConsoleProcessList.dereference().to_list(
|
||||
f"{self.get_symbol_table_name()}{constants.BANG}_CONSOLE_PROCESS_LIST",
|
||||
@@ -331,6 +421,8 @@ class COMMAND_HISTORY(objects.StructType):
|
||||
|
||||
|
||||
win10_x64_class_types = {
|
||||
"_EXE_ALIAS_LIST": EXE_ALIAS_LIST,
|
||||
"_ALIAS": ALIAS,
|
||||
"_ROW": ROW,
|
||||
"_SCREEN_INFORMATION": SCREEN_INFORMATION,
|
||||
"_CONSOLE_INFORMATION": CONSOLE_INFORMATION,
|
||||
|
||||
Reference in New Issue
Block a user