Merge remote-tracking branch 'origin/Ghidra_11.2'

This commit is contained in:
Ryan Kurtz 2024-09-23 13:56:12 -04:00
commit ff6988ad32
5 changed files with 254 additions and 101 deletions

View File

@ -6,128 +6,133 @@
<ICON LOCATION="emulator32.png" />
<TOOL TOOL_NAME="Emulator" INSTANCE_NAME="">
<OPTIONS />
<PACKAGE NAME="Debugger">
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.gui.interpreters.DebuggerInterpreterPlugin" />
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.gui.tracermi.connection.TraceRmiConnectionManagerPlugin" />
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.gui.tracermi.launcher.TraceRmiLauncherServicePlugin" />
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.service.tracermi.TraceRmiPlugin" />
</PACKAGE>
<PACKAGE NAME="Ghidra Core">
<EXCLUDE CLASS="ghidra.plugins.fsbrowser.FileSystemBrowserPlugin" />
<INCLUDE CLASS="ghidra.app.plugin.core.editor.TextEditorManagerPlugin" />
<INCLUDE CLASS="ghidra.app.plugin.core.interpreter.InterpreterPanelPlugin" />
</PACKAGE>
<PACKAGE NAME="Debugger">
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.gui.objects.DebuggerObjectsPlugin" />
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.gui.target.DebuggerTargetsPlugin" />
<EXCLUDE CLASS="ghidra.app.plugin.core.debug.service.model.DebuggerModelServiceProxyPlugin" />
</PACKAGE>
<ROOT_NODE X_POS="984" Y_POS="4743" WIDTH="1920" HEIGHT="1017" EX_STATE="0" FOCUSED_OWNER="CodeBrowserPlugin" FOCUSED_NAME="Listing" FOCUSED_TITLE="Listing: ">
<SPLIT_NODE WIDTH="1918" HEIGHT="908" DIVIDER_LOCATION="767" ORIENTATION="VERTICAL">
<ROOT_NODE X_POS="320" Y_POS="192" WIDTH="1920" HEIGHT="1017" EX_STATE="0">
<SPLIT_NODE WIDTH="1906" HEIGHT="921" DIVIDER_LOCATION="767" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="100" HEIGHT="100" DIVIDER_LOCATION="0" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1918" HEIGHT="693" DIVIDER_LOCATION="251" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="3">
<COMPONENT_INFO NAME="DataTypes Provider" OWNER="DataTypeManagerPlugin" TITLE="Data Type Manager" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678283" />
<COMPONENT_INFO NAME="Program Tree" OWNER="ProgramTreePlugin" TITLE="Program Trees" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612505585920414" />
<COMPONENT_INFO NAME="Symbol Tree" OWNER="SymbolTreePlugin" TITLE="Symbol Tree" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612505585920408" />
<COMPONENT_INFO NAME="Debug Console" OWNER="DebuggerConsolePlugin" TITLE="Debug Console" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678282" />
</COMPONENT_NODE>
<SPLIT_NODE WIDTH="1906" HEIGHT="703" DIVIDER_LOCATION="251" ORIENTATION="HORIZONTAL">
<SPLIT_NODE WIDTH="477" HEIGHT="703" DIVIDER_LOCATION="433" ORIENTATION="VERTICAL">
<COMPONENT_NODE TOP_INFO="3">
<COMPONENT_INFO NAME="DataTypes Provider" OWNER="DataTypeManagerPlugin" TITLE="Data Type Manager" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629452" />
<COMPONENT_INFO NAME="Program Tree" OWNER="ProgramTreePlugin" TITLE="Program Trees" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004460958955487" />
<COMPONENT_INFO NAME="Symbol Tree" OWNER="SymbolTreePlugin" TITLE="Symbol Tree" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004460958955482" />
<COMPONENT_INFO NAME="Debug Console" OWNER="DebuggerConsolePlugin" TITLE="Debug Console" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629451" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Model" OWNER="DebuggerModelPlugin" TITLE="Model" ACTIVE="true" GROUP="Debugger.Core" INSTANCE_ID="3622004957652629465" />
</COMPONENT_NODE>
</SPLIT_NODE>
<SPLIT_NODE WIDTH="1293" HEIGHT="590" DIVIDER_LOCATION="785" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1386" HEIGHT="638" DIVIDER_LOCATION="705" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1434" HEIGHT="693" DIVIDER_LOCATION="679" ORIENTATION="HORIZONTAL">
<SPLIT_NODE WIDTH="971" HEIGHT="693" DIVIDER_LOCATION="506" ORIENTATION="VERTICAL">
<SPLIT_NODE WIDTH="1425" HEIGHT="703" DIVIDER_LOCATION="679" ORIENTATION="HORIZONTAL">
<SPLIT_NODE WIDTH="965" HEIGHT="703" DIVIDER_LOCATION="506" ORIENTATION="VERTICAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Listing" OWNER="DebuggerListingPlugin" TITLE="Dynamic" ACTIVE="true" GROUP="Core" INSTANCE_ID="3527612550024571272" />
<COMPONENT_INFO NAME="Listing" OWNER="DebuggerListingPlugin" TITLE="Dynamic" ACTIVE="true" GROUP="Core" INSTANCE_ID="3622004957275142089" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Listing" OWNER="CodeBrowserPlugin" TITLE="Listing: " ACTIVE="true" GROUP="Core" INSTANCE_ID="3527612550024571270" />
<COMPONENT_INFO NAME="Listing" OWNER="CodeBrowserPlugin" TITLE="Listing: " ACTIVE="true" GROUP="Core" INSTANCE_ID="3622004957275142087" />
</COMPONENT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Decompiler" OWNER="DecompilePlugin" TITLE="Decompiler" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612505585920415" />
<COMPONENT_INFO NAME="Bytes" OWNER="ByteViewerPlugin" TITLE="Bytes: No Program" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571265" />
<COMPONENT_INFO NAME="Data Window" OWNER="DataWindowPlugin" TITLE="Defined Data" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678290" />
<COMPONENT_INFO NAME="Defined Strings" OWNER="ViewStringsPlugin" TITLE="Defined Strings" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678297" />
<COMPONENT_INFO NAME="Equates Table" OWNER="EquateTablePlugin" TITLE="Equates Table" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571268" />
<COMPONENT_INFO NAME="External Programs" OWNER="ReferencesPlugin" TITLE="External Programs" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571271" />
<COMPONENT_INFO NAME="Functions Window" OWNER="FunctionWindowPlugin" TITLE="Functions" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571274" />
<COMPONENT_INFO NAME="Relocation Table" OWNER="RelocationTablePlugin" TITLE="Relocation Table" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678296" />
<COMPONENT_INFO NAME="Modules" OWNER="DebuggerModulesPlugin" TITLE="Modules" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678286" />
<COMPONENT_INFO NAME="Registers" OWNER="DebuggerRegistersPlugin" TITLE="Registers" ACTIVE="true" GROUP="Debugger.Core" INSTANCE_ID="3527612550976678298" />
<COMPONENT_INFO NAME="Breakpoints" OWNER="DebuggerBreakpointsPlugin" TITLE="Breakpoints" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678295" />
<COMPONENT_INFO NAME="Decompiler" OWNER="DecompilePlugin" TITLE="Decompile" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957275142080" />
<COMPONENT_INFO NAME="Bytes" OWNER="ByteViewerPlugin" TITLE="Bytes: No Program" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142082" />
<COMPONENT_INFO NAME="Data Window" OWNER="DataWindowPlugin" TITLE="Defined Data" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629460" />
<COMPONENT_INFO NAME="Defined Strings" OWNER="ViewStringsPlugin" TITLE="Defined Strings" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629468" />
<COMPONENT_INFO NAME="Equates Table" OWNER="EquateTablePlugin" TITLE="Equates Table" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142085" />
<COMPONENT_INFO NAME="External Programs" OWNER="ReferencesPlugin" TITLE="External Programs" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142088" />
<COMPONENT_INFO NAME="Functions Window" OWNER="FunctionWindowPlugin" TITLE="Functions" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142091" />
<COMPONENT_INFO NAME="Relocation Table" OWNER="RelocationTablePlugin" TITLE="Relocation Table" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629467" />
<COMPONENT_INFO NAME="Modules" OWNER="DebuggerModulesPlugin" TITLE="Modules" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629455" />
<COMPONENT_INFO NAME="Registers" OWNER="DebuggerRegistersPlugin" TITLE="Registers" ACTIVE="true" GROUP="Debugger.Core" INSTANCE_ID="3622004957652629469" />
<COMPONENT_INFO NAME="Breakpoints" OWNER="DebuggerBreakpointsPlugin" TITLE="Breakpoints" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629466" />
<COMPONENT_INFO NAME="DebuggerInterpreterPlugin" OWNER="InterpreterPanelPlugin" TITLE="Interpreter" ACTIVE="false" GROUP="Default" INSTANCE_ID="3381048220378451114" />
<COMPONENT_INFO NAME="Interpreter" OWNER="InterpreterPanelPlugin" TITLE="Interpreter" ACTIVE="false" GROUP="Default" INSTANCE_ID="3398988136451618475" />
</COMPONENT_NODE>
</SPLIT_NODE>
<SPLIT_NODE WIDTH="1386" HEIGHT="189" DIVIDER_LOCATION="495" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Data Type Preview" OWNER="DataTypePreviewPlugin" TITLE="Data Type Preview" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678279" />
<COMPONENT_INFO NAME="Data Type Preview" OWNER="DataTypePreviewPlugin" TITLE="Data Type Preview" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629448" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Virtual Disassembler - Current Instruction" OWNER="DisassembledViewPlugin" TITLE="Disassembled View" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571267" />
<COMPONENT_INFO NAME="Virtual Disassembler - Current Instruction" OWNER="DisassembledViewPlugin" TITLE="Disassembled View" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142084" />
</COMPONENT_NODE>
</SPLIT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Bookmarks" OWNER="BookmarkPlugin" TITLE="Bookmarks" ACTIVE="false" GROUP="Core.Bookmarks" INSTANCE_ID="3527612505585920412" />
<COMPONENT_INFO NAME="Bookmarks" OWNER="BookmarkPlugin" TITLE="Bookmarks" ACTIVE="false" GROUP="Core.Bookmarks" INSTANCE_ID="3622004460958955486" />
</COMPONENT_NODE>
</SPLIT_NODE>
</SPLIT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Call Trees" OWNER="CallTreePlugin" TITLE="Function Call Trees" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612505585920409" />
<COMPONENT_INFO NAME="Function Call Trees" OWNER="CallTreePlugin" TITLE="Function Call Trees" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004460958955483" />
</COMPONENT_NODE>
</SPLIT_NODE>
<SPLIT_NODE WIDTH="1918" HEIGHT="211" DIVIDER_LOCATION="348" ORIENTATION="HORIZONTAL">
<SPLIT_NODE WIDTH="1906" HEIGHT="214" DIVIDER_LOCATION="348" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="1">
<COMPONENT_INFO NAME="Regions" OWNER="DebuggerRegionsPlugin" TITLE="Regions" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678293" />
<COMPONENT_INFO NAME="Stack" OWNER="DebuggerStackPlugin" TITLE="Stack" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678280" />
<COMPONENT_INFO NAME="Console" OWNER="ConsolePlugin" TITLE="Console" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550024571264" />
<COMPONENT_INFO NAME="Watches" OWNER="DebuggerWatchesPlugin" TITLE="Watches" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612505585920407" />
<COMPONENT_INFO NAME="Regions" OWNER="DebuggerRegionsPlugin" TITLE="Regions" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629463" />
<COMPONENT_INFO NAME="Stack" OWNER="DebuggerStackPlugin" TITLE="Stack" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629449" />
<COMPONENT_INFO NAME="Console" OWNER="ConsolePlugin" TITLE="Console" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957275142081" />
<COMPONENT_INFO NAME="Watches" OWNER="DebuggerWatchesPlugin" TITLE="Watches" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004460958955481" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Threads" OWNER="DebuggerThreadsPlugin" TITLE="Threads" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678284" />
<COMPONENT_INFO NAME="Time" OWNER="DebuggerTimePlugin" TITLE="Time" ACTIVE="true" GROUP="Default" INSTANCE_ID="3527612550976678287" />
<COMPONENT_INFO NAME="Threads" OWNER="DebuggerThreadsPlugin" TITLE="Threads" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629454" />
<COMPONENT_INFO NAME="Time" OWNER="DebuggerTimePlugin" TITLE="Time" ACTIVE="true" GROUP="Default" INSTANCE_ID="3622004957652629457" />
<COMPONENT_INFO NAME="Pcode Stepper" OWNER="DebuggerPcodeStepperPlugin" TITLE="Pcode Stepper" ACTIVE="false" GROUP="Default" INSTANCE_ID="3381240965691561509" />
</COMPONENT_NODE>
</SPLIT_NODE>
</SPLIT_NODE>
<WINDOW_NODE X_POS="426" Y_POS="178" WIDTH="1033" HEIGHT="689">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Script Manager" OWNER="GhidraScriptMgrPlugin" TITLE="Script Manager" ACTIVE="false" GROUP="Script Group" INSTANCE_ID="3527612505585920410" />
<COMPONENT_INFO NAME="Script Manager" OWNER="GhidraScriptMgrPlugin" TITLE="Script Manager" ACTIVE="false" GROUP="Script Group" INSTANCE_ID="3622004460958955484" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="423" Y_POS="144" WIDTH="927" HEIGHT="370">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Memory Map" OWNER="MemoryMapPlugin" TITLE="Memory Map" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612505585920405" />
<COMPONENT_INFO NAME="Memory Map" OWNER="MemoryMapPlugin" TITLE="Memory Map" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004460958955479" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="383" Y_POS="7" WIDTH="1020" HEIGHT="1038">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Graph" OWNER="FunctionGraphPlugin" TITLE="Function Graph" ACTIVE="false" GROUP="Function Graph" INSTANCE_ID="3527612550976678299" />
<COMPONENT_INFO NAME="Function Graph" OWNER="FunctionGraphPlugin" TITLE="Function Graph" ACTIVE="false" GROUP="Function Graph" INSTANCE_ID="3622004957652629470" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="550" Y_POS="206" WIDTH="655" HEIGHT="509">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Register Manager" OWNER="RegisterPlugin" TITLE="Register Manager" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571273" />
<COMPONENT_INFO NAME="Register Manager" OWNER="RegisterPlugin" TITLE="Register Manager" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142090" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="287" Y_POS="186" WIDTH="1424" HEIGHT="666">
<SPLIT_NODE WIDTH="1408" HEIGHT="559" DIVIDER_LOCATION="573" ORIENTATION="HORIZONTAL">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Symbol Table" OWNER="SymbolTablePlugin" TITLE="Symbol Table" ACTIVE="false" GROUP="symbolTable" INSTANCE_ID="3527612550976678291" />
<COMPONENT_INFO NAME="Symbol Table" OWNER="SymbolTablePlugin" TITLE="Symbol Table" ACTIVE="false" GROUP="symbolTable" INSTANCE_ID="3622004957652629461" />
</COMPONENT_NODE>
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Symbol References" OWNER="SymbolTablePlugin" TITLE="Symbol References" ACTIVE="false" GROUP="symbolTable" INSTANCE_ID="3527612550976678292" />
<COMPONENT_INFO NAME="Symbol References" OWNER="SymbolTablePlugin" TITLE="Symbol References" ACTIVE="false" GROUP="symbolTable" INSTANCE_ID="3622004957652629462" />
</COMPONENT_NODE>
</SPLIT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Checksum Generator" OWNER="ComputeChecksumsPlugin" TITLE="Checksum Generator" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550024571269" />
<COMPONENT_INFO NAME="Checksum Generator" OWNER="ComputeChecksumsPlugin" TITLE="Checksum Generator" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957275142086" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Tags" OWNER="FunctionTagPlugin" TITLE="Function Tags" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612505585920413" />
<COMPONENT_INFO NAME="Function Tags" OWNER="FunctionTagPlugin" TITLE="Function Tags" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629453" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Comment Window" OWNER="CommentWindowPlugin" TITLE="Comments" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678289" />
<COMPONENT_INFO NAME="Comment Window" OWNER="CommentWindowPlugin" TITLE="Comments" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629459" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="-1" Y_POS="-1" WIDTH="0" HEIGHT="0">
@ -137,7 +142,7 @@
</WINDOW_NODE>
<WINDOW_NODE X_POS="0" Y_POS="0" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Function Call Graph" OWNER="FunctionCallGraphPlugin" TITLE="Function Call Graph" ACTIVE="false" GROUP="Function Call Graph" INSTANCE_ID="3527612550976678281" />
<COMPONENT_INFO NAME="Function Call Graph" OWNER="FunctionCallGraphPlugin" TITLE="Function Call Graph" ACTIVE="false" GROUP="Function Call Graph" INSTANCE_ID="3622004957652629450" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="658" Y_POS="1489" WIDTH="470" HEIGHT="540">
@ -147,7 +152,7 @@
</WINDOW_NODE>
<WINDOW_NODE X_POS="0" Y_POS="0" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="BundleManager" OWNER="GhidraScriptMgrPlugin" TITLE="Bundle Manager" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612505585920411" />
<COMPONENT_INFO NAME="BundleManager" OWNER="GhidraScriptMgrPlugin" TITLE="Bundle Manager" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004460958955485" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="2105" Y_POS="966" WIDTH="1122" HEIGHT="546">
@ -157,21 +162,43 @@
</WINDOW_NODE>
<WINDOW_NODE X_POS="0" Y_POS="0" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Static Mappings" OWNER="DebuggerStaticMappingPlugin" TITLE="Static Mappings" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678294" />
<COMPONENT_INFO NAME="Static Mappings" OWNER="DebuggerStaticMappingPlugin" TITLE="Static Mappings" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629464" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="1429" Y_POS="806" WIDTH="982" HEIGHT="580">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Memview" OWNER="DebuggerMemviewPlugin" TITLE="Memview" ACTIVE="false" GROUP="Default" INSTANCE_ID="3527612550976678288" />
<COMPONENT_INFO NAME="Memview" OWNER="DebuggerMemviewPlugin" TITLE="Memview" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629458" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="0" Y_POS="0" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Memory" OWNER="DebuggerMemoryBytesPlugin" TITLE="Memory" ACTIVE="false" GROUP="disconnected" INSTANCE_ID="3527612505585920404" />
<COMPONENT_INFO NAME="Memory" OWNER="DebuggerMemoryBytesPlugin" TITLE="Memory" ACTIVE="false" GROUP="disconnected" INSTANCE_ID="3622004460958955478" />
</COMPONENT_NODE>
</WINDOW_NODE>
<WINDOW_NODE X_POS="0" Y_POS="0" WIDTH="0" HEIGHT="0">
<COMPONENT_NODE TOP_INFO="0">
<COMPONENT_INFO NAME="Jython" OWNER="InterpreterPanelPlugin" TITLE="Jython" ACTIVE="false" GROUP="Default" INSTANCE_ID="3622004957652629456" />
</COMPONENT_NODE>
</WINDOW_NODE>
</ROOT_NODE>
<PREFERENCES>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.breakpoint.DebuggerBreakpointsProvider$BreakpointLocationTableModel:State:Name:Address:Trace:Threads:Comment:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.State" WIDTH="24" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Name" WIDTH="100" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Address" WIDTH="100" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Trace" WIDTH="100" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Threads" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Comment" WIDTH="100" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Sleigh" WIDTH="30" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="2" SORT_DIRECTION="ascending" SORT_ORDER="1" />
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="1" SORT_DIRECTION="ascending" SORT_ORDER="2" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.memview.MemviewMapModel:Name:Start Address:End Address:Start Time:End Time:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -291,6 +318,21 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.model.PathTableModel:Path:Key:Value:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TracePathStringColumn.Path" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TracePathLastKeyColumn.Key" WIDTH="115" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TracePathValueColumn.Value" WIDTH="115" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TracePathLastLifespanColumn.Life" WIDTH="114" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TracePathLastLifespanPlotColumn.Plot" WIDTH="500" VISIBLE="false" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="1" SORT_DIRECTION="ascending" SORT_ORDER="1" />
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="3" SORT_DIRECTION="ascending" SORT_ORDER="2" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.equate.EquateTableModel:Name:Value:# Refs:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -394,6 +436,20 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.console.DebuggerConsoleProvider$LogTableModel:Icon:Message:Actions:Time:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Icon" WIDTH="24" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Message" WIDTH="229" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Actions" WIDTH="128" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Time" WIDTH="94" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="2" SORT_DIRECTION="descending" SORT_ORDER="1" />
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="3" SORT_DIRECTION="descending" SORT_ORDER="2" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.breakpoint.BreakpointTableModel:Enabled:Address:Kind:Threads:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -498,9 +554,9 @@
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Fav" WIDTH="38" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.#" WIDTH="38" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Name" WIDTH="63" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Value" WIDTH="123" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Type" WIDTH="73" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Repr" WIDTH="122" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Value" WIDTH="122" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Type" WIDTH="72" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Repr" WIDTH="121" VISIBLE="true" />
<COLUMN NAME="ghidra.taint.gui.field.TaintDebuggerRegisterColumnFactory$1.Taint" WIDTH="500" VISIBLE="false" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="0" SORT_DIRECTION="descending" SORT_ORDER="1" />
@ -620,11 +676,11 @@
<PREFERENCE_STATE NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel:Snap:Timestamp:Event Thread:Schedule:Description:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Snap" WIDTH="181" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Timestamp" WIDTH="341" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Event Thread" WIDTH="181" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Schedule" WIDTH="202" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Description" WIDTH="341" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Snap" WIDTH="180" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Timestamp" WIDTH="339" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Event Thread" WIDTH="180" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Schedule" WIDTH="201" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Description" WIDTH="338" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="0" SORT_DIRECTION="ascending" SORT_ORDER="1" />
</TABLE_SORT_STATE>
@ -780,10 +836,10 @@
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionPathColumn.Path" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionStartColumn.Start" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionEndColumn.End" WIDTH="92" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionStartColumn.Start" WIDTH="90" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionEndColumn.End" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionNameColumn.Name" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionModuleNameColumn.Module Name" WIDTH="92" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionModuleNameColumn.Module Name" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerSectionsPanel$SectionLengthColumn.Length" WIDTH="91" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="1" SORT_DIRECTION="ascending" SORT_ORDER="1" />
@ -922,12 +978,12 @@
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.watch.DebuggerWatchesProvider$WatchTableModel:Expression:Address:Symbol:Value:Type:Repr:Error:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Expression" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Address" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Expression" WIDTH="94" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Address" WIDTH="94" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Symbol" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Value" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Value" WIDTH="94" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Type" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Repr" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Repr" WIDTH="94" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Error" WIDTH="94" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="0" SORT_DIRECTION="ascending" SORT_ORDER="1" />
@ -946,6 +1002,20 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.model.ObjectTableModel:Key:Value:Life:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueKeyColumn.Key" WIDTH="127" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueValColumn.Value" WIDTH="127" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueLifeColumn.Life" WIDTH="126" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueLifePlotColumn.Plot" WIDTH="500" VISIBLE="false" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="0" SORT_DIRECTION="ascending" SORT_ORDER="1" />
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="2" SORT_DIRECTION="ascending" SORT_ORDER="2" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.listing.DebuggerModuleImportDialog$FileTableModel:Remove:Ignore:Path:Import:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -995,13 +1065,13 @@
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.State" WIDTH="24" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Name" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Address" WIDTH="95" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Image" WIDTH="65" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Length" WIDTH="42" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Kinds" WIDTH="94" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Name" WIDTH="93" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Address" WIDTH="93" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Image" WIDTH="63" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Length" WIDTH="41" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Kinds" WIDTH="92" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Locations" WIDTH="18" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Sleigh" WIDTH="24" VISIBLE="true" />
<COLUMN NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel$EnumeratedDynamicTableColumn.Sleigh" WIDTH="30" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="3" SORT_DIRECTION="ascending" SORT_ORDER="1" />
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="2" SORT_DIRECTION="ascending" SORT_ORDER="2" />
@ -1061,6 +1131,21 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModuleTableModel:Path:Base:Max:Name:Mapping:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModulePathColumn.Path" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModuleBaseColumn.Base" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModuleMaxColumn.Max" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModuleNameColumn.Name" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModuleMappingColumn.Mapping" WIDTH="91" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.modules.DebuggerModulesPanel$ModuleLengthColumn.Length" WIDTH="90" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="1" SORT_DIRECTION="ascending" SORT_ORDER="1" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel:Snap:Timestamp:Event Thread:Ticks:Description:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -1075,6 +1160,24 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadTableModel:Path:Name:PC:Function:Module:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadPathColumn.Path" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadNameColumn.Name" WIDTH="248" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadPcColumn.PC" WIDTH="248" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadFunctionColumn.Function" WIDTH="247" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadModuleColumn.Module" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadSpColumn.SP" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadStateColumn.State" WIDTH="248" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadCommentColumn.Comment" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.thread.DebuggerThreadsPanel$ThreadPlotColumn.Plot" WIDTH="247" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="1" SORT_DIRECTION="ascending" SORT_ORDER="1" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.strings.ViewStringsTableModel:Location:String:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -1134,6 +1237,19 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="ghidra.app.plugin.core.debug.gui.stack.DebuggerStackPanel$StackTableModel:Level:PC:Function:Module:">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.stack.DebuggerStackPanel$FrameLevelColumn.Level" WIDTH="33" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.stack.DebuggerStackPanel$FramePcColumn.PC" WIDTH="209" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.stack.DebuggerStackPanel$FrameFunctionColumn.Function" WIDTH="209" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.stack.DebuggerStackPanel$FrameModuleColumn.Module" WIDTH="209" VISIBLE="true" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="0" SORT_DIRECTION="ascending" SORT_ORDER="1" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="docking.widgets.table.DefaultEnumeratedColumnTableModel:Dynamic Address:Static Program:Static Address:Length:Shift:Lifespan:">
<XML NAME="COLUMN_DATA">
<Table_State>
@ -1256,10 +1372,10 @@
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionKeyColumn.Key" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionPathColumn.Path" WIDTH="500" VISIBLE="false" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionNameColumn.Name" WIDTH="142" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionStartColumn.Start" WIDTH="142" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionEndColumn.End" WIDTH="142" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionLengthColumn.Length" WIDTH="142" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionNameColumn.Name" WIDTH="141" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionStartColumn.Start" WIDTH="141" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionEndColumn.End" WIDTH="141" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionLengthColumn.Length" WIDTH="141" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionReadColumn.Read" WIDTH="32" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionWriteColumn.Write" WIDTH="32" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.memory.DebuggerRegionsPanel$RegionExecuteColumn.Execute" WIDTH="32" VISIBLE="true" />
@ -1269,7 +1385,23 @@
</Table_State>
</XML>
</PREFERENCE_STATE>
<PREFERENCE_STATE NAME="DEFAULT">
<XML NAME="COLUMN_DATA">
<Table_State>
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueKeyColumn.Key" WIDTH="115" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueValColumn.Value" WIDTH="115" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueLifeColumn.Life" WIDTH="114" VISIBLE="true" />
<COLUMN NAME="ghidra.app.plugin.core.debug.gui.model.columns.TraceValueLifePlotColumn.Plot" WIDTH="500" VISIBLE="false" />
<TABLE_SORT_STATE>
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="0" SORT_DIRECTION="ascending" SORT_ORDER="1" />
<COLUMN_SORT_STATE COLUMN_MODEL_INDEX="2" SORT_DIRECTION="ascending" SORT_ORDER="2" />
</TABLE_SORT_STATE>
</Table_State>
</XML>
</PREFERENCE_STATE>
</PREFERENCES>
<EXTENSIONS>
</EXTENSIONS>
</TOOL>
</TOOL_CONFIG>

