Merge remote-tracking branch 'origin/GP-6623_ghidraffe_fixLeftoverX64dbgProcs--RB20260325'

This commit is contained in:
Ryan Kurtz
2026-03-26 04:49:56 -04:00
3 changed files with 72 additions and 61 deletions
@@ -60,9 +60,9 @@ public abstract class AbstractDbgEngTraceRmiTest extends AbstractGhidraHeadedDeb
from ghidratrace.client import Schedule
""";
// Connecting should be the first thing the script does, so use a tight timeout.
protected static final int CONNECT_TIMEOUT_MS = 3000;
protected static final int TIMEOUT_SECONDS = SystemUtilities.isInTestingBatchMode() ? 10 : 300;
protected static final int QUIT_TIMEOUT_MS = 1000;
protected static final int CONNECT_TIMEOUT_MS = 6000;
protected static final int TIMEOUT_SECONDS = SystemUtilities.isInTestingBatchMode() ? 20 : 300;
protected static final int QUIT_TIMEOUT_MS = 2000;
/** Some snapshot likely to exceed the latest */
protected static final long SNAP = 100;
@@ -59,17 +59,17 @@ public abstract class AbstractX64dbgTraceRmiTest extends AbstractGhidraHeadedDeb
from x64dbg_automate.models import *
""";
// Connecting should be the first thing the script does, so use a tight timeout.
protected static final int CONNECT_TIMEOUT_MS = 3000;
protected static final int TIMEOUT_SECONDS = SystemUtilities.isInTestingBatchMode() ? 10 : 300;
protected static final int QUIT_TIMEOUT_MS = 1000;
protected static final int CONNECT_TIMEOUT_MS = 6000;
protected static final int TIMEOUT_SECONDS = SystemUtilities.isInTestingBatchMode() ? 20 : 300;
protected static final int QUIT_TIMEOUT_MS = 2000;
/** Some snapshot likely to exceed the latest */
protected static final long SNAP = 100;
protected static boolean didSetupPython = false;
public static final String NOTEPAD = "C:\\\\Windows\\\\notepad.exe";
public static final String NETSTAT = "C:\\\\Windows\\\\System32\\\\netstat.exe";
public final String NOTEPAD = DummyProc.which("notepad").replace("\\", "\\\\");
public final String NETSTAT = DummyProc.which("netstat").replace("\\", "\\\\");
public static final String INSTRUMENT_STATE =
"""
import sys
@@ -151,10 +151,21 @@ public abstract class AbstractX64dbgTraceRmiTest extends AbstractGhidraHeadedDeb
pythonPath = Paths.get(DummyProc.which("python"));
}
assertTrue(pythonPath.toFile().exists());
assertTrue("Python must be installed.", pythonPath.toFile().exists());
outFile = Files.createTempFile("pydbgout", null);
errFile = Files.createTempFile("pydbgerr", null);
}
@Before
public void killAllx64dbgProcesses() throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder("taskkill", "/IM", "x64dbg.exe", "/F");
pb.redirectErrorStream(true);
Process process = pb.start();
process.waitFor();
// don't care about the exit code.
}
protected void addAllDebuggerPlugins() throws PluginException {
PluginsConfiguration plugConf = new PluginsConfiguration() {
@@ -107,10 +107,10 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
assertEquals("x86:LE:64:default",
@@ -140,14 +140,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', start_trace=False, wait=True)
ghidra_trace_create('%s', start_trace=False, wait=True)
util.set_convenience_variable('ghidra-language','Toy:BE:64:default')
util.set_convenience_variable('ghidra-compiler','default')
ghidra_trace_start('myToy')
util.terminate_session()
quit()
"""
.formatted(PREAMBLE, addr));
.formatted(PREAMBLE, addr, NOTEPAD));
DomainFile dfMyToy = env.getProject().getProjectData().getFile("/New Traces/x64dbg/myToy");
assertNotNull(dfMyToy);
try (ManagedDomainObject mdo = new ManagedDomainObject(dfMyToy, false, false, monitor)) {
@@ -164,11 +164,11 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_stop()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
DomainFile dfNotepad =
env.getProject().getProjectData().getFile("/New Traces/x64dbg/notepad.exe");
assertNotNull(dfNotepad);
@@ -190,7 +190,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
print('---Connect---')
ghidra_trace_info()
print('---Create---')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
print('---Start---')
ghidra_trace_info()
ghidra_trace_stop()
@@ -201,7 +201,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_info()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr);
""".formatted(PREAMBLE, addr, NOTEPAD);
});
assertEquals("""
@@ -235,7 +235,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
print('---Import---')
ghidra_trace_info_lcsp()
print('---Create---')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', start_trace=False, wait=True)
ghidra_trace_create('%s', start_trace=False, wait=True)
print('---File---')
ghidra_trace_info_lcsp()
util.set_convenience_variable('ghidra-language','Toy:BE:64:default')
@@ -247,7 +247,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
util.terminate_session()
quit()
"""
.formatted(PREAMBLE));
.formatted(PREAMBLE, NOTEPAD));
assertEquals("""
Selected Ghidra language: x86:LE:64:default
@@ -272,14 +272,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
ghidra_trace_txcommit()
ghidra_trace_stop()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
assertEquals(0, tb.trace.getTimeManager().getAllSnapshots().size());
@@ -288,14 +288,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
ghidra_trace_txcommit()
ghidra_trace_save()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
assertEquals(1, tb.trace.getTimeManager().getAllSnapshots().size());
@@ -307,13 +307,13 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
ghidra_trace_txcommit()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
TraceSnapshot snapshot = Unique.assertOne(tb.trace.getTimeManager().getAllSnapshots());
@@ -327,7 +327,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
String out = runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
pc = util.get_pc()
@@ -342,7 +342,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
long snap = Unique.assertOne(tb.trace.getTimeManager().getAllSnapshots()).getKey();
@@ -365,7 +365,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
String out = runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
pc = util.get_pc()
@@ -378,7 +378,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
long snap = Unique.assertOne(tb.trace.getTimeManager().getAllSnapshots()).getKey();
@@ -398,7 +398,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
String out = runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
pc = util.get_pc()
@@ -413,7 +413,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
long snap = Unique.assertOne(tb.trace.getTimeManager().getAllSnapshots()).getKey();
@@ -438,7 +438,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
util.dbg.cmd('rax=0xdeadbeef')
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
@@ -447,7 +447,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr, count));
""".formatted(PREAMBLE, addr, NOTEPAD, count));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
long snap = Unique.assertOne(tb.trace.getTimeManager().getAllSnapshots()).getKey();
@@ -474,7 +474,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
util.dbg.cmd('rax=0xdeadbeef')
ghidra_trace_txstart('Create snapshot')
ghidra_trace_new_snap('Scripted snapshot')
@@ -484,7 +484,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr, count));
""".formatted(PREAMBLE, addr, NOTEPAD, count));
// The spaces will be left over, but the values should be zeroed
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
@@ -561,7 +561,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create Object')
ghidra_trace_create_obj('Test.Objects[1]')
ghidra_trace_insert_obj('Test.Objects[1]')
@@ -571,7 +571,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
TraceObject object = tb.trace.getObjectManager()
@@ -588,7 +588,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create Object')
ghidra_trace_create_obj('Test.Objects[1]')
ghidra_trace_insert_obj('Test.Objects[1]')
@@ -598,7 +598,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr, extra, x64dbgExpr, gtype));
""".formatted(PREAMBLE, addr, NOTEPAD, extra, x64dbgExpr, gtype));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
TraceObject object = tb.trace.getObjectManager()
@@ -740,7 +740,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create Object')
ghidra_trace_create_obj('Test.Objects[1]')
ghidra_trace_insert_obj('Test.Objects[1]')
@@ -753,7 +753,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
TraceObject object = tb.trace.getObjectManager()
@@ -800,7 +800,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
String out = runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create Object')
ghidra_trace_create_obj('Test.Objects[1]')
ghidra_trace_insert_obj('Test.Objects[1]')
@@ -833,7 +833,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
assertEquals("""
@@ -862,7 +862,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
String out = runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Create Object')
ghidra_trace_create_obj('Test.Objects[1]')
ghidra_trace_insert_obj('Test.Objects[1]')
@@ -874,7 +874,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
assertEquals("""
@@ -889,7 +889,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
#set language c++
ghidra_trace_txstart('Create Object')
ghidra_trace_create_obj('Test.Objects[1]')
@@ -899,7 +899,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
assertSame(mdo.get(), traceManager.getCurrentTrace());
assertEquals("Test.Objects[1]",
@@ -912,7 +912,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
String out = runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Tx')
pc = util.get_pc()
ghidra_trace_putmem(pc, 16)
@@ -923,7 +923,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
// Not concerned about specifics, so long as disassembly occurs
@@ -990,7 +990,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
pc = util.get_pc()
util.dbg.client.clear_breakpoint(None)
util.dbg.client.clear_hardware_breakpoint(None)
@@ -1003,7 +1003,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
util.terminate_session()
quit()
"""
.formatted(PREAMBLE, addr));
.formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
List<TraceObjectValue> procSBreakLocVals = tb.trace.getObjectManager()
@@ -1035,7 +1035,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Tx')
pc = util.get_pc()
util.dbg.client.clear_hardware_breakpoint(None)
@@ -1048,7 +1048,7 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
util.terminate_session()
quit()
"""
.formatted(PREAMBLE, addr));
.formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
List<TraceObjectValue> procBreakVals = tb.trace.getObjectManager()
@@ -1079,14 +1079,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Tx')
ghidra_trace_put_environment()
ghidra_trace_txcommit()
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
// Assumes LLDB on Linux amd64
@@ -1105,14 +1105,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Tx')
ghidra_trace_put_regions()
ghidra_trace_txcommit()
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
// Would be nice to control / validate the specifics
@@ -1127,14 +1127,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Tx')
ghidra_trace_put_modules()
ghidra_trace_txcommit()
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
// Would be nice to control / validate the specifics
@@ -1150,14 +1150,14 @@ public class X64dbgCommandsTest extends AbstractX64dbgTraceRmiTest {
runThrowError(addr -> """
%s
ghidra_trace_connect('%s')
ghidra_trace_create('C:\\\\Windows\\\\notepad.exe', wait=True)
ghidra_trace_create('%s', wait=True)
ghidra_trace_txstart('Tx')
ghidra_trace_put_threads()
ghidra_trace_txcommit()
ghidra_trace_kill()
util.terminate_session()
quit()
""".formatted(PREAMBLE, addr));
""".formatted(PREAMBLE, addr, NOTEPAD));
try (ManagedDomainObject mdo = openDomainObject("/New Traces/x64dbg/notepad.exe")) {
tb = new ToyDBTraceBuilder((Trace) mdo.get());
// Would be nice to control / validate the specifics