From dc4b0692a91d1f6937d6a2825494c63f022435f4 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Wed, 15 Jan 2025 11:47:36 -0500 Subject: [PATCH 1/2] GP-5263: Update Debugger GhidraClass --- .../TutorialDebuggerScreenShots.java | 16 ++++++++- .../Debugger/A1-GettingStarted.html | 34 +++++++++++++----- .../GhidraClass/Debugger/A1-GettingStarted.md | 15 ++++++-- .../GhidraClass/Debugger/A2-UITour.html | 5 ++- GhidraDocs/GhidraClass/Debugger/A2-UITour.md | 1 + .../GhidraClass/Debugger/A3-Breakpoints.html | 12 +++++-- .../GhidraClass/Debugger/A3-Breakpoints.md | 6 +++- .../GhidraClass/Debugger/A4-MachineState.html | 13 +++++-- .../GhidraClass/Debugger/A4-MachineState.md | 9 +++-- .../GhidraClass/Debugger/B2-Emulation.html | 5 ++- .../GhidraClass/Debugger/B2-Emulation.md | 4 +-- .../GhidraClass/Debugger/B3-Scripting.html | 17 ++++----- .../GhidraClass/Debugger/B3-Scripting.md | 6 ++-- .../images/GettingStarted_LaunchGDBDialog.png | Bin 16333 -> 17288 bytes .../MemoryMap_StaticMappingAfterLaunch.png | Bin 21901 -> 22607 bytes .../RemoteTargets_GdbPlusGdbserverViaSsh.png | Bin 23692 -> 27095 bytes .../images/RemoteTargets_GdbViaSsh.png | Bin 19608 -> 23736 bytes 17 files changed, 102 insertions(+), 41 deletions(-) diff --git a/Ghidra/Test/DebuggerIntegrationTest/src/screen/java/ghidraclass/debugger/screenshot/TutorialDebuggerScreenShots.java b/Ghidra/Test/DebuggerIntegrationTest/src/screen/java/ghidraclass/debugger/screenshot/TutorialDebuggerScreenShots.java index 3afc608b8d..b978acc640 100644 --- a/Ghidra/Test/DebuggerIntegrationTest/src/screen/java/ghidraclass/debugger/screenshot/TutorialDebuggerScreenShots.java +++ b/Ghidra/Test/DebuggerIntegrationTest/src/screen/java/ghidraclass/debugger/screenshot/TutorialDebuggerScreenShots.java @@ -34,6 +34,7 @@ import docking.action.DockingActionIf; import docking.widgets.fieldpanel.FieldPanel; import generic.Unique; import generic.jar.ResourceFile; +import ghidra.GhidraTestApplicationLayout; import ghidra.app.cmd.disassemble.DisassembleCommand; import ghidra.app.context.ProgramLocationActionContext; import ghidra.app.decompiler.component.DecompilerPanel; @@ -109,6 +110,7 @@ import ghidra.util.Msg; import ghidra.util.exception.CancelledException; import ghidra.util.task.ConsoleTaskMonitor; import help.screenshot.GhidraScreenShotGenerator; +import utility.application.ApplicationLayout; public class TutorialDebuggerScreenShots extends GhidraScreenShotGenerator implements AsyncTestUtils { @@ -145,6 +147,18 @@ public class TutorialDebuggerScreenShots extends GhidraScreenShotGenerator } }; + @Override + protected ApplicationLayout createApplicationLayout() throws IOException { + return new GhidraTestApplicationLayout(new File(getTestDirectoryPath())) { + @Override + protected Set getDependentModulePatterns() { + Set patterns = super.getDependentModulePatterns(); + patterns.add("Debugger-agent"); + return patterns; + } + }; + } + @Override protected TestEnv newTestEnv() throws Exception { return env = new MyTestEnv("DebuggerCourse"); @@ -734,7 +748,7 @@ public class TutorialDebuggerScreenShots extends GhidraScreenShotGenerator mappings.addModuleMappings(proposal.computeMap().values(), monitor, true); } - waitForCondition(() -> flatDbg.translateDynamicToStatic(dynAddr) != null); + //waitForCondition(() -> flatDbg.translateDynamicToStatic(dynAddr) != null); runSwing(() -> tool.setSize(1920, 1080)); captureProvider(DebuggerStaticMappingProvider.class); diff --git a/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.html b/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.html index 10ce5c8023..ebb31ae6ed 100644 --- a/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.html +++ b/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.html @@ -152,12 +152,16 @@ id="toc-customized-launching">Customized Launching
  • Exercise: Launch with Command-line Help
  • -
  • Attaching
  • -
  • Exercise: -Attach
  • +
  • Attaching +
  • +
  • Exercise: +Attach
  • +
  • Troubleshooting
  • +
    @@ -453,13 +457,14 @@ target waits for input.

  • Run termmines in a terminal outside of Ghidra with the desired command-line parameters.
  • In the Ghidra Debugger, use the Launch button -drop-down and select Configured and Launch termmines using… → -raw gdb. The “raw” connector will give us a GDB session without -a target.
  • +drop-down and select Configure and Launch termmines using… → +gdb. +
  • Clear the Image field to configure a GDB session +without a target.
  • Ghidra needs to know the location of gdb and the architecture of the intended target. The defaults are correct for 64-bit x86 targets using -the system’s copy of GDB. Probably, you can just click -Launch.
  • +the system’s copy of GDB. +
  • Click Launch.
  • In the Model window (to the left), expand the Available node.
  • In the filter box, type termmines.
  • @@ -467,6 +472,17 @@ the system’s copy of GDB. Probably, you can just click you prefer, note the PID, e.g. 1234, then in the Terminal type, e.g., attach 1234. +

    TIP: In later exercises, you may use the +Reset button to re-populate the default value for the +Image field. Be sure to change Run +Command back to “start”, though.

    +
    +

    Troubleshooting

    +

    If the Model window is blank, check for a “noname” +tab in the Dynamic Listing, and click it.

    +

    If the Model window seems incomplete after +attaching, check that its Filter box is cleared.

    +

    Exercise: Attach

    @@ -476,7 +492,7 @@ in read you have completed this exercise. Quit GDB from the Terminal before proceeding to the next module: A Tour of the UI

    -
    +

    Troubleshooting

    If you get Operation not permitted or similar when trying to attach, it is likely your Linux system is configured with diff --git a/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.md b/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.md index 47c6dbfb15..3d2968c1a1 100644 --- a/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.md +++ b/GhidraDocs/GhidraClass/Debugger/A1-GettingStarted.md @@ -219,15 +219,24 @@ when using Trace RMI. Note this technique is only possible because the target waits for input. 1. Run `termmines` in a terminal outside of Ghidra with the desired command-line parameters. -1. In the Ghidra Debugger, use the **Launch** button drop-down and select **Configured and Launch termmines using... → raw gdb**. - The "raw" connector will give us a GDB session without a target. +1. In the Ghidra Debugger, use the **Launch** button drop-down and select **Configure and Launch termmines using... → gdb**. +1. Clear the **Image** field to configure a GDB session without a target. 1. Ghidra needs to know the location of gdb and the architecture of the intended target. The defaults are correct for 64-bit x86 targets using the system's copy of GDB. - Probably, you can just click **Launch**. +1. Click **Launch**. 1. In the **Model** window (to the left), expand the *Available* node. 1. In the filter box, type `termmines`. 1. Right click on the node and select **Attach**, or, if you prefer, note the PID, e.g. 1234, then in the **Terminal** type, e.g., `attach 1234`. +**TIP**: In later exercises, you may use the **Reset** button to re-populate the default value for the **Image** field. +Be sure to change **Run Command** back to "start", though. + +### Troubleshooting + +If the **Model** window is blank, check for a "noname" tab in the Dynamic Listing, and click it. + +If the **Model** window seems incomplete after attaching, check that its Filter box is cleared. + ## Exercise: Attach Try attaching on your own, if you have not already. diff --git a/GhidraDocs/GhidraClass/Debugger/A2-UITour.html b/GhidraDocs/GhidraClass/Debugger/A2-UITour.html index 797c932b50..4835a64152 100644 --- a/GhidraDocs/GhidraClass/Debugger/A2-UITour.html +++ b/GhidraDocs/GhidraClass/Debugger/A2-UITour.html @@ -312,7 +312,10 @@ forward a single instruction each time you press it. Also notice that the Static Listing moves with the Dynamic Listing. You may navigate in either listing, and so long as there is a corresponding location in the other, the two will stay synchronized. You may also open the Decompiler -just as you would in the CodeBrowser, and it will stay in sync too.

    +just as you would in the CodeBrowser, and it will stay in sync too. +TIP: If you get lost in memory, you can seek back to +the program counter by double-clicking “pc = …” in the top right of the +listing.

    When you have clicked step into Step Into a sufficient number of times, you should end up in a subroutine. You can click K on the keyboard, or double-click its icon in the margin.

  • From the Model window, expand the Breakpoints node and double-click a breakpoint, or select one with the keyboard and press -ENTER.
  • +ENTER. For GDB, this must be done from the +top-level Breakpoints node, not the one subordinate to the +inferior.
  • From the Breakpoints window, single-click the breakpoint’s status icon, right-click an entry and select a toggle action, or create a selection and use a toggling action from the local toolbar. Either panel @@ -340,7 +342,8 @@ synchronized after importing libc

    Troubleshooting

    If it seems nothing has changed, except now you have a second program -database open, then the new module may not be successfully mapped.

    +database open, then the new module may not be successfully mapped. Try +one or more of the following:

    1. Re-check the Debug Console window and verify the note has been removed.
    2. @@ -349,6 +352,9 @@ system, so the name of the module and the name of the program database do not match.
    3. Ensure that libc is the current program (tab) in the Static Listing.
    4. +
    5. Wait for auto-analysis of libc to complete. Yeah, it +may take a moment, but auto-mapping is queued as a background task, and +so it cannot map things until auto-analysis is done.
    6. In the Modules window, right-click on libc, and select Map Module to libc. (Names and titles will likely differ.)
    7. @@ -446,7 +452,7 @@ boards for any termmines session.

      Write a program that takes a seed from the user and prints a diagram of the first game board with the mines indicated. Optionally, have it print each subsequent game board when the user presses -ENTER. Check your work by re-launching +ENTER. Check your work by re-launching termmines, capturing its seed, inputting it into your program, and then winning the game. Optionally, win 2 more games in the same session.

      diff --git a/GhidraDocs/GhidraClass/Debugger/A3-Breakpoints.md b/GhidraDocs/GhidraClass/Debugger/A3-Breakpoints.md index d3d1750c82..ebf3c86fbd 100644 --- a/GhidraDocs/GhidraClass/Debugger/A3-Breakpoints.md +++ b/GhidraDocs/GhidraClass/Debugger/A3-Breakpoints.md @@ -96,6 +96,7 @@ There are several ways to toggle a breakpoint: 1. In any listing, as in setting a breakpoint, right-click and select a toggle action, press **`K`** on the keyboard, or double-click its icon in the margin. 1. From the Model window, expand the *Breakpoints* node and double-click a breakpoint, or select one with the keyboard and press **`ENTER`**. + For GDB, this must be done from the top-level *Breakpoints* node, not the one subordinate to the *inferior*. 1. From the Breakpoints window, single-click the breakpoint's status icon, right-click an entry and select a toggle action, or create a selection and use a toggling action from the local toolbar. Either panel works, but the top panel is preferred to keep the breakpoints consistent. The local toolbar also has actions for toggling all breakpoints in the session. @@ -138,10 +139,13 @@ Once imported, the Breakpoints window should update to reflect the static addres #### Troubleshooting If it seems nothing has changed, except now you have a second program database open, then the new module may not be successfully mapped. +Try one or more of the following: 1. Re-check the Debug Console window and verify the note has been removed. 1. If not, it might be because the module is symlinked in the file system, so the name of the module and the name of the program database do not match. 1. Ensure that `libc` is the current program (tab) in the Static Listing. +1. Wait for auto-analysis of `libc` to complete. + Yeah, it may take a moment, but auto-mapping is queued as a background task, and so it cannot map things until auto-analysis is done. 1. In the Modules window, right-click on `libc`, and select **Map Module to libc**. (Names and titles will likely differ.) ### Capturing the Random Seed @@ -214,6 +218,6 @@ Because, as we have now confirmed, `termmines` is importing its random number ge Further, because we can capture the seed, and we know the placement algorithm, we can perfectly replicate the sequence of game boards for any `termmines` session. Write a program that takes a seed from the user and prints a diagram of the first game board with the mines indicated. -Optionally, have it print each subsequent game board when the user presses **ENTER**. +Optionally, have it print each subsequent game board when the user presses **`ENTER`**. Check your work by re-launching `termmines`, capturing its seed, inputting it into your program, and then winning the game. Optionally, win 2 more games in the same session. diff --git a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html index 31bd698081..c993f3f8f7 100644 --- a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html +++ b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html @@ -195,8 +195,8 @@ pointer there, just like you would in the Static Listing. You can now navigate to that address by double-clicking it. To return to the stack pointer, you can use the back arrow in the global toolbar, you can click the track location Track -Location button, or you can double-click the sp = [Address] -label in the top right of the Dynamic Listing.

      +Location button, or you can double-click the “sp = …” label in the top +right of the Dynamic Listing.

      To examine a more complicated stack segment, we will break at rand. Ensure your breakpoint at rand is enabled and press resume Resume. @@ -295,6 +295,13 @@ section of termmines in the Static Listing, the Dynamic Listing will follow along showing you the live values in memory. You can also experiment by placing code units in the Dynamic Listing before committing to them in the Static Listing.

      +

      NOTE: There’s a known issue with auto-seek obtruding +user navigation in the listings. In most cases, just navigating again +will make it stick. If it becomes a real annoyance, set the +Auto-Track drop-down in the top right of the Dynamic +Listing to Do Not Track while you’re doing static RE. +Be sure to put it back to Track Program Counter when +you are done.

      Questions:

        @@ -450,7 +457,7 @@ address is into main, you could use href="../../../Ghidra/Features/Decompiler/src/main/doc/sleigh.xml">Sleigh documentation.

        Sleigh is a bit unconventional in that its operators are typed rather -than its variables. All variables are fix-length bit vectors. Their +than its variables. All variables are fixed-length bit vectors. Their sizes are specified in bytes, but they have no other type information.

        diff --git a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md index 05341d1a11..122b10aa1d 100644 --- a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md +++ b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md @@ -68,7 +68,7 @@ Since the target has just entered `main`, we should expect a return address at t With your cursor at the stack pointer, press **`P`** to place a pointer there, just like you would in the Static Listing. You can now navigate to that address by double-clicking it. -To return to the stack pointer, you can use the back arrow in the global toolbar, you can click the ![track location](images/register-marker.png) Track Location button, or you can double-click the `sp = [Address]` label in the top right of the Dynamic Listing. +To return to the stack pointer, you can use the back arrow in the global toolbar, you can click the ![track location](images/register-marker.png) Track Location button, or you can double-click the "sp = ..." label in the top right of the Dynamic Listing. To examine a more complicated stack segment, we will break at `rand`. Ensure your breakpoint at `rand` is enabled and press ![resume](images/resume.png) Resume. @@ -137,6 +137,11 @@ Because you are in a dynamic session, you have an example board to work with. As you navigate the `.data` section of `termmines` in the Static Listing, the Dynamic Listing will follow along showing you the live values in memory. You can also experiment by placing code units in the Dynamic Listing before committing to them in the Static Listing. +**NOTE**: There's a known issue with auto-seek obtruding user navigation in the listings. +In most cases, just navigating again will make it stick. +If it becomes a real annoyance, set the **Auto-Track** drop-down in the top right of the Dynamic Listing to **Do Not Track** while you're doing static RE. +Be sure to put it back to **Track Program Counter** when you are done. + #### Questions: 1. How are the cells allocated? @@ -244,7 +249,7 @@ For example, to see how far a return address is into `main`, you could use `*:8 For the complete specification, see the Semantic Section in the [Sleigh documentation](../../../Ghidra/Features/Decompiler/src/main/doc/sleigh.xml). Sleigh is a bit unconventional in that its operators are typed rather than its variables. -All variables are fix-length bit vectors. +All variables are fixed-length bit vectors. Their sizes are specified in bytes, but they have no other type information. ### Variables and Constants diff --git a/GhidraDocs/GhidraClass/Debugger/B2-Emulation.html b/GhidraDocs/GhidraClass/Debugger/B2-Emulation.html index 10d18388af..0d95b521f4 100644 --- a/GhidraDocs/GhidraClass/Debugger/B2-Emulation.html +++ b/GhidraDocs/GhidraClass/Debugger/B2-Emulation.html @@ -676,8 +676,7 @@ Invalidate Emulator Cache. Resume.

      Stubbing any remaining external calls is left as an exercise. You are -successful when the emulator crashes with -pc = 00000000.

      +successful when the emulator crashes with “pc = 00000000”.

      Clear or disable your breakpoint and invalidate the emulator cache again before proceeding to the next technique.

      @@ -718,7 +717,7 @@ write the Sleigh code to mimic a RET. As with the CALL override technique, you must now invalidate the emulator cache and resume. Stubbing any remaining external functions is left as an exercise. You are successful when the emulator crashes with -pc = 00000000.

      +“pc = 00000000”.

  • diff --git a/GhidraDocs/GhidraClass/Debugger/B2-Emulation.md b/GhidraDocs/GhidraClass/Debugger/B2-Emulation.md index d6f7bc924c..f44332df2b 100644 --- a/GhidraDocs/GhidraClass/Debugger/B2-Emulation.md +++ b/GhidraDocs/GhidraClass/Debugger/B2-Emulation.md @@ -377,7 +377,7 @@ After you have written your Sleigh code: 1. Click ![resume button](images/resume.png) **Resume**. Stubbing any remaining external calls is left as an exercise. -You are successful when the emulator crashes with `pc = 00000000`. +You are successful when the emulator crashes with "pc = 00000000". Clear or disable your breakpoint and invalidate the emulator cache again before proceeding to the next technique. @@ -412,7 +412,7 @@ return [RIP]; Notice that we cannot just write `RET`, but instead must write the Sleigh code to mimic a `RET`. As with the `CALL` override technique, you must now invalidate the emulator cache and resume. Stubbing any remaining external functions is left as an exercise. -You are successful when the emulator crashes with `pc = 00000000`. +You are successful when the emulator crashes with "pc = 00000000". ### Wrapping Up diff --git a/GhidraDocs/GhidraClass/Debugger/B3-Scripting.html b/GhidraDocs/GhidraClass/Debugger/B3-Scripting.html index 963c84a982..d382eea0da 100644 --- a/GhidraDocs/GhidraClass/Debugger/B3-Scripting.html +++ b/GhidraDocs/GhidraClass/Debugger/B3-Scripting.html @@ -168,17 +168,14 @@ class="sourceCode numberSource java numberLines">< protected void run() throws Exception { } } -

    NOTE: The scripting API has been refactored a little -since the transition from Recorder-based to TraceRmi-based targets. -Parts of the API that are back-end agnostic are accessible from the +

    NOTE: The scripting API has been refactored since +the transition from Recorder-based to TraceRmi-based targets. Parts of +the API that are back-end agnostic are accessible from the FlatDebuggerAPI interface. Parts of the API that require a -specific back end are in FlatDebuggerRmiAPI and -FlatDebuggerRecorderAPI, the latter of which is deprecated. -If a script written for version 11.0.2 or prior is not compiling, it can -most likely be patched up by changing -implements FlatDebuggerAPI to -implements FlatDebuggerRecorderAPI, but we recommend -porting it to use implements FlatDebuggerRmiAPI.

    +specific back end are in FlatDebuggerRmiAPI. The old +FlatDebuggerRecorderAPI was removed in Ghidra 11.3, and +scripts needing it should be ported to +FlatDebuggerRmiAPI.

    Technically, the Debugger’s “deep” API is accessible to scripts; however, the flat API is preferred for scripting. Also, the flat API is usually more stable than the deep API. However, because the dynamic diff --git a/GhidraDocs/GhidraClass/Debugger/B3-Scripting.md b/GhidraDocs/GhidraClass/Debugger/B3-Scripting.md index 1cc75193e3..bd54ccfbcc 100644 --- a/GhidraDocs/GhidraClass/Debugger/B3-Scripting.md +++ b/GhidraDocs/GhidraClass/Debugger/B3-Scripting.md @@ -24,10 +24,10 @@ public class DemoDebuggerScript extends GhidraScript implements FlatDebuggerAPI } ``` -**NOTE**: The scripting API has been refactored a little since the transition from Recorder-based to TraceRmi-based targets. +**NOTE**: The scripting API has been refactored since the transition from Recorder-based to TraceRmi-based targets. Parts of the API that are back-end agnostic are accessible from the `FlatDebuggerAPI` interface. -Parts of the API that require a specific back end are in `FlatDebuggerRmiAPI` and `FlatDebuggerRecorderAPI`, the latter of which is deprecated. -If a script written for version 11.0.2 or prior is not compiling, it can most likely be patched up by changing `implements FlatDebuggerAPI` to `implements FlatDebuggerRecorderAPI`, but we recommend porting it to use `implements FlatDebuggerRmiAPI`. +Parts of the API that require a specific back end are in `FlatDebuggerRmiAPI`. +The old `FlatDebuggerRecorderAPI` was removed in Ghidra 11.3, and scripts needing it should be ported to `FlatDebuggerRmiAPI`. Technically, the Debugger's "deep" API is accessible to scripts; however, the flat API is preferred for scripting. Also, the flat API is usually more stable than the deep API. diff --git a/GhidraDocs/GhidraClass/Debugger/images/GettingStarted_LaunchGDBDialog.png b/GhidraDocs/GhidraClass/Debugger/images/GettingStarted_LaunchGDBDialog.png index cb344c8936964a1701405cb72e6b5d30e4363b37..2d4dbd089d8c250d98ba2c7fcd4dbea1d493fe29 100644 GIT binary patch literal 17288 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 Y?VjJ@`85sv3mcG^A~M3og1R66A3AkYssI20 literal 16333 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 dymk;lQ{LSB(}2urrsRDW&Rd=WIL&mEKfT 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 z z@^32vhUedo^WVlwp2q8aU>kwI5cFLaU<1dN-+0D7^Z?m0fEH2yh1(RIOccdGoA==;IhPb*_D49n8o!$w7pM2z)u*=( zj0HyfS`CU8_kfqKBqWX$tWKefUT=!vgP)TdrF~45HsLEz=VuYhH*=XCfaLqvC(kuB zO9dnHL^mQPi@M2(!stEBv!`kJ2ye~?!gA5oG1 z?aL)&@wJ^caQzJ>OKik0eBy9V}?B)g}wI zqxZ}ztof~aG=fGKKqP6ho9M)bSI=P3RI_O6R9apFu+25MB=fbl1H4Y{t3NtvSHBy- z8JrdeVu}tMt<6wJmC@GQZArW^*>NT0ch>^%7;2iAw#-W-&O0 zoB+?ZOqCzI>6rb;U{9q)s01=tO1lV*Rr|s9x?pgVynEu7Smx)3jAfgMw~w{Ss-C1a z-Yr7FyW-J-J<5r>qBZd9+q>G02A0NsUP}6}RVp+{{dB~vSXnOCmS%~6qym5e2gH=p z$-v=SElOcX+i|d1^m*6Dzz@IH@=em#U&s81k~2Gk(L^EGap`tuV?k_7B2-KHfCXvI z`d|>n5L`$A8sf49ubq3YO(tuL3|kn&VV}_oVCea#YbVM=msMRS?o!_DE-nsDGnjc= z2^7ZT0Kt~QZAC*}K;d{)%qMbBb&5%v0zevFN4;eCC&PQ}mPDAXS{UV1iHf}16>cTh zi`5w0joNRKCUA(DZ~h#dTRPH~0E=9!4Qk7u^D%vQa=96$e0r8)OWF~joPKbuZ%l9Q z=B#bZ;@x>bDoE{Wm~WH<1G-brsm{~gMigk>7oP|JW?tW?N2vs|OGkDJMmB8*m;XW~ zZ!I$2q1q}`zrAixSD&3IHj&D8=UEI2p5PmwOp-E?7y5a(5mU}1n^UEgE$(~G^Q6_~ z9f0ov)FVxE%37Cp!}ZD9JXwZdoq6~V%PYC8-Q+6laRx6XGq)SMpVfkd@k+r{Q`*?= zpyf4fvi*Vjf?Xr4^wDDJC~YGX9{c1*`sd(5e9ZD%T;&W{COq50rrq3S;UMfeAU{SO z)bTivAN8Vu)Ia`2Hab=CWm(Yb)01z0a=mo)$4Syo z+uK3|BVIWf@S(K&Q!3G${UC7jR;P{9XDepIw@-H+1az#-aSV{ZT8Zgh>?n-5VqXhL zp~+4G<#q;0BKzryKYjVlv8L=&g~gy%;cL%E1C;VUUDEhcri&pC} zG|twfaCgSg%BQ~A;R;I#s_1`Y~($L5LA3nt@N7%zKZbr?(=90=9)K&qHE0UIdo1UdKN@JK z(scHLam4SDz^h1vC={ue39-FyH5 diff --git a/GhidraDocs/GhidraClass/Debugger/images/RemoteTargets_GdbPlusGdbserverViaSsh.png b/GhidraDocs/GhidraClass/Debugger/images/RemoteTargets_GdbPlusGdbserverViaSsh.png index a2a671937992aa93d03a88cf2a0a0d086af6ec89..9245b8aa2865a1509469f624e4f9d120ec15d634 100644 GIT binary patch literal 27095 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 Yo(iq?u?*;kvV=hHveKn2>06%v0Xxbq0ssI2 literal 23692 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 Cz!il6 diff --git a/GhidraDocs/GhidraClass/Debugger/images/RemoteTargets_GdbViaSsh.png b/GhidraDocs/GhidraClass/Debugger/images/RemoteTargets_GdbViaSsh.png index 5ced77f1c2dc349ac445e0c7ec53b5bcade8b4b7..fa4f9c36ef9aad874fbf15630fd41fdffdb644ce 100644 GIT binary patch literal 23736 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%0D)JZ0edeI4IH~p5L?s0^ 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 a64<@-S+?-^z+W6gP==_>f0i}#|Gxmq=_WA% From 5d71f073f49af9574753413b466ac2059e3985a6 Mon Sep 17 00:00:00 2001 From: Dan <46821332+nsadeveloper789@users.noreply.github.com> Date: Wed, 15 Jan 2025 13:56:40 -0500 Subject: [PATCH 2/2] GP-5266: Only track on user click or address change. --- .../api/tracemgr/DebuggerCoordinates.java | 38 ++++++++++++++++++- .../action/DebuggerTrackLocationTrait.java | 37 +++++++++++------- .../gui/listing/DebuggerListingProvider.java | 2 +- .../gui/model/AbstractQueryTablePanel.java | 6 +-- .../debug/gui/model/ObjectsTreePanel.java | 2 +- .../trace/model/time/schedule/Sequence.java | 21 ++++++++++ .../model/time/schedule/TraceSchedule.java | 16 ++++++++ .../time/schedule/TraceScheduleTest.java | 33 ++++++++++++++++ .../GhidraClass/Debugger/A4-MachineState.html | 7 ---- .../GhidraClass/Debugger/A4-MachineState.md | 5 --- 10 files changed, 135 insertions(+), 32 deletions(-) diff --git a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java index 89ef6ef085..0ac6647f16 100644 --- a/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java +++ b/Ghidra/Debug/Debugger-api/src/main/java/ghidra/debug/api/tracemgr/DebuggerCoordinates.java @@ -66,7 +66,7 @@ public class DebuggerCoordinates { private static final String KEY_FRAME = "Frame"; private static final String KEY_OBJ_PATH = "ObjectPath"; - public static boolean equalsIgnoreRecorderAndView(DebuggerCoordinates a, + public static boolean equalsIgnoreTargetAndView(DebuggerCoordinates a, DebuggerCoordinates b) { if (!Objects.equals(a.trace, b.trace)) { return false; @@ -417,6 +417,36 @@ public class DebuggerCoordinates { newFrame, newPath); } + /** + * Checks if the given coordinates are the same as this but with an extra or differing patch. + * + * @param that the other coordinates + * @return true if the difference is only in the final patch step + */ + public boolean differsOnlyByPatch(DebuggerCoordinates that) { + if (!Objects.equals(this.trace, that.trace)) { + return false; + } + + if (!Objects.equals(this.platform, that.platform)) { + return false; + } + if (!Objects.equals(this.thread, that.thread)) { + return false; + } + // Consider defaults + if (!Objects.equals(this.getFrame(), that.getFrame())) { + return false; + } + if (!Objects.equals(this.getObject(), that.getObject())) { + return false; + } + if (!this.getTime().differsOnlyByPatch(that.getTime())) { + return false; + } + return true; + } + public DebuggerCoordinates frame(int newFrame) { if (trace == null) { return NOWHERE; @@ -621,7 +651,11 @@ public class DebuggerCoordinates { if (registerContainer != null) { return registerContainer; } - return registerContainer = getObject().findRegisterContainer(getFrame()); + TraceObject object = getObject(); + if (object == null) { + return null; + } + return registerContainer = object.findRegisterContainer(getFrame()); } public synchronized long getViewSnap() { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/DebuggerTrackLocationTrait.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/DebuggerTrackLocationTrait.java index 35ff2c3d27..f31c3b4a1b 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/DebuggerTrackLocationTrait.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/action/DebuggerTrackLocationTrait.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -52,6 +52,10 @@ public class DebuggerTrackLocationTrait { protected static final AutoConfigState.ClassHandler CONFIG_STATE_HANDLER = AutoConfigState.wireHandler(DebuggerTrackLocationTrait.class, MethodHandles.lookup()); + public enum TrackCause { + USER, DB_CHANGE, NAVIGATION, EMU_PATCH, SPEC_CHANGE_API; + } + protected class ForTrackingListener extends TraceDomainObjectListener { public ForTrackingListener() { @@ -68,7 +72,7 @@ public class DebuggerTrackLocationTrait { if (!tracker.affectedByBytesChange(space, range, current)) { return; } - doTrack(); + doTrack(TrackCause.DB_CHANGE); } private void stackChanged(TraceStack stack) { @@ -79,7 +83,7 @@ public class DebuggerTrackLocationTrait { if (!tracker.affectedByStackChange(stack, current)) { return; } - doTrack(); + doTrack(TrackCause.DB_CHANGE); } } @@ -188,11 +192,11 @@ public class DebuggerTrackLocationTrait { public void setSpec(LocationTrackingSpec spec) { if (action == null) { // It might if the client doesn't need a new button, e.g., TraceDiff - doSetSpec(spec); + doSetSpec(spec, TrackCause.SPEC_CHANGE_API); } else if (!hasSpec(spec)) { Msg.warn(this, "No action state for given tracking spec: " + spec); - doSetSpec(spec); + doSetSpec(spec, TrackCause.SPEC_CHANGE_API); } else { action.setCurrentActionStateByUserData(spec); @@ -234,21 +238,21 @@ public class DebuggerTrackLocationTrait { } protected void clickedSpecButton(ActionContext ctx) { - doTrack(); + doTrack(TrackCause.USER); } protected void clickedSpecMenu(ActionState newState, EventTrigger trigger) { - doSetSpec(newState.getUserData()); + doSetSpec(newState.getUserData(), TrackCause.USER); } - protected void doSetSpec(LocationTrackingSpec spec) { + protected void doSetSpec(LocationTrackingSpec spec, TrackCause cause) { if (this.spec != spec) { this.spec = spec; this.tracker = spec.getTracker(); specChanged(spec); } - doTrack(); + doTrack(cause); } protected ProgramLocation computeTrackedLocation() { @@ -282,9 +286,15 @@ public class DebuggerTrackLocationTrait { return spec.getLocationLabel() + " = " + trackedLocation.getByteAddress(); } - protected void doTrack() { + protected void doTrack(TrackCause cause) { try { - trackedLocation = computeTrackedLocation(); + ProgramLocation newLocation = computeTrackedLocation(); + if (Objects.equals(newLocation, trackedLocation)) { + if (cause == TrackCause.DB_CHANGE || cause == TrackCause.EMU_PATCH) { + return; + } + } + trackedLocation = newLocation; locationTracked(); } catch (Throwable ex) { @@ -315,11 +325,12 @@ public class DebuggerTrackLocationTrait { if (doListeners) { removeOldListeners(); } + boolean isPatch = current.differsOnlyByPatch(coordinates); current = coordinates; if (doListeners) { addNewListeners(); } - doTrack(); + doTrack(isPatch ? TrackCause.EMU_PATCH : TrackCause.NAVIGATION); } public void writeConfigState(SaveState saveState) { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java index 1341fe7b7c..c2c8e4a842 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/listing/DebuggerListingProvider.java @@ -235,7 +235,7 @@ public class DebuggerListingProvider extends CodeViewerProvider { super(DebuggerListingProvider.this.tool, DebuggerListingProvider.this.plugin, DebuggerListingProvider.this); - getListingPanel().addIndexMapChangeListener(e -> this.doTrack()); + getListingPanel().addIndexMapChangeListener(e -> this.doTrack(TrackCause.DB_CHANGE)); } @Override diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractQueryTablePanel.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractQueryTablePanel.java index 249aab470a..8130d5a884 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractQueryTablePanel.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/model/AbstractQueryTablePanel.java @@ -4,9 +4,9 @@ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. @@ -90,7 +90,7 @@ public abstract class AbstractQueryTablePanel { } return result; } + + public boolean differsOnlyByPatch(Sequence that) { + int size = this.steps.size(); + if (size == that.steps.size()) { + if (size == 0) { + return true; + } + if (!this.steps.subList(0, size - 1).equals(that.steps.subList(0, size - 1))) { + return false; + } + Step thisLast = this.steps.getLast(); + Step thatLast = that.steps.getLast(); + return thisLast.equals(thatLast) || + thisLast instanceof PatchStep && thatLast instanceof PatchStep; + } + if (size == that.steps.size() - 1) { + Step thatLast = that.steps.getLast(); + return thatLast instanceof PatchStep; + } + return false; + } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/time/schedule/TraceSchedule.java b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/time/schedule/TraceSchedule.java index ea703ad8ea..02c8b3a49a 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/time/schedule/TraceSchedule.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/main/java/ghidra/trace/model/time/schedule/TraceSchedule.java @@ -673,4 +673,20 @@ public class TraceSchedule implements Comparable { public TraceSchedule assumeRecorded() { return new TraceSchedule(snap, steps, pSteps, Source.RECORD); } + + public boolean differsOnlyByPatch(TraceSchedule that) { + if (this.snap != that.snap) { + return false; + } + if (this.pSteps.isNop() != that.pSteps.isNop()) { + return false; + } + if (this.pSteps.isNop()) { + return this.steps.differsOnlyByPatch(that.steps); + } + if (!this.steps.equals(that.steps)) { + return false; + } + return this.pSteps.differsOnlyByPatch(that.pSteps); + } } diff --git a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java index a0eb1fbe85..721308b212 100644 --- a/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java +++ b/Ghidra/Debug/Framework-TraceModeling/src/test/java/ghidra/trace/model/time/schedule/TraceScheduleTest.java @@ -470,4 +470,37 @@ public class TraceScheduleTest extends AbstractGhidraHeadlessIntegrationTest { "t0-{r0=0x200000001};t0-{r1l=0x3}", time.toString()); } } + + @Test + public void testDiffersOnlyByPatch() throws Exception { + assertTrue(TraceSchedule.parse("1").differsOnlyByPatch(TraceSchedule.parse("1"))); + assertTrue(TraceSchedule.parse("1:1").differsOnlyByPatch(TraceSchedule.parse("1:1"))); + assertTrue(TraceSchedule.parse("1:1.1").differsOnlyByPatch(TraceSchedule.parse("1:1.1"))); + assertTrue(TraceSchedule.parse("1:1;{r0=1}") + .differsOnlyByPatch(TraceSchedule.parse("1:1;{r0=1}"))); + assertTrue(TraceSchedule.parse("1:1.1;{r0=1}") + .differsOnlyByPatch(TraceSchedule.parse("1:1.1;{r0=1}"))); + + assertFalse(TraceSchedule.parse("1").differsOnlyByPatch(TraceSchedule.parse("1:1"))); + assertFalse(TraceSchedule.parse("1:1").differsOnlyByPatch(TraceSchedule.parse("1"))); + + assertFalse(TraceSchedule.parse("1:1").differsOnlyByPatch(TraceSchedule.parse("1:2"))); + assertFalse(TraceSchedule.parse("1:2").differsOnlyByPatch(TraceSchedule.parse("1:1"))); + + assertFalse(TraceSchedule.parse("1:1").differsOnlyByPatch(TraceSchedule.parse("1:1.1"))); + assertFalse(TraceSchedule.parse("1:1.1").differsOnlyByPatch(TraceSchedule.parse("1:1"))); + + assertTrue(TraceSchedule.parse("1").differsOnlyByPatch(TraceSchedule.parse("1:{r0=1}"))); + assertFalse(TraceSchedule.parse("1:{r0=1}").differsOnlyByPatch(TraceSchedule.parse("1"))); + + assertTrue( + TraceSchedule.parse("1:1").differsOnlyByPatch(TraceSchedule.parse("1:1;{r0=1}"))); + assertFalse( + TraceSchedule.parse("1:1;{r0=1}").differsOnlyByPatch(TraceSchedule.parse("1:1"))); + + assertTrue( + TraceSchedule.parse("1:1.1").differsOnlyByPatch(TraceSchedule.parse("1:1.1;{r0=1}"))); + assertFalse( + TraceSchedule.parse("1:1.1;{r0=1}").differsOnlyByPatch(TraceSchedule.parse("1:1.1"))); + } } diff --git a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html index c993f3f8f7..6fc4a3ca2a 100644 --- a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html +++ b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.html @@ -295,13 +295,6 @@ section of termmines in the Static Listing, the Dynamic Listing will follow along showing you the live values in memory. You can also experiment by placing code units in the Dynamic Listing before committing to them in the Static Listing.

    -

    NOTE: There’s a known issue with auto-seek obtruding -user navigation in the listings. In most cases, just navigating again -will make it stick. If it becomes a real annoyance, set the -Auto-Track drop-down in the top right of the Dynamic -Listing to Do Not Track while you’re doing static RE. -Be sure to put it back to Track Program Counter when -you are done.

    Questions:

      diff --git a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md index 122b10aa1d..0ae58a637e 100644 --- a/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md +++ b/GhidraDocs/GhidraClass/Debugger/A4-MachineState.md @@ -137,11 +137,6 @@ Because you are in a dynamic session, you have an example board to work with. As you navigate the `.data` section of `termmines` in the Static Listing, the Dynamic Listing will follow along showing you the live values in memory. You can also experiment by placing code units in the Dynamic Listing before committing to them in the Static Listing. -**NOTE**: There's a known issue with auto-seek obtruding user navigation in the listings. -In most cases, just navigating again will make it stick. -If it becomes a real annoyance, set the **Auto-Track** drop-down in the top right of the Dynamic Listing to **Do Not Track** while you're doing static RE. -Be sure to put it back to **Track Program Counter** when you are done. - #### Questions: 1. How are the cells allocated?