View File

@ -46,9 +46,9 @@
<br>
<li>Platforms Supported:</li>
<ul>
<li>Microsoft Windows 7 or 10 (64-bit)</li>
<li>Linux (64-bit, CentOS 7 is preferred)</li>
<li>macOS (OS X) 10.8.3+ (Mountain Lion or later)</li>
<li>Microsoft Windows 10 or later (64-bit)</li>
<li>Linux (64-bit)</li>
<li>macOS 10.13 or later</li>
</ul>
@ -419,13 +419,18 @@ Before you can do anything else, you must first create a project. Projects are u
<li>Go to <b>File->Import File...</b></li>
<li>Browse to the program you want to import. Click on &quot;supported formats&quot; if you want to see a list of formats Ghidra supports. Ghidra can import (PE, ELF, raw binary, intel hex, gzf (ghidra zip file), etc.)</li>
<li><b>Recognized type</b>: If recognizable, Ghidra will fill in the correct file format otherwise it will show "raw binary" and you must choose the correct language/compiler pair.</li>
<li><b>Raw Binary</b>: You may always choose raw binary if you do not want any imported information and you must choose the correct language/compiler pair. </li>
<li><b>Raw Binary</b>: You may always choose raw binary if you do not want any imported information and you must choose the correct language/compiler pair. </li>
<li>Choose a new project folder if you want the loading programs in a subfolder.</li>
<li>Options:</li>
<ul>
<li>The Library Search Path is a list of folders that Ghidra checks for dynamically linked library (DLL) files. If your folder is not on the list, add it using the green plus button.</li>
<li>There is an option to attempt to load all related dynamically linked library files into your project at the same time as the loading program. This option also links all DLL calls to their external program location so that you can navigate to them. <b>NOTE: This option only works for programs containing enough metadata to determine which DLL(s) to load.</b></li>
</ul>
<li>Options Button:</li>
<ul>
<li>There are several import options including a few for importing and linking dynamically linked library (DLL) files along with your program. </li>
<ul>
<li>You can choose to use libraries already in your project or import them from disk</li>
<li>You can edit the list of paths to search for on disk libraries</li>
<li>You can choose a subfolder in your project to save them</li>
<li>Hit F1 on the Options window to see more information about all of the import options.
</ul>
</ul>
</ol>
</p>
</div>
@ -634,6 +639,7 @@ Before you can do anything else, you must first create a project. Projects are u
<li>Hover on icons to see their function</li>
<li>Closing a tool vs. exiting Ghidra</li>
<li>Cursor vs. Selection driven actions</li>
<li>Themes</li>
</ul>
<div role="note">
<p>
@ -651,6 +657,7 @@ Before you can do anything else, you must first create a project. Projects are u
<li>Main menus and sub-menus in general are used for global actions. The right-click menu is context-sensitive, which means that different actions are available on the right-click menu depending on what item your mouse is on.</li>
<li>If there is no selection, many actions act only on the current cursor location. When there is a selection, these actions will act on an entire selection.</li>
<li><b>Common Windows Menu icons</b> The last several icons on the icon bar correspond to some of the common items in the Windows menu: Bookmark manager, ByteViewer, Function Call Tree, Data Type Manager, Decompiler, Function Graph, Script manager, Memory Map, Register Manager, Symbol Table, Symbol References, Symbol Tree. These will be covered separately later.</li>
<li><b>Themes</b> You can change the look and feel of Ghidra to include colors, fonts and such using themes. To do so, choose Edit->Theme... from the Project Manager window. You can switch to a new theme (for example Dark Theme), configure the current theme, create a new theme, import an existing theme that someone else created, export a theme you created, or delete a theme. </li>
</ul>
</p>
</div>
@ -968,7 +975,7 @@ Before you can do anything else, you must first create a project. Projects are u
<li><b>Navigation</b> You can navigate by address or label column. Just click on the value in the column to start navigation.</li>
<li><b>Sorting</b> You can sort by any column, ascending or descending. To sort, click on the top of the column and you will see a stair step indicating ascending or descending. Then click to reverse. You can sub-sort by doing <b>Ctrl-click</b> on the other secondary columns</li>
<li><b>Filtering/Filter Options</b> You can type the filter value in the bottom text box and press enter. The filter option has a default setting that will filter out any row that does not contain the text in the filter unless you change the default option using the button to the right of the filter. Other filter options include: <b>Starts With</b>, Matches Exactly</b>, <b>Regular Expressions</b>, <b>Case Sensitive</b>, Inverting the filter</b>, and <b>Multi-Term Filtering</b>.</li>
<li><b>Filtering/Filter Options</b> You can type the filter value in the bottom text box and press enter. The filter option has a default setting that will filter out any row that does not contain the text in the filter unless you change the default option using the <b>Filter Settings</b> button to the right of the filter. Other filter settings include: <b>Starts With</b>, <b>Matches Exactly</b>, <b>Regular Expressions</b>, <b>Case Sensitive</b>, <b>Inverting the filter</b>, and <b>Multi-Term Filtering</b>. There is also a <b>Create Column Filter</b> button which will allow for more complex filtering on a specific column or using set operations on multiple column filters.</li>
<li><b>Add/remove columns</b> You can right-click on any column and choose to remove it or add a new column next to it. </li>
<li><b>Move columns</b> You can move columns by clicking, dragging, and letting go of the click where you want the column to end up.</li>
<li><b>Column settings</b> Some columns have special settings you can change using the right-click menu.</li>
@ -1624,10 +1631,12 @@ Before you can do anything else, you must first create a project. Projects are u
<li>GZF (Ghidra Zip File)</li>
<li>XML</li>
<li>HTML</li>
<li>Binary</li>
<li>Raw Bytes</li>
<li>Intel Hex</li>
<li>C code (.c and .h files)</li>
<li>Ascii</li>
<li>Original File</li>
<li>SARIF</li>
</ul>
<div role="note">
<p>
@ -1638,10 +1647,13 @@ Before you can do anything else, you must first create a project. Projects are u
<li><b>Ghidra Zip file (GZF)</b> uses custom format to compress all information contained in a Ghidra program so that users can share program information. </li>
<li><b>XML</b> Used to export information about the current program, to other tools if an importer has been written to recognize it in the other tool. There is potential loss of information due to inconsistencies between tools. NOTE: An exemplar IdaPro set of plugins/loaders are included in ghidra_<version>/Extensions/IDAPro. Also included is an IdaPro export plugin that creates XML that Ghidra can import.</li>
<li><b>HTML</b> exports selection or entire program as navigable html</li>
<li><b>Binary</b> exports selection or entire program as binary</li>
<li><b>Raw Bytes</b> exports selection or entire program as binary. This does not preserve the original file layout unless there was only one memory block in the original file.</li>
<li><b>Intel Hex</b> exports selection or entire program as Intel hex format</li>
<li><b>C</b> exports selection or entire program as C code (Including corresponding .h file)</li>
<li><b>Ascii</b> exports selection or entire program as printable Ascii file</li>
<li><b>Original File</b> Writes a program back to its original file layout. By default, any file-backed bytes that were modified by the user in the program database will be reflected in the new file. Optionally, the program can be written back to its unmodified file bytes, discarding all user modifications.</li>
<li><b>SARIF</b> Creates SARIF files that contains information from a Ghidra program so that users can share program information.</li>
</ul>
</ul>
</p>
@ -1832,10 +1844,13 @@ Before you can do anything else, you must first create a project. Projects are u
<ul>
<li>To open the Search Memory dialog go to <b>Search->Memory...</b></li>
<ul>
<li>Allows users to search for byte(s) contained in program memory</li>
<li>This dialog allows users to search for byte(s) contained in program memory</li>
<li>Can limit to a selection</li>
<li>Can enter search value as hex, string, decimal, binary or regular expression. Choosing these options brings up other sub-options if applicable (i.e., if you pick <b>String</b> you will see a sub-menu allowing you to choose case-sensitive or unicode)</li>
<li>Can enter search value as hex, string, decimal, binary, float, double or regular expression. </li>
<li>There is an options panel which allows you to set various options such as endianess, alignment, size, signedness, encoding, case sensitiveness, and whether bytes are in instructions, defined data, or undefined data and whether in loaded memory blocks or other types of blocks.</li>
<li>Using regular expressions in search memory allow a more flexible byte pattern search such as searching for two numerical digits followed by three ASCII characters without knowing the exact values.</li>
<li>After doing one search, the user can use the New Search pull down to perform set operations between the first search and a follow-on search.</li>
<li>There is a scan panel that can be used to rescan the bytes in the current search results table to see if any of the found bytes are the same, have changed, have increased, or have decreased.</li>
</ul>
</ul>
</p>
@ -1858,7 +1873,7 @@ Before you can do anything else, you must first create a project. Projects are u
<b><u>Notes:</u></b>
<ul>
<li>To open the Search for Strings dialog go to <b>Search->Search for Strings...</b></li>
<li>To open the Search for Strings dialog go to <b>Search->for Strings...</b></li>
<ul>
<li>Allows users to search for potential strings found in all or selected portion of memory.</li>
<li>By default searches for null terminated ASCII and unicode.</li>
@ -1883,7 +1898,10 @@ Before you can do anything else, you must first create a project. Projects are u
<li>Can change the offset of the beginning of the string if there are ASCII chars at the beginning that do not belong in your string.</li>
<li>Can have it include alignment nulls at the end of the string. The number of nulls included is based on the alignment value chosen.</li>
</ul>
</ul>
<li>There is a similar string search that allows you to search for strings with other encodings beyond the simple string search. To run it choose <b>Search -> for Encoded Strings...</b> It is similar to search for strings but will show strings using the given encoding. You can also choose to limit the search to a specific script (ie alphabet), translate the found strings, and more. Do F1 on this action to get more detailed information.</li>
</ul>
</p>
</div>
</section>
@ -2164,6 +2182,7 @@ Before you can do anything else, you must first create a project. Projects are u
<li>To open the Defined Functions Window go to <b>Window->Functions</b></li>
<ul>
<li>This table lists all functions in the current program</li>
<li>Note: One cool thing you can do with this table is select a subset of the functions and choose <b>Compare Function(s)</b> to see a side by side comparison view of the functions that you chose. For more info about this table, hit F1 while it is open.</li>
</ul>
<li>To open the Defined Strings Window go to <b>Window->Defined Strings</b></li>
<ul>
@ -2509,6 +2528,8 @@ Before you can do anything else, you must first create a project. Projects are u
<li>By default the Function Call Trees show all calls in address order to or from the current function. There is an option to collapse any duplicates and show each call once.</li>
<li>Optionally toggle whether Listing navigates to currently selected function.</li>
<li>Optionally toggle whether Function Call Trees updates when navigating to new function in Listing.</li>
<li>There is an option in the black triangle pull down to show or not show thunks to functions in the tree.</li>
<li>There is an option in the black triangle pull down to show or not show the namespace of the function names in the tree.</li>
</ul>

View File

@ -1,6 +1,6 @@
The Student Guide can be used in a classroom setting and can also be used as a self-paced tutorial. Use the slides "withNotes" to see more details about each slide.
NOTE: Microsoft Edge does not correctly render the class slides. To get the slides to render correctly, click on the "..." in top right of the Edge browser and then click once on zoom +.
NOTE: Some versions of Microsoft Edge do not correctly render the class slides. To get the slides to render correctly, click on the "..." in top right of the Edge browser and then click once on zoom +.
If using Internet Explorer or Edge, ensure that your browser is the most recent version (must be using document mode 10+)

View File

@ -47,9 +47,9 @@
<br>
<li>Platforms Supported:</li>
<ul>
<li>Microsoft Windows 7 or 10 (64-bit)</li>
<li>Linux (64-bit, CentOS 7 is preferred)</li>
<li>macOS (OS X) 10.8.3+ (Mountain Lion or later)</li>
<li>Microsoft Windows 10 or later (64-bit)</li>
<li>Linux (64-bit)</li>
<li>macOS 10.13 or later</li>
</ul>
</ul>

View File

@ -1,5 +1,5 @@
The slides in this folder can be used in a classroom setting and can also be used as a self-paced tutorials. Use the slides "withNotes" to see more details about each slide.
NOTE: Microsoft Edge does not correctly render the class slides. To get the slides to render correctly, click on the "..." in top right of the Edge browser and then click once on zoom +.
NOTE: Some versions of Microsoft Edge do not correctly render the class slides. To get the slides to render correctly, click on the "..." in top right of the Edge browser and then click once on zoom +.
If using Internet Explorer or Edge, ensure that your browser is the most recent version (must be using document mode 10+)