Compare commits

...

2775 commits

Author SHA1 Message Date
Ryan Kurtz
53cca61f8c Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-10-02 13:13:31 -04:00
Ryan Kurtz
131aa4ac9a GP-0: If pyghidra.sys.modules.restore is set, PyGhidra will restore
sys.modules each time a script is run (Closes #8529)
2025-10-02 13:10:46 -04:00
Ryan Kurtz
8fd7d7ba4a Merge remote-tracking branch 'origin/GP-0_ghidragon_test_fixex_10_2_25--SQUASHED' 2025-10-02 12:50:13 -04:00
ghidragon
be9e2f841a GP-0 test fixes related to open/close functions. 2025-10-02 12:49:42 -04:00
Ryan Kurtz
9b5a7d63ff Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-10-1-25-2' 2025-10-01 13:54:48 -04:00
dragonmacher
9f47e39541 Test fixes 2025-10-01 13:46:35 -04:00
Ryan Kurtz
77bb1ccc83 Merge remote-tracking branch
'origin/GP-5987_ghidragon_hiding_function_body_in_listing--SQUASHED'
(Closes #4274)
2025-10-01 13:33:43 -04:00
Ryan Kurtz
896080a2f5 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-10-1-25' 2025-10-01 12:22:23 -04:00
dragonmacher
b6f22a939f Test fixes 2025-10-01 12:16:04 -04:00
ghidragon
290695ae09 Added feature to close function bodies in the listing display. 2025-10-01 11:54:47 -04:00
Ryan Kurtz
99ed7ea955 Merge remote-tracking branch 'origin/GP-6016-dragonmacher-function-compare-save--SQUASHED' 2025-10-01 05:07:04 -04:00
Ryan Kurtz
ad7f0b0bc9 Merge remote-tracking branch 'origin/GP-6033-dragonmacher-vt-filter-icon-fix' 2025-10-01 05:04:28 -04:00
Ryan Kurtz
e8435da7d3 Merge remote-tracking branch 'origin/GP-1-dragonmacher-category-chooser-fix' 2025-10-01 05:02:30 -04:00
Ryan Kurtz
c6bad05535 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-10-01 05:02:02 -04:00
Ryan Kurtz
aef70ea9be GP-6022: Better error reporting when expanding environment variables in
launch.properties
2025-10-01 04:59:54 -04:00
Ryan Kurtz
5422a77966 Merge remote-tracking branch 'origin/GP-1-dragonmacher-help-fix' into Ghidra_12.0 2025-10-01 04:48:16 -04:00
Ryan Kurtz
2819cf371e Merge remote-tracking branch 'origin/GP-6024-dragonmacher-vt-missing-options' into Ghidra_12.0 2025-10-01 04:46:50 -04:00
Ryan Kurtz
16f1abcbab Merge remote-tracking branch 'origin/GP-6034-dragonmacher-vt-function-compare-resize' into Ghidra_12.0 2025-10-01 04:45:28 -04:00
dragonmacher
85f07ad803 GP-6016 - Updated the Function Comparison provider to save Listing format changes; fixed last used tab not being saved. 2025-09-30 17:05:08 -04:00
dragonmacher
c9b0c8ad76 Help fixes 2025-09-30 16:34:56 -04:00
dragonmacher
e8c7f70cbd GP-6033 - Version Tracking - Fixed filter icon that was not updating
correctly
2025-09-30 16:31:38 -04:00
dragonmacher
3b14dcf58b GP-6034 - Version Tracking - Fixed Function Comparison view not being
resizable
2025-09-30 16:11:56 -04:00
dragonmacher
65f58752de GP-6024 - Version Tracking - Fixed missing tool options 2025-09-30 10:35:56 -04:00
Ryan Kurtz
7b50970725 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-30 05:50:59 -04:00
Ryan Kurtz
fc3debd7f7 Merge remote-tracking branch 'origin/GP-6022_ryanmkurtz_env-vars--SQUASHED' into Ghidra_12.0 2025-09-30 05:48:34 -04:00
Ryan Kurtz
56dfef0c30 GP-6022: Support environment variables in launch.properties 2025-09-30 05:47:18 -04:00
Ryan Kurtz
80c795a94a Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-30 04:47:50 -04:00
ghidra1
1428739dde Merge remote-tracking branch 'origin/GP-5333_ghidra1_RepoConnectionStatus--SQUASHED' into Ghidra_12.0 2025-09-29 15:35:24 -04:00
ghidra1
367e71f707 GP-5333 Added repo connection status/action to root project data tree node 2025-09-29 15:34:08 -04:00
Ryan Kurtz
40f4ed3b21 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-29 14:54:52 -04:00
Ryan Kurtz
b6952b840d Merge remote-tracking branch
'origin/GP-5902_ghidorahrex_PR-8406_CUB3D_mips_16e2' into Ghidra_12.0
(Closes #8406)
2025-09-29 13:53:49 -04:00
Ryan Kurtz
247f24ea0f Merge remote-tracking branch
'origin/GP-5909_ghidorahrex_PR-7972_niooss-ledger_ebpf-add-instruction-callx'
into Ghidra_12.0 (Closes #7972)
2025-09-29 12:35:10 -04:00
Ryan Kurtz
ccefcc1f70 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-29 12:01:19 -04:00
Ryan Kurtz
b0f3dea8d6 GP-0: More WhatsNew improvements 2025-09-29 11:53:54 -04:00
Ryan Kurtz
e4e2df4a09 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-29-25' 2025-09-29 10:43:51 -04:00
Ryan Kurtz
97dcd914e8 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-29 10:42:33 -04:00
Ryan Kurtz
90e9d803f8 GP-0: New code block format in html produced from markdown 2025-09-29 10:40:55 -04:00
dragonmacher
5c5f577560 Test fixes 2025-09-29 10:33:10 -04:00
Ryan Kurtz
16401d6231 GP-0: WhatsNew corrections 2025-09-29 09:49:24 -04:00
ghidra1
0234da5db5 GP-1 Correct NPE with symbol filter restore 2025-09-29 09:43:03 -04:00
Ryan Kurtz
a3b327c411 Merge remote-tracking branch 'origin/GP-1-dragonmacher-tool-restore-fix' 2025-09-29 05:15:02 -04:00
Ryan Kurtz
15760581ad Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-29 05:14:16 -04:00
Ryan Kurtz
d7bfd098b9 Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_extensions--SQUASHED' into Ghidra_12.0 2025-09-29 05:12:09 -04:00
Ryan Kurtz
605d579070 GP-0: Fixing enablement of installed extensions in dev mode 2025-09-29 05:11:39 -04:00
dragonmacher
6660cc75f1 Fix for recent tool xml restoring change 2025-09-26 20:03:31 -04:00
dragonmacher
85b1b5c5e9 Fixed bug and race condition in the data type indexer 2025-09-26 19:56:00 -04:00
Ryan Kurtz
e8ba7c3e45 Merge remote-tracking branch 'origin/GP-5992-dragonmacher-options-age-off--SQUASHED' 2025-09-26 13:01:48 -04:00
Ryan Kurtz
96506554e7 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-26 12:57:42 -04:00
Ryan Kurtz
cde92ede12 Merge branch 'GP-6021_ryanmkurtz_pyghidra' into Ghidra_12.0
(Closes #8524)
2025-09-26 12:55:27 -04:00
Ryan Kurtz
951f5a5daa GP-6021: PyGhidra stdout/stderr scripting console fixes 2025-09-26 12:51:32 -04:00
dragonmacher
b4ba97c3d2 GP-5992 - Added the ability age-off options instead of relying only on registration 2025-09-26 11:33:51 -04:00
ghidra1
c16396d235 Merge branch 'Ghidra_12.0' 2025-09-26 11:04:51 -04:00
ghidra1
2b5ba24327 GP-6008 Corrected regression bug for VT function stringable Imported
priority check
2025-09-26 11:02:35 -04:00
ghidra1
5ea1b04604 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-25 13:54:11 -04:00
ghidra1
531d53f8f8 Merge remote-tracking branch 'origin/patch' into Ghidra_12.0 2025-09-25 13:53:31 -04:00
ghidra1
9a20684330 GP-5526 Simplified fix for CreateThunkFunctionCmd 2025-09-25 13:52:42 -04:00
ghidra1
5ceb49b11f Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-25 13:11:59 -04:00
ghidra1
fb66e26452 Merge remote-tracking branch 'origin/patch' into Ghidra_12.0 2025-09-25 13:10:48 -04:00
ghidra1
cae8caac14 GP-5526 Correct CreateThunkCmd NPE 2025-09-25 13:03:49 -04:00
Ryan Kurtz
1ded9bcb80 Merge remote-tracking branch 'origin/GP-6005_ryanmkurtz_vs' into
Ghidra_12.0 (#2305)
2025-09-25 09:58:05 -04:00
Ryan Kurtz
9ad9d0d3db Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-25 05:26:54 -04:00
Ryan Kurtz
0fb3a8f8a9 Merge remote-tracking branch 'origin/patch' into Ghidra_12.0 2025-09-25 05:25:30 -04:00
emteere
136a28d603 GP-5526 bug fix for .plt.sec and pattern matching optimization 2025-09-25 05:22:34 -04:00
Ryan Kurtz
bcd9130aee Merge remote-tracking branch 'origin/GP-5989_ForceUnionException' into
Ghidra_12.0 (Closes #7466)
2025-09-25 05:04:27 -04:00
caheckman
72344ce13e GP-5989 Fix ForceUnionAction "Could not recover p-code op" 2025-09-24 19:06:45 +00:00
Ryan Kurtz
a51cfb7c09 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-24 14:33:50 -04:00
Ryan Kurtz
8802befa22 Merge remote-tracking branch 'origin/GP-5526_emteere_bugfix--SQUASHED' into Ghidra_12.0 2025-09-24 14:20:56 -04:00
Ryan Kurtz
961ab7b76e Merge remote-tracking branch
'origin/GP-5998_emteere_VS2022_stack_check_cookie_Issue--SQUASHED' into
Ghidra_12.0 (Closes #2743)
2025-09-24 14:18:25 -04:00
Ryan Kurtz
d1c6a1cd06 Merge remote-tracking branch
'origin/GP-5287_emteere_ENDBR_patterns--SQUASHED' into Ghidra_12.0
(#8516)
2025-09-24 14:13:50 -04:00
emteere
dc069a18c6 GP-5287 Added ENDBR jump target checking instructions as function start patterns for x86 gcc binaries 2025-09-24 18:06:03 +00:00
emteere
69ed84a069 GP-5526 bug fix for .plt.sec and pattern matching optimization 2025-09-24 18:03:10 +00:00
emteere
0815f463f5 GP-5998 Added security_check_cookie function patterns and callfixup for VS2022 based binaries. 2025-09-24 18:01:43 +00:00
Ryan Kurtz
48a86b945a GP-0: Finding dev mode extensions in all application root dirs 2025-09-24 13:04:54 -04:00
Ryan Kurtz
f41f7c9eab Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-24 11:18:29 -04:00
Ryan Kurtz
14bdf2bbe5 Merge remote-tracking branch
'origin/GP-3139_James_add_apple_arm64_cspec' into Ghidra_12.0
(Closes #8032, Closes #2723)
2025-09-24 11:15:39 -04:00
ghidra1
4a1a373193 GP-0 SourceType javadoc update 2025-09-24 09:37:55 -04:00
ghidra1
5df99853af Merge remote-tracking branch 'origin/GP-6006_ghidra1_added_new_source_type' into Ghidra_12.0 2025-09-24 09:18:53 -04:00
ghidra1
ed4ad257f2 Merge remote-tracking branch 'origin/GP-6008_ghidra1_SourceTypePriorityUse--SQUASHED' into Ghidra_12.0 2025-09-24 09:18:36 -04:00
ghidra1
a3bd708160 GP-6008 Changed SourceType examination to base upon priorty instead of specific value equality when appropriate 2025-09-24 09:16:04 -04:00
Ryan Kurtz
350817be2d Merge remote-tracking branch 'origin/GP-5981_ryanmkurtz_jython' into Ghidra_12.0 2025-09-24 09:06:13 -04:00
Ryan Kurtz
03ee787325 GP-5981: Giving Jython scripts invoked via runScript() a fresh set of
locals
2025-09-24 08:54:11 -04:00
Ryan Kurtz
aacd763b25 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-24 05:57:55 -04:00
Ryan Kurtz
6c1a1b4600 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-23-25' into Ghidra_12.0 2025-09-24 05:55:44 -04:00
dragonmacher
9e9de7c4f5 Test fixes 2025-09-23 16:53:02 -04:00
ghidragon
e346c30205 GP-6006 Added a new source type called 'AI' 2025-09-23 15:18:03 -04:00
Ryan Kurtz
f59313131d Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-23 11:49:01 -04:00
Ryan Kurtz
cc4a4e5ed2 Merge remote-tracking branch 'origin/GP-6014_ryanmkurtz_osgi' into
Ghidra_12.0 (#6455)
2025-09-23 11:45:46 -04:00
Ryan Kurtz
52b4d46cb3 GP-0: Detecting VSCode in Windows system installer location
(Closes #8514)
2025-09-23 11:42:46 -04:00
Ryan Kurtz
b7a5878e35 GP-0: Explicitly enable native access to make new JDK 25 FlatLaf
warnings go away
2025-09-23 09:29:56 -04:00
Ryan Kurtz
cca597318e GP-6014: Setting minimum java version in OSGi bundles, and adding
"Bundle Location ID" hidden column
2025-09-23 09:01:21 -04:00
Ryan Kurtz
dfd1df25ed Merge remote-tracking branch 'origin/GP-0_ghizard_What's_New_Edits' into Ghidra_12.0 2025-09-22 12:08:18 -04:00
ghizard
eefa8881ec GP-0 - What's New Edits 2025-09-22 12:00:42 -04:00
Ryan Kurtz
b70fcc57ee Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-22 09:22:51 -04:00
Ryan Kurtz
1f0bd4a9e2 GP-0: Fixing Mach-O stub processing on blank symbols (Closes #8513) 2025-09-22 09:21:15 -04:00
Ryan Kurtz
0b102836d3 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-22 05:56:15 -04:00
Ryan Kurtz
78008fae1e Merge remote-tracking branch 'origin/GP-6010_ghizard_PDB_Fix_issue_where_function_args_record_is_NOTYPE' into Ghidra_12.0 2025-09-22 05:54:09 -04:00
Ryan Kurtz
29ba2ca46d GP-0: Upping Gradle Wrapper to 9.1.0 2025-09-22 05:49:16 -04:00
ghizard
799226dd3a GP-6010 - PDB - Fixed issue where function args list was NOTYPE 2025-09-19 13:42:10 -04:00
ghidra1
2e05cc5d2a Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-19 11:04:10 -04:00
ghidra1
edea7dfd65 Revert "GP-6006 Creating a new source type called 'Speculative' which marks symbol names that are less trustworthy than analysis"
This reverts commit 41d9b7431e.
2025-09-19 11:02:20 -04:00
Ryan Kurtz
b4a7848a30 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-18 14:13:00 -04:00
Ryan Kurtz
91a9a66a25 Merge remote-tracking branch 'origin/GP-6006_ghidragon_added_new_source_type--SQUASHED' into Ghidra_12.0 2025-09-18 14:10:48 -04:00
ghidragon
41d9b7431e GP-6006 Creating a new source type called 'Speculative' which marks symbol names that are less trustworthy than analysis 2025-09-18 14:10:16 -04:00
Ryan Kurtz
1ae4378cfd Merge remote-tracking branch 'origin/GP-5999_dev747368_fix_coff_NPE' 2025-09-18 13:10:53 -04:00
Ryan Kurtz
2d9d764f10 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-18 13:09:26 -04:00
Ryan Kurtz
6bb33b0025 GP-6005: The Windows build can now use prerelease versions of Visual
Studio with the new -PvswherePrerelease arg
2025-09-18 12:50:13 -04:00
Ryan Kurtz
05a72b569a GP-0: Updating WhatsNew 2025-09-18 08:11:21 -04:00
Ryan Kurtz
1b0ad6e28f Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-18 06:08:59 -04:00
Ryan Kurtz
363c1cd4fd Merge remote-tracking branch 'origin/GP-1_ghidragon_another_tiny_mistake_in_toggle_variables' into Ghidra_12.0 2025-09-18 06:04:52 -04:00
Ryan Kurtz
3d9610afce Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-18 06:00:17 -04:00
dev747368
81b8b160be GP-5999 fix NPE in Coff archive fs when opening almost empty file 2025-09-17 23:54:14 +00:00
ghidragon
48f2a03469 GP-1 fixed another mistake in the open/close variables action 2025-09-17 16:12:00 -04:00
ghidra1
cfab7b13df Merge remote-tracking branch 'origin/patch' into Ghidra_12.0 2025-09-17 14:57:10 -04:00
ghidra1
0b88d55bea Merge remote-tracking branch
'origin/GP-5995_ghidra1_DynamicPointerLabels' into patch (Closes #8510)
2025-09-17 14:55:39 -04:00
ghidra1
dba7f462a2 GP-5995 Corrected default label for circular pointer references 2025-09-17 14:52:14 -04:00
Ryan Kurtz
5bad4f187d Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-17 12:12:00 -04:00
Ryan Kurtz
ac64335ae1 Merge remote-tracking branch 'origin/GP-1-dragonmacher-action-key-binding-fix' into Ghidra_12.0 2025-09-17 12:08:50 -04:00
Ryan Kurtz
1942e0e95e Merge remote-tracking branch 'origin/GP-1_bug_fixes_related_to_toggle_variables_feature' into Ghidra_12.0 2025-09-17 12:08:21 -04:00
Ryan Kurtz
bdec6a0834 Merge remote-tracking branch
'origin/GP-5306_ghidorahrex_PR-5718_srichmo1_avr32_icall_pr'
(Closes #5718)
2025-09-17 09:37:58 -04:00
Ryan Kurtz
2043734ed0 Merge remote-tracking branch
'origin/GP-5243_ghidorahrex_PR-7170_gemesa_siemens-infineon-tricore'
(Closes #7170)
2025-09-17 09:36:22 -04:00
Ryan Kurtz
bf71cc4b8c Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-17 08:23:15 -04:00
Ryan Kurtz
8804b99713 GP-0: Adding more detail to OSGi exception output (#6455) 2025-09-17 08:21:15 -04:00
dragonmacher
e5e7f0a8ff Updated file chooser to register actions 2025-09-16 17:06:41 -04:00
ghidra1
e11d881e09 GP-0 Removed old debug statement 2025-09-16 16:52:57 -04:00
ghidra1
c5133c8eb9 GP-0 Minor fix to WhatsNew 12.0 2025-09-16 13:21:28 -04:00
ghidra2
495d525c0b GP-1 - expose ApplicationTrustManagerFactory X509TrustManager 2025-09-16 13:05:36 -04:00
ghidra1
ffceea9fb3 GP-1 Corrected OpenTrustManager.getAcceptedIssuers return value 2025-09-16 12:42:21 -04:00
Ryan Kurtz
7231c8b1e8 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-16 12:38:58 -04:00
ghidra1
8d066797c9 Merge remote-tracking branch 'origin/GP-5990_ghidra1_ListingCompositeMapRemoval' into Ghidra_12.0 2025-09-16 10:30:47 -04:00
ghidra1
060df1aca9 GP-5990 Removed Listing map for tracking array, composite and dynamic
data placement.  Remove composite added/removed event generation.
2025-09-16 10:19:31 -04:00
Ryan Kurtz
444e6453d1 GP-0: Fixing javadoc 2025-09-16 10:19:00 -04:00
Ryan Kurtz
3dbce7f987 Merge remote-tracking branch 'origin/GP-0_Dan_fixTests-2025-09-16-1' into Ghidra_12.0 2025-09-16 09:40:07 -04:00
Dan
2960b65f73 GP-0: Fix type behavior for Varnode (ANY) 2025-09-16 13:24:23 +00:00
Ryan Kurtz
4896cd5c97 Merge remote-tracking branch 'origin/GP-5900_ryanmkurtz_pe-export-forwarding--SQUASHED' 2025-09-16 05:57:21 -04:00
Ryan Kurtz
ad35a7e956 GP-5900: PeLoader now creates thunks in EXTERNAL block for forwarded exported functions 2025-09-16 05:56:14 -04:00
ghidragon
c5422e1606 GP-1 fixed bugs related to the new toggle variables feature 2025-09-15 14:05:42 -04:00
Ryan Kurtz
3bba2c2f14 GP-0: Upping master to 12.1 2025-09-15 13:49:29 -04:00
Ryan Kurtz
2d10da420f Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-15 13:48:46 -04:00
Ryan Kurtz
437bed4be0 GP-0: Updating WhatsNew 2025-09-15 13:30:39 -04:00
ghidra1
c3d8571ba3 Merge remote-tracking branch 'origin/Ghidra_12.0' 2025-09-15 10:31:49 -04:00
ghidra1
c99af66f5f GP-5908 Corrected excessive folder change notifications on first visit
to parent
2025-09-15 10:06:20 -04:00
Ryan Kurtz
6dd00be368 Merge branch
'GP-5979_dragonmacher-search-memory-accessibility--SQUASHED' (Closes #8264)
2025-09-15 09:53:46 -04:00
dragonmacher
1c5e9ea9c2 GP-5979: Accessibility - Updates to the Search Memory provider 2025-09-15 09:52:36 -04:00
Ryan Kurtz
22b3524206 Merge remote-tracking branch 'origin/GP-5763_emteere_NoReturnExternalsINT3--SQUASHED' 2025-09-15 09:46:20 -04:00
Ryan Kurtz
a893955b03 Merge remote-tracking branch 'origin/patch' 2025-09-15 09:45:43 -04:00
Ryan Kurtz
a1851c5911 Merge remote-tracking branch 'origin/GP-5985_emteere_MoreNonReturningPEFuncs' into patch 2025-09-15 09:42:53 -04:00
Ryan Kurtz
4c8d408fc7 Merge remote-tracking branch 'origin/GP-5526_emteere_plt_thunkPatterns' into patch 2025-09-15 09:40:48 -04:00
Ryan Kurtz
9e2a8d5604 Merge remote-tracking branch 'origin/GP-1-dragonmacher-window-growing-issue--SQUASHED' 2025-09-15 09:33:44 -04:00
Ryan Kurtz
5f6e3806b3 GP-0: Updating WhatsNew 2025-09-15 08:41:50 -04:00
ghidra1
a94ca1ed7e GP-5908 Corrected test failures 2025-09-12 17:48:51 -04:00
emteere
47acbe98bb GP-5763 Check for INT3 after calls as a non-returning indicator. Also only consider data refereces from the same function. 2025-09-12 20:05:16 +00:00
ghidra1
f6148f063a Merge remote-tracking branch 'origin/GP-5907-5908_ghidra1_ProjectTreeUpdateAndDelete--SQUASHED' 2025-09-12 15:35:03 -04:00
ghidra1
8d31fa97bb GP-5908 Corrected project tree change listener, domain folder events and various data tree actions to resolve issues when link-files are used. 2025-09-12 15:28:28 -04:00
Ryan Kurtz
09eabbdcd9 Merge remote-tracking branch 'origin/GP-5343_ryanmkurtz_mirroring'
(Closes #7430)
2025-09-12 13:39:58 -04:00
dragonmacher
fe4bb30704 Fixed detached windows growing every time they get shown 2025-09-12 12:39:44 -04:00
Ryan Kurtz
80caec9332 Merge branch 'GP-0_ryanmkurtz_PR-8483_rjooske_bsim-macOS' 2025-09-12 12:00:26 -04:00
Ryan Kurtz
71f91bfc17 GP-0: Strengthen check in CoffBinaryAnalysisCommand.canApply() to
prevent false positives
2025-09-12 11:52:36 -04:00
Ryan Kurtz
e40f817886 Merge remote-tracking branch
'origin/GP-5716_ghidranoob_HelpAboutSpecFiles--SQUASHED' (Closes #8163)
2025-09-12 10:32:31 -04:00
Dan
2a14a5f201 GP-5716: Port for FrontEnd. Changes per reivew. 2025-09-12 14:27:59 +00:00
Ryan Kurtz
c0fe84f0bd GP-5343: Importer filesystem mirroring 2025-09-12 10:04:53 -04:00
Ryan Kurtz
8c4e368fb2 Merge remote-tracking branch 'origin/GP-5984_James_create_enums_from_dwarf_macro_info--SQUASHED' 2025-09-12 09:16:50 -04:00
Ryan Kurtz
26685abc75 GP-5637: More improvements to the PyGhidra API 2025-09-12 09:15:05 -04:00
James
3b01f15e1c GP-5984 create enums from DWARF macro info entries 2025-09-12 12:47:14 +00:00
Ryan Kurtz
f52f5a7695 Merge branch 'GP-3947_ghidravision_DecompilerDebugXmlLoader_final' 2025-09-12 08:21:29 -04:00
ghidravision
38541a7ac6 GP-3947: Created an importer for the decompiler debug format which is
produced by the decompiler
2025-09-12 08:17:10 -04:00
Ryan Kurtz
da078607cb Merge remote-tracking branch 'origin/GP-5983-dragonmacher-decomp-function-location-nop' 2025-09-12 05:07:07 -04:00
Ryan Kurtz
1f04ac1915 Merge remote-tracking branch
'origin/GP-5886_ghidragon_toggle_display_function_variables_in_listing--SQUASHED'
(#8385)
2025-09-12 05:05:43 -04:00
ghidragon
8fc93d0d50 GP-5886 Added ability to toggle the display of function variables in the listing. 2025-09-11 13:43:40 -04:00
James
6e81a370ce GP-3139 added cspec for AARCH64 apple silicon 2025-09-11 17:36:37 +00:00
srichmo1
24b2275c0b tmp assigned rd0 instead of LR 2025-09-11 13:21:58 +00:00
srichmo1
be7458a436 Update avr32a_instruction_flow.sinc
The specification for avr32 says the LR register should be reserved for using return addresses, but in reality older compilers seem to use it to hold addresses for ICALL. When they do so without this fix the value in LR is immediately overwritten and during analysis only appears to be a function call to the opcode immediately after ICALL.
2025-09-11 13:21:56 +00:00
Ryan Kurtz
970c8fbdd5 Merge remote-tracking branch 'origin/patch' 2025-09-11 05:13:10 -04:00
LucaPalumbo
bc6701a24d Fix off-by-one in ElfHeader.getSectionLoadHeaderContaining
(Closes #8440)
2025-09-11 05:10:48 -04:00
dragonmacher
5d9904964e GP-5983 - Decompiler - Fixed bug that prevented overlapping functions
from being correctly decompiled
2025-09-10 20:15:31 -04:00
emteere
79eea09e64 GP-5985 added several more known non-returning PE functions 2025-09-10 23:06:54 +00:00
emteere
4b6d90366c GP-5526 Added section tag to function start patterns. New thunk patterns
in x86 gcc .plt section.  Changed priority of pre analyzer and
disassembly.
2025-09-10 22:55:14 +00:00
Ryan Kurtz
e330fc2077 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-10-25' 2025-09-10 14:20:49 -04:00
dragonmacher
6bba2ea685 Test fixes 2025-09-10 14:14:21 -04:00
Ryan Kurtz
2993827690 Merge remote-tracking branch
'origin/GP-5970-dragonmacher-scirpting-output-color--SQUASHED'
(Closes #2849)
2025-09-10 14:14:00 -04:00
Ryan Kurtz
59bcbba8cf Merge remote-tracking branch 'origin/GP-5978-dragonmacher-alt-graph-fix'
(Closes #8205)
2025-09-10 14:09:50 -04:00
Ryan Kurtz
272314d7af Merge remote-tracking branch 'origin/GP-5214_Dan_jitMpInt--SQUASHED' 2025-09-10 14:01:21 -04:00
Ryan Kurtz
eadb23c45a Merge remote-tracking branch
'origin/GP-5982-dragonmacher-symbol-tree-node-equals-npe' (Closes #8502)
2025-09-10 13:56:33 -04:00
dragonmacher
89b6306aea GP-5982 - Symbol Tree - NPE fix 2025-09-10 12:43:49 -04:00
Ryan Kurtz
657ec39201 GP-5637: More improvements to the PyGhidra API 2025-09-10 12:39:57 -04:00
Dan
df90de2367 GP-5214: Add support for multi-precision integer operations in the JIT-accelerated emulator. 2025-09-10 16:32:13 +00:00
dragonmacher
73bdee2546 GP-5970 - Scripting - A print/println methods to color console output 2025-09-10 12:21:42 -04:00
ghidorahrex
575dfa7572 GP-5902: Fixed gotos 2025-09-10 12:42:00 +00:00
Ryan Kurtz
5fbb052b28 Merge remote-tracking branch
'origin/GP-5964-dragonmacher-file-chooser-accessibility--SQUASHED'
(Closes #6310, Closes #7129, Closes #7130)
2025-09-10 05:47:31 -04:00
Ryan Kurtz
4f164e68a6 Merge branch 'GP-5969_VxWorksTableIDFix' 2025-09-10 05:26:33 -04:00
emteere
6d588dab00 GP-5969: Updated vxWorks symbol table finding script to better filter
out runs of pointers to locate the table, deleted old scripts, and fixed
de-mangling and labeling issues.
2025-09-10 05:25:47 -04:00
dragonmacher
f781273d49 Removed Alt to Alt Graph mapping, since the original bug has been fixed
in Java
2025-09-09 18:00:23 -04:00
dragonmacher
dd6561807b GP-5964 - File Chooser - Accessibility tweaks 2025-09-09 15:22:03 -04:00
Ryan Kurtz
58ca21b8db Merge remote-tracking branch 'origin/GP-5973_Dan_lldbsetupTypos'
(Closes #8498)
2025-09-09 13:58:40 -04:00
Ryan Kurtz
e5684417c0 Merge remote-tracking branch 'origin/GP-0_Dan_z3ExtProps' 2025-09-09 12:12:36 -04:00
Ryan Kurtz
fca6104af0 Merge remote-tracking branch 'origin/GP-5566_d-millar_lisa_SQUASH250908' 2025-09-09 11:45:24 -04:00
Ryan Kurtz
b5e91aeac0 Merge remote-tracking branch 'origin/patch' 2025-09-09 11:24:08 -04:00
Ryan Kurtz
0613d364fc Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-deadlock-fix-v3' into patch 2025-09-09 11:20:41 -04:00
dragonmacher
deddc84205 Fix for previous commit; backport of master fix 2025-09-09 11:18:24 -04:00
Dan
20314d087d GP-5973: Fix typos in lldbsetuputils.ps1 2025-09-09 15:12:19 +00:00
Dan
0645a51808 GP-0: Add extension.properties for SymbolicSummaryZ3 2025-09-09 15:06:13 +00:00
Ryan Kurtz
221939c0a9 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-deadlock-fix' into patch 2025-09-09 10:45:35 -04:00
Ryan Kurtz
5769aec3f3 Merge remote-tracking branch
'origin/GP-5967-dragonmacher-key-binding-ui-improvement' (Closes #7024)
2025-09-09 07:57:39 -04:00
Ryan Kurtz
998bea8c50 Merge remote-tracking branch 'origin/GP-5883_ghidragon_memory_search_bug' 2025-09-09 07:55:31 -04:00
Ryan Kurtz
457d342887 Merge remote-tracking branch 'origin/GP-5933_ghidragon_update_mem_searrch_to_support_mutliple_patterns--SQUASHED' 2025-09-09 07:52:29 -04:00
ghidragon
93f92fa879 GP-5933 Added support for searching memory for multiple patters in the same pass through memory 2025-09-08 14:50:28 -04:00
Ryan Kurtz
c18c7a8f50 GP-5637: More improvements to the PyGhidra API 2025-09-08 13:24:10 -04:00
Ryan Kurtz
213a52ad6e Merge remote-tracking branch 'origin/GP-5968_dev747368_handle_misreported_filesizes_better' 2025-09-08 13:10:53 -04:00
ghidragon
8272662627 GP-5883 fixed Memory Search Options GUI not initializing all options to
current model settings
2025-09-08 13:10:02 -04:00
Ryan Kurtz
cbde125a14 GP-5966: Fixing typo 2025-09-08 12:59:48 -04:00
Ryan Kurtz
5396e3a041 Merge remote-tracking branch 'origin/GP-0_dev747368_javadoc_errors'
(Closes #8496)
2025-09-08 12:11:01 -04:00
dev747368
c703e4541f GP-0 fix golang javadoc errors 2025-09-08 16:03:42 +00:00
d-millar
f5572ede99 GP-5566: first/last? changes for ghidra
GP-5566: fix for J

GP-5566: minor fixes

GP-5566: icons decl proper

GP-5566: minor tweaks

GP-5566: post-review

GP-5566: minor

GP-5566: mo better monitor logic

GP-5566: minor fix
2025-09-08 15:36:25 +00:00
Ryan Kurtz
1bc7bbfe8d GP-5966: Updates to CONTRIBUTING.md to address AI and binary files
(Closes #8465)
2025-09-08 09:16:19 -04:00
Ryan Kurtz
8be2ef3856 GP-0: Formatting CONTRIBUTING.md 2025-09-08 09:03:30 -04:00
Ryan Kurtz
14d7cf3ee6 Merge remote-tracking branch 'origin/patch' 2025-09-08 06:15:01 -04:00
Ryan Kurtz
8fad5fc01d Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-5-25' into patch 2025-09-08 06:10:37 -04:00
dragonmacher
48754fb98d Test deadlock fix 2025-09-06 16:30:31 -04:00
dragonmacher
fc39df2dd1 Test fixes 2025-09-05 20:56:09 -04:00
dragonmacher
d538513428 GP-5967 - Improved Options Key Binding UI 2025-09-04 17:02:11 -04:00
dev747368
d8c8d655d4 GP-5968 handle misreported file sizes better during import
Some file systems lie about file sizes, and cause Ghidra to display an
error that isn't helpful.  Now the error is more helpful.
2025-09-04 19:28:12 +00:00
Ryan Kurtz
6eab6693fc Merge remote-tracking branch 'origin/GP-1-dragonamcher-window-centering-fix' 2025-09-04 14:06:29 -04:00
Ryan Kurtz
a72ed3c63e Merge remote-tracking branch 'origin/GP-4214_IBlockAdd' 2025-09-04 13:42:39 -04:00
dragonmacher
c65c4c777f Fix for centering components on items inside of scroll panes 2025-09-04 13:35:08 -04:00
Ryan Kurtz
f501ffccd2 Merge remote-tracking branch 'origin/GP-5938_dev747368_sevenzip_bz2_getsize_npe' 2025-09-04 06:10:06 -04:00
caheckman
ce09332fcd GP-4214 Allow INT_ADD in the iblock 2025-09-03 20:20:41 +00:00
Ryan Kurtz
162733b585 GP-0: Moving MachoProgramUtils.addExternalBlock() to
AbstractProgramLoader
2025-09-03 11:31:56 -04:00
Ryan Kurtz
d460bf9382 Merge branch 'GP-0_ryanmkurtz_PR-8488_rjooske_fix_java-awt-headless-not-set' 2025-09-03 06:09:13 -04:00
Ryan Kurtz
49daf5f649 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-2-25-v2' 2025-09-03 05:53:25 -04:00
Ryosuke Takahashi
4677edfc70 let launch.properties file decide whether to use -Xshare:off 2025-09-03 06:04:03 +09:00
dev747368
2a1df77713 GP-5938 fix NPE when extracting bz2 2025-09-02 20:13:55 +00:00
dragonmacher
41e42eb825 Test fixes 2025-09-02 15:20:06 -04:00
Ryan Kurtz
eef9950870 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-2-25-v1' 2025-09-02 14:37:14 -04:00
dragonmacher
f7c1714bb1 Test fixes 2025-09-02 14:33:46 -04:00
Ryosuke Takahashi
4d12936a7c fix java.awt.headless=true inconsistently not being set 2025-09-03 01:46:15 +09:00
Ryan Kurtz
48a7542e47 Merge remote-tracking branch
'origin/GP-5950_MultipathConditionalConstants' (Closes #8455)
2025-09-02 11:14:53 -04:00
caheckman
e412f13b30 GP-5950 Add support for multipath conditional constants 2025-09-02 15:08:58 +00:00
Ryan Kurtz
074ddc29bb Merge remote-tracking branch 'origin/patch' 2025-09-02 09:32:27 -04:00
Ryan Kurtz
7f671da253 GP-3809: Fixing OSGi-related errors that occurred when script-related
directories were not readable (Closes #8466)
2025-09-02 09:29:46 -04:00
Ryan Kurtz
87a32d568c Merge remote-tracking branch
'origin/GP-5963_dragonmacher_PR-7346_fmagin_fmagin_table_accessor'
(Closes #7346)
2025-09-02 06:00:20 -04:00
Ryan Kurtz
8d20806d93 Merge remote-tracking branch 'origin/GP-4023-dragonmacher-debugger-markers-issue--SQUASHED' 2025-09-02 05:58:14 -04:00
Ryan Kurtz
84fb7f6d08 Merge remote-tracking branch 'origin/GP-5823_ghidragon_data_graph_improvements--SQUASHED' 2025-09-02 05:56:50 -04:00
Ryan Kurtz
1ca9e32a57 Merge remote-tracking branch 'origin/patch' 2025-09-02 05:53:32 -04:00
Ryan Kurtz
f38c6727a0 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-8-30-25' into patch 2025-09-02 05:50:45 -04:00
Ryosuke Takahashi
2be37e6f7b BSim: fix malformed arguments to ./configure on macOS 2025-09-01 13:54:10 +09:00
dragonmacher
33f1f38292 Test fixes 2025-08-30 13:11:34 -04:00
CUB3D
a6e9ea0900 mips: Don't use reserved keywords for names 2025-08-30 15:46:00 +01:00
CUB3D
a72a68c461 mips: Use & ~1 rather than & -2 2025-08-30 14:47:57 +01:00
ghidragon
ee9a0def13 GP-5834 small improvements to data graph 2025-08-29 19:46:12 -04:00
dragonmacher
72c410fd1c Refactor of new methods; test 2025-08-29 19:28:10 -04:00
Florian Magin
74022d3586 Concise creation of simple DynamicTableColumns 2025-08-29 15:43:27 -04:00
dragonmacher
b36dfb6766 GP-4023 - Fix to not show debugger bookmarks in the CodeBrowser 2025-08-29 14:10:16 -04:00
Ryan Kurtz
e0a060660b GP-5961: Deprecating pyghidra.open_program() and pyghidra.run_script()
Also fixed a recent regression with calling pyghidra.run_script()
2025-08-29 13:47:18 -04:00
Ryan Kurtz
ec28004339 Merge remote-tracking branch 'origin/GP-5959_James_improve_dwarf_macro_string_parsing' 2025-08-29 13:24:38 -04:00
Ryan Kurtz
fc77ef0816 Merge remote-tracking branch 'origin/GP-5962_ghizard_PDB_Fix_odd_situation_of_one_byte_reservation_for_empty_base_class_and_after_vxptrs' 2025-08-29 13:23:25 -04:00
Ryan Kurtz
706dc7c99b Merge remote-tracking branch 'origin/GP-5958_James_x86_thunk_di_fixup'
(Closes #8416)
2025-08-29 13:21:02 -04:00
ghizard
4a79954ca7 GP-5962 - PDB - Fix situation of empty, one-byte-reserved, direct,
non-virtual bases coming after self vxptrs
2025-08-29 12:49:53 -04:00
James
0fd2c297a1 GP-5959 improved DWARF macro string parsing 2025-08-29 16:35:19 +00:00
ghidorahrex
18eeb4b8c3 GP-5243: Fixed spacing issue 2025-08-29 14:52:04 +00:00
Andras Gemes
18a7f952c8 Processors: Rename TriCore Siemens to Infineon 2025-08-29 14:52:01 +00:00
Ryan Kurtz
4be538b42e Merge remote-tracking branch 'origin/patch' 2025-08-29 10:14:28 -04:00
Ryan Kurtz
02abd6b4f3 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-logging-fix' into patch 2025-08-29 10:12:52 -04:00
dragonmacher
8e7613dac3 Test logging fix 2025-08-29 09:39:29 -04:00
Ryan Kurtz
58171afd08 Merge remote-tracking branch 'origin/patch' 2025-08-29 04:47:42 -04:00
Ryan Kurtz
06429f1795 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-8-28-25' into patch 2025-08-29 04:42:04 -04:00
dragonmacher
eb0e2a95a7 Test fixes 2025-08-28 15:14:51 -04:00
Ryan Kurtz
91ec97a946 Merge remote-tracking branch
'origin/GP-5769-dragonmacher-combo-box-enter-handling' (Closes #8280)
2025-08-28 14:19:24 -04:00
Ryan Kurtz
44a16fd6ba Merge remote-tracking branch 'origin/patch' 2025-08-28 14:13:53 -04:00
Ryan Kurtz
2537d2a329 Merge remote-tracking branch
'origin/GP-5957-dragonmacher-ascii-exporter-xref-fix' into patch
(Closes #8468)
2025-08-28 14:09:29 -04:00
Ryan Kurtz
b25e7c12a1 Merge remote-tracking branch 'origin/GP-5470_dev747368_golang_typeinfo_1_24_1_25' 2025-08-28 12:23:12 -04:00
dev747368
86a525aef0 GP-5470 Golang json snapshot data, go1.24, go1.25, swissmap.
Remove usage of golang*.gdt for bootstrap type info.  Instead all types
are reconstituted from the info in the .json files.

Json data now omits more values that are empty.

Json data now has more consistent fully specified type names.

Remove option to create bootstrap gdt files.

Normalize 'Go' name usage where possible without changing previous
saved properties.

Handle swissmap typename changes.
2025-08-28 15:12:21 +00:00
Ryan Kurtz
90d498e27c Merge remote-tracking branch 'origin/GP-0-dragonmacher-patch-merge' 2025-08-28 09:22:17 -04:00
dragonmacher
0ad5aa6710 Merge remote-tracking branch 'origin/patch' into
GP-0-dragonmacher-patch-merge
2025-08-28 09:18:38 -04:00
Ryan Kurtz
88303ac825 Merge remote-tracking branch
'origin/GP-5951-dragonmacher-decompiler-syntax-hl-fix--SQUASHED' into
patch (Closes #8419)
2025-08-28 06:19:24 -04:00
Ryan Kurtz
3a243ed964 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-8-27-25' 2025-08-28 05:32:29 -04:00
dragonmacher
dc72238178 GP-5769 - Updated dialogs with combo boxes to have consistent behavior
when the Enter key is pressed
2025-08-27 19:47:35 -04:00
dragonmacher
963bc62f02 Test fixes 2025-08-27 18:54:34 -04:00
dragonmacher
0f89e04e70 GP-5951 - Decompiler - Changed recent middle-mouse highlight update to restore highlighting of if/else keywords. 2025-08-27 18:06:39 -04:00
dragonmacher
210520cd07 GP-5957 - Fixed missing reference type in the ASCII and HTML exporters 2025-08-27 17:31:31 -04:00
James
6229740f8b GP-5958 added callfixup for get_pc_thunk.di to x86gcc.cspec 2025-08-27 19:15:30 +00:00
Ryan Kurtz
8571e83b36 Merge remote-tracking branch 'origin/GP-5913_ghidranoob_Decomp_StructureMember_ParentPath--SQUASHED' 2025-08-27 12:51:15 -04:00
Ryan Kurtz
66a2caa2dc Merge remote-tracking branch 'origin/GP-5650_Dan_moveDynamicUpdateToToolbar--SQUASHED' 2025-08-27 12:48:28 -04:00
Dan
f2743a259e GP-5650: Replace 'Dynamic Update' checkbox in 'Instruction Info' with toolbar action. 2025-08-27 16:15:29 +00:00
ghidranoob
46febafe16 GP-5913: Added parent path to DataType Listing and Decompiler Hover 2025-08-27 16:00:11 +00:00
Ryan Kurtz
7a4100d54b Merge remote-tracking branch 'origin/patch' 2025-08-27 11:30:41 -04:00
Ryan Kurtz
5c00ab8e08 Merge remote-tracking branch
'origin/GP-5906_ghidorahrex_x86_sse4a_instructions--SQUASHED' into patch
(Closes #8335)
2025-08-27 11:25:24 -04:00
Ryan Kurtz
6521024f36 Merge remote-tracking branch 'origin/GP-5948_ghidra007_AutoVT_improved_operand_equivalency_check--SQUASHED' into patch 2025-08-27 11:21:14 -04:00
Ryan Kurtz
c85d7831cc GP-0: Upping patch to 11.4.3 2025-08-27 11:19:47 -04:00
Ryan Kurtz
f57b520837 GP-5825: Fixing issue with prior commit 2025-08-27 10:47:13 -04:00
Ryan Kurtz
b5bfcc0fbf GP-5825: Fixing regression with loading libraries from container file 2025-08-27 06:00:56 -04:00
Ryan Kurtz
fc1c06ea39 Merge remote-tracking branch 'origin/patch' 2025-08-27 04:56:05 -04:00
Ryan Kurtz
13ffa3a4a8 Merge remote-tracking branch 'origin/GP-5792_dev747368_DWARF_macro_info' 2025-08-26 12:51:07 -04:00
Ryan Kurtz
b12aff1cd4 Merge remote-tracking branch 'origin/GP-5851_MultiSlotAssignFixes' 2025-08-26 12:49:34 -04:00
caheckman
f6495e4146 GP-5851 Fix tiling truncations for odd data-type sizes in
MultiSlotAssign. Fix for big endian multi-slot return value.
2025-08-26 16:40:16 +00:00
ghidra1
0b61b34bb9 GP-0 Updated ChangeHistory for 11.4.2 release 2025-08-26 12:34:13 -04:00
ghidra1
8689672ebe Merge remote-tracking branch 'origin/GP-5945_emteere_e500IncludedExtensionFixes--SQUASHED' into patch 2025-08-26 12:05:54 -04:00
ghidra007
f71ae463d2 GP-5948 Improved auto vt dupe match's operand equivalency check to account for internal function ref operands. 2025-08-26 16:05:05 +00:00
emteere
f391ddb87c GP-5945 Fixed PowerPC e500 instruction extension issues and added function start pattern variants. 2025-08-26 11:59:06 -04:00
ghidorahrex
393e7935af GP-5906: Added x86 SSE4a instructions 2025-08-26 08:33:50 -04:00
Ryan Kurtz
eb7dbaa04f Merge remote-tracking branch 'origin/GP-1-dragonmacher-window-size-issue--SQUASHED' 2025-08-26 05:20:53 -04:00
Ryan Kurtz
4e6d7b1650 Merge remote-tracking branch 'origin/GP-0-dragonmacher-table-row-height-fix' 2025-08-26 05:20:11 -04:00
Ryan Kurtz
799200c528 Merge remote-tracking branch 'origin/GP-5930_ghidragon_pcode_field_toggle_action--SQUASHED' 2025-08-26 05:18:53 -04:00
Ryan Kurtz
6f082ff081 Merge remote-tracking branch 'origin/GP-5947-dragonmacher-decomp-middle-mouse-color' 2025-08-26 05:17:34 -04:00
Ryan Kurtz
dc1c70e2bf Merge remote-tracking branch 'origin/GP-5926_Dan_refsToRange--SQUASHED' 2025-08-26 05:16:03 -04:00
Ryan Kurtz
cd18bef25a Merge remote-tracking branch 'origin/GP-4029_ghintern_mips_powerpc_cspecs' 2025-08-26 05:13:29 -04:00
Ryan Kurtz
d0e0dba587 Merge remote-tracking branch 'origin/GP-5892_Dan_updateTtdHelp' 2025-08-26 05:10:06 -04:00
dragonmacher
ba94153c21 Fixed detached Byte Viewer size being too tall 2025-08-25 17:23:39 -04:00
ghidranoob
cd9a57d859 Show spec files in Help About Program 2025-08-25 20:00:47 +00:00
James
d9a5ad2ed0 GP-4029 updated mips and ppc language versions 2025-08-25 19:31:22 +00:00
Dan
2ea7f28f2c GP-5892: Update help for TTD. 2025-08-25 19:29:07 +00:00
ghintern
d91aebe74e GP-4030: Fix MIPS base and eabi 32/64-bit cspecs
GP-4029: Update base PowerPC 32/64-bit cspecs
2025-08-25 19:15:08 +00:00
Ryan Kurtz
94212ab653 Merge remote-tracking branch 'origin/GP-5934_SborrowScarry'
(Closes #8396, Closes #8400)
2025-08-25 13:16:53 -04:00
James
c3c09f2f17 GP-5792 parse DWARF .debug_macro sections 2025-08-25 16:55:45 +00:00
Dan
1b9106b797 GP-5926: Change TraceReferenceManager to use address ranges for the 'to' part. 2025-08-25 16:49:23 +00:00
ghidragon
45c19494b7 GP-5930 Quick toggle for PCode field
tmp
2025-08-25 11:50:24 -04:00
Ryan Kurtz
b9cd9016b7 Merge remote-tracking branch 'origin/GP-5944_dev747368_gfilesystem_file_attrs_fixup' 2025-08-25 11:41:13 -04:00
Ryan Kurtz
12ac4660a1 Merge remote-tracking branch 'origin/GP-5864_Dan_addEmulatorUtilities--SQUASHED' 2025-08-25 05:41:08 -04:00
Ryan Kurtz
cbaf429587 Merge remote-tracking branch
'origin/GP-5932-dragonmacher-move-windows-on-screen' (Closes #8428)
2025-08-25 05:39:52 -04:00
dragonmacher
aae2843f4d GP-5947 - Created new theme value for the Decompiler's middle-mouse
highlight color so that the Listing and Decompiler colors may change
independently.
2025-08-22 18:00:48 -04:00
Dan
d577925d75 GP-5864: Add EmulatorUtilities 2025-08-22 19:00:40 +00:00
Ryan Kurtz
4fcc1febdd Merge remote-tracking branch 'origin/GP-5904_ghidorahrex_PR-8394_RibShark_fix-80251-anl-group-fix' 2025-08-22 09:39:30 -04:00
Ryan Kurtz
826e52033e Merge remote-tracking branch 'origin/GP-5903_ghidorahrex_PR-8393_RibShark_80251-anl-name-fix' 2025-08-22 09:38:44 -04:00
Ryan Kurtz
f6d35f0d70 Merge remote-tracking branch
'origin/GP-5885-dragonmacher-next-instruction-fix--SQUASHED'
(Closes #8385)
2025-08-22 09:34:35 -04:00
dragonmacher
bdf3c1d2f6 GP-5885 - Updated the Next Instruction action to jump to the the function entry when in the function header 2025-08-22 09:15:56 -04:00
Ryan Kurtz
dc09c94c81 Merge remote-tracking branch
'origin/GP-5941_d-millar_PR-8457_technologeli_fix_for_taint_option'
(Closes #8452, Closes #8457)
2025-08-22 06:10:42 -04:00
Ryan Kurtz
58007f4f88 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-8-21-25' 2025-08-22 06:07:03 -04:00
Ryan Kurtz
12a926bd8b Merge remote-tracking branch 'origin/GP-1-dragonmacher-symbol-tree-bug-fix' 2025-08-22 06:06:43 -04:00
Ryan Kurtz
8fa692b0fa Merge remote-tracking branch 'origin/patch' 2025-08-22 06:06:11 -04:00
Ryan Kurtz
5c1e6540f1 Merge remote-tracking branch 'origin/GP-5860-dragonmacher-function-comparison-fix' 2025-08-22 05:57:39 -04:00
Ryan Kurtz
daec88be49 Merge branch 'GP-5917_emteere_SwitchAnalyzerSpeedIssue' into patch 2025-08-22 05:54:45 -04:00
emteere
48adb5ec25 GP-5917 Use a hashset for functions to reduce reduntant decompiler use
in functions that have more than one possible switch
2025-08-22 05:54:25 -04:00
dragonmacher
5af94b1dd4 Symbol tree bug fix 2025-08-21 19:49:10 -04:00
dragonmacher
3fb9ede462 GP-5932 - Updated off-screen window handling 2025-08-21 19:01:12 -04:00
dev747368
3b0ee82a5f GP-5944 cleanup GFilesystem file attribute handling 2025-08-21 22:31:11 +00:00
dragonmacher
bff95dc7c6 Test fixes 2025-08-21 14:25:45 -04:00
d-millar
b9049298af GP-5941: PR #8457 2025-08-21 17:10:26 +00:00
Ryan Kurtz
7b36c1649f Merge remote-tracking branch 'origin/GP-5879_Dan_reworkEmuUiIntegration--SQUASHED' 2025-08-21 11:04:12 -04:00
Elijah Lieu
d5df2590dc Fix: TaintAnalysis query use chosen file if none set in tool options 2025-08-21 10:01:38 -04:00
Dan
72001639a8 GP-5879: Add callbacks to PcodeEmulator. Refactor for composition vice inheritance. 2025-08-21 13:22:49 +00:00
Ryan Kurtz
34d5435740 Merge remote-tracking branch
'origin/GP-5897_Dan_bracketsInBlocksBreaksEmu' (Closes #8398)
2025-08-21 06:47:43 -04:00
Ryan Kurtz
c80f792ee8 Merge remote-tracking branch 'origin/patch' 2025-08-21 06:45:30 -04:00
Ryan Kurtz
0a436cbc4b Merge branch 'GP-0_ryanmkurtz_swift-links' into patch 2025-08-21 06:43:48 -04:00
Ryan Kurtz
3abf7f765e GP-0: Updating Swift documentation links 2025-08-21 06:42:41 -04:00
Ryan Kurtz
09e625f5fe Merge branch 'GP-5873_ryanmkurtz_PR-8450_ZERO-A-ONE_ida9' (Closes #8450) 2025-08-21 06:08:25 -04:00
Ryan Kurtz
4bcb650313 GP-5873: Certify 2025-08-21 06:07:03 -04:00
dragonmacher
1b28cfaf86 Fixed table row resize issue when adding more than one data row per
table row
2025-08-20 12:10:49 -04:00
ZERO-A-ONE
a312aaabb1
Update idaxml.py 2025-08-20 23:05:20 +08:00
ZERO-A-ONE
2484d2b548
Update xml_exporter.py 2025-08-20 22:47:57 +08:00
Ryan Kurtz
e4e2e4369e Merge remote-tracking branch 'origin/patch' 2025-08-20 07:59:09 -04:00
Ryan Kurtz
2e0e64b7c6 Merge branch 'GP-5648_ryanmkurtz_cert-headers' into patch 2025-08-20 06:17:17 -04:00
Ryan Kurtz
cdc5af10e4 GP-5648: Certification header support for .bat and .ps1 files 2025-08-20 05:58:46 -04:00
Ryan Kurtz
c5d0f6925b Merge remote-tracking branch 'origin/GP-5937-dragonmacher-symbol-tree-fixes' 2025-08-20 05:15:18 -04:00
Ryan Kurtz
384d72782a Merge remote-tracking branch 'origin/patch' 2025-08-20 05:12:40 -04:00
Ryan Kurtz
154aa4460c Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-8-19-25-2' into patch 2025-08-20 05:10:24 -04:00
ZERO-A-ONE
f47258c2b2 Fixed idaxml working in IDA 9.x 2025-08-20 12:10:48 +08:00
dragonmacher
f7670d8da0 GP-5860 - Fixed a regression in the Function Comparison view 2025-08-19 18:46:00 -04:00
ghidra1
d38f512437 GP-1 Added ability to skip building of all natives for gradle build 2025-08-19 18:08:30 -04:00
caheckman
8217593e87 GP-5934 Fix handling of integer minimum in SBORROW, SLESS rules, add
SCARRY rule.
2025-08-19 21:22:37 +00:00
dragonmacher
81fce4fed5 Fixes for Symbol Tree exceptions 2025-08-19 17:05:56 -04:00
dragonmacher
3e240563ab Test debug 2025-08-19 16:49:40 -04:00
CUB3D
3c095be956 Fix LI failing to match in some cases 2025-08-19 20:52:02 +01:00
CUB3D
63919665ec mips: Correctly handle 64-bit regs in INS and EXT 16e2 instructions 2025-08-19 20:52:02 +01:00
CUB3D
b31997bba0 mips: Add mips16e2 instructions 2025-08-19 20:52:02 +01:00
Ryan Kurtz
4172e448dd Merge remote-tracking branch 'origin/patch' 2025-08-19 14:56:22 -04:00
Ryan Kurtz
21b27795dd Merge remote-tracking branch 'origin/GP-5889_SwitchGuardDuplicate' into patch 2025-08-19 14:53:47 -04:00
Ryan Kurtz
a48c081e61 Merge remote-tracking branch
'origin/GP-5720-dragonmacher-drop-down-field-contains-mode--SQUASHED'
(Closes #4725, Closes #8203)
2025-08-19 13:01:58 -04:00
Ryan Kurtz
c7b125b1c7 Merge remote-tracking branch 'origin/GP-1-dragonmacher-tooltip-fix--SQUASHED' 2025-08-19 10:00:01 -04:00
Ryan Kurtz
c14f03c79a Merge remote-tracking branch 'origin/GP-5927_CondExecWithSubpiece'
(Closes #8022)
2025-08-19 09:56:01 -04:00
Ryan Kurtz
ed1a1b81f0 Merge remote-tracking branch
'origin/GP-3648-dragonmacher-fg-comparisons' (Closes #1154)
2025-08-19 09:53:50 -04:00
Ryan Kurtz
bcefa8bf09 Merge remote-tracking branch 'origin/patch' 2025-08-19 07:22:55 -04:00
Ryan Kurtz
105f9ef570 GP-5916: Checking for IMAGE_FUNCTION_RUNTIME_ENTRY.BeginAddress != 0
before creating function (#8414)
2025-08-19 07:19:10 -04:00
Ryan Kurtz
729642cbf6 Merge remote-tracking branch 'origin/GP-5912_emteere_SuperH_GBR' into
patch (Closes #4387)
2025-08-19 05:57:47 -04:00
Ryan Kurtz
be0ca420eb GP-5855: TLB prebuild fix 2025-08-19 05:55:23 -04:00
dragonmacher
3c90216365 GP-3648 - Add Function Graph to Function Comparison display 2025-08-18 17:14:26 -04:00
dragonmacher
ce0c7b9229 GP-5720 - Drop Down Modes - Added modes to drop-down text fields to control how matches are found 2025-08-18 16:39:20 -04:00
dragonmacher
b4f7c920e6 Fixed tooltip usage in memory search widget 2025-08-18 16:36:08 -04:00
Ryan Kurtz
6773801f6e Merge remote-tracking branch 'origin/GP-5581_sleighPiecewiseUniques--SQUASHED' 2025-08-18 13:44:28 -04:00
Ryan Kurtz
c001c4c65d Merge remote-tracking branch 'origin/patch' 2025-08-18 13:43:42 -04:00
Ryan Kurtz
f4ddff1a2c Merge remote-tracking branch 'origin/GP-5935_ryanmkurtz_pe' into patch
(Closes #8446)
2025-08-18 13:41:23 -04:00
Ryan Kurtz
328042f00f GP-5935: The IMAGE_RESOURCE_DIRECTORY_ENTRY data type is now correctly
defined as a structures instead of a union
2025-08-18 13:40:34 -04:00
Dan
42115f6df0 GP-5581: Allow optimization by truncation of subpieced unique varnodes. 2025-08-18 17:12:23 +00:00
Ryan Kurtz
6bc3871e67 Merge remote-tracking branch 'origin/GP-5923_dev747368_dynamiclabels_globalnamespace' 2025-08-18 12:50:21 -04:00
Ryan Kurtz
16a2e78806 Merge remote-tracking branch 'origin/GP-5914-dragonmacher-symbol-tree-nav-fix' 2025-08-18 12:47:50 -04:00
Ryan Kurtz
245ba82d8b Merge remote-tracking branch 'origin/GP-5793-dragonmacher-symbol-tree-external-path-update' 2025-08-18 12:45:22 -04:00
Ryan Kurtz
15ac693e76 Merge remote-tracking branch 'origin/GP-5855_ryanmkurtz_tlb--SQUASHED' 2025-08-18 10:54:45 -04:00
Ryan Kurtz
3ff52f05b1 GP-5855: Always use TLB prebuild 2025-08-18 10:51:56 -04:00
Ryan Kurtz
542c2aa617 Merge remote-tracking branch 'origin/patch' 2025-08-18 07:21:13 -04:00
Ryan Kurtz
465fba743b GP-5901: Fixing Gradle 9 archive file permissions 2025-08-18 07:15:49 -04:00
dragonmacher
42f4b3462e GP-5793 - Symbol Tree - Updated to respond to external program path
changes
2025-08-15 11:07:53 -04:00
dev747368
ad32d0177b GP-5923 don't default to Global namespace for dynamic symbols in columns
Tweak display of namespace columns to not default to Global namespace
for dynamic symbols.
2025-08-15 15:01:58 +00:00
Ryan Kurtz
70e28cf706 Merge remote-tracking branch 'origin/GP-5931_dev747368_fix_dwarf64_offsets--SQUASHED' 2025-08-15 06:01:23 -04:00
dragonmacher
7b61358488 GP-5914 - Symbol Tree - Fixed issue that caused navigation when opening
a folder
2025-08-14 19:38:27 -04:00
dev747368
46b0b17c74 GP-5931 fix problem reading dwarf file info in a DWARF64 file
Deserialization was using the dwarf intSize from the containing compile
unit instead of the dwarf intSize from the DWARFLine unit header.  When
this disagreed with the compUnit's intSize, we would read too much or
too little.
2025-08-14 13:35:57 -04:00
caheckman
bb19782c35 GP-5927 Add support for SUBPIECE removal in ConditionalExecution 2025-08-13 23:22:35 +00:00
Ryan Kurtz
98b938cc65 Merge remote-tracking branch 'origin/patch' 2025-08-13 06:05:56 -04:00
Ryan Kurtz
2ca382da7d Merge remote-tracking branch 'origin/GP-5928_ghizard_PDB_Fixed_issue_with_members_only_layout_losing_members' into patch 2025-08-13 06:02:33 -04:00
Ryan Kurtz
ed7c7019cd Merge remote-tracking branch
'origin/GP-5910_ryanmkurtz_IntelHexExporter--SQUASHED' into patch
(Closes #8409)
2025-08-13 06:00:28 -04:00
Ryan Kurtz
8c4bb84489 GP-5910: IntelHexExporter fixes 2025-08-13 05:56:40 -04:00
ghizard
dcd26f14d2 GP-5928 - PDB - Fix lost members of some composites 2025-08-12 16:46:46 -04:00
Ryan Kurtz
c0127326f8 Merge branch 'GP-0_ryanmkurtz_PR-8423_inferenceus_readme-fix' 2025-08-12 06:32:25 -04:00
Ryan Kurtz
29b8cdf394 Merge remote-tracking branch
'origin/GP-4069_dev747368_dwarf_expression_eval--SQUASHED'
(Closes #5982, Closes #6974, Closes #2322, Closes #5311)
2025-08-12 06:07:44 -04:00
Ryan Kurtz
1b230c5dad Merge remote-tracking branch 'origin/GP-5891_Dan_fixMissingDebuggerJavadocs--SQUASHED' 2025-08-12 06:05:16 -04:00
ghidra1
520c6b7b98 Merge remote-tracking branch 'origin/patch' 2025-08-11 17:55:15 -04:00
ghidra1
cf61a2ffaf Merge remote-tracking branch 'origin/GP-5918_ELF_MIPS64_RelocationFix' into patch 2025-08-11 17:51:36 -04:00
ghidra1
f7138da6f7 GP-5918 Corrected ELF Relocation regression for MIPS 64-bit introduced
with GP-5826 in Ghidra 11.4.1
2025-08-11 13:00:58 -04:00
dev747368
e908ab6fbf DWARF expression handling refactor
Cleanup logic of expression evaluation, stub out resolution of register
values to a callback in case we want to use constant propagation to try
to allow successful calculations, and add support for default static
values for treating an arch's stack frame register (e.g. RBP) like the
static CFA value we already have support for.

Add option to decorate params and local vars with their DWARF storage
location info.

Handle arrays with unspecified element type.
2025-08-11 11:21:28 -04:00
Dan
66db634962 GP-5897: Handle brackets in block names when launching emulation. 2025-08-11 14:11:53 +00:00
Dan
ce96f8551d GP-5891: Include Debugger javadocs in the build. 2025-08-11 13:12:28 +00:00
inference
569a0a95a2
fix(doc): unify program names 2025-08-11 12:25:05 +00:00
inference
f62f015fef
fix(doc): Program names in README 2025-08-10 12:26:19 +00:00
caheckman
9c9938e066 GP-5889 Check for common source in duplicated switch guard detection 2025-08-08 21:59:45 +00:00
Ryan Kurtz
593c3c10e9 Merge remote-tracking branch 'origin/patch' 2025-08-07 12:20:37 -04:00
Ryan Kurtz
8055da80b8 Merge remote-tracking branch 'origin/GP-5915_ConditionalJoinFix' into
patch (Closes #8310)
2025-08-07 12:14:49 -04:00
Ryan Kurtz
42794bc3fa Merge branch 'GP-5873_ryanmkurtz_ida' (Closes #7392) 2025-08-07 11:27:51 -04:00
caheckman
29b7cb6552 GP-5915 Fix bug in ConditionalJoin 2025-08-07 15:19:32 +00:00
Ryan Kurtz
82f50a9305 GP-5873: New idaxml.py for IDA 9.x 2025-08-07 09:41:37 -04:00
emteere
28313c6574 GP-5912 Adding SH2 GBR register to the preserved by call list 2025-08-07 12:44:05 +00:00
Ryan Kurtz
6c44623c41 Merge branch 'GP-0_ryanmkurtz_PR-8408_widberg_fix-bitmap-resource' 2025-08-07 08:41:23 -04:00
Ryan Kurtz
4c51d0e02c GP-0: Certify and warning removal 2025-08-07 08:40:44 -04:00
Ryan Kurtz
d769137130 Merge remote-tracking branch 'origin/patch' 2025-08-07 06:44:53 -04:00
Ryan Kurtz
3e550cf08f GP-5919: Backporting decompiler highSymbol NPE fix (Closes #8413) 2025-08-07 06:41:37 -04:00
Ryan Kurtz
39c6a6db59 Merge remote-tracking branch
'origin/GP-5899_dev747368_fidplugin_startup_speed' (#7887)
2025-08-06 14:48:10 -04:00
Ryan Kurtz
d681ae53ce Merge remote-tracking branch 'origin/patch' 2025-08-06 13:20:52 -04:00
Ryan Kurtz
a638bb9a66 GP-5916: Fixing PE ImageFuntimeFunctionEntries 11.4.1 regression
(Closes #8414)
2025-08-06 13:17:00 -04:00
Ryan Kurtz
483cd9a799 Merge remote-tracking branch 'origin/GP-5795_Dan_commentColumnForWatch'
(Closes #8302)
2025-08-06 09:13:44 -04:00
dev747368
f53671b43d GP-5899 FidPlugin startup speed
Avoid touching FidFileManager during ctor / init, modernize action
creation / management.

Improves codebrowser startup speed a small amount.
2025-08-05 22:59:56 +00:00
Ryan Kurtz
31dc3a2f11 Merge remote-tracking branch 'origin/GP-5911_dev747368_fix_windows_rootdir_naming' 2025-08-05 13:55:14 -04:00
dev747368
285fe59bcb GP-5911 fix FS & drive letter root dir lookup problem.
Looking up "c:/" would treat it as the global "/" root dir.
2025-08-05 17:25:58 +00:00
Ryan Kurtz
e01d4b3710 Merge remote-tracking branch
'origin/GP-5898_dev747368_faster_jythonplugin_startup' (#7887)
2025-08-05 12:44:14 -04:00
Ryan Kurtz
ef3bd8b2b7 Merge remote-tracking branch 'origin/GP-4478_ghidranoob_Assembler_F1Help--SQUASHED' 2025-08-04 15:14:25 -04:00
ghidranoob
6096a50042 GP-4478: More review changes
GP-4478: Review changes
GP-4478 Add help to assembler
Add help to assembler
Initial commit
2025-08-04 14:41:28 -04:00
widberg
03593e348d [BitmapResource] Fix channel swaped and black icons 2025-08-04 13:03:59 -04:00
Ryan Kurtz
e90c852353 GP-0: Removing use of deprecated Validate.nonNull() 2025-08-04 07:17:08 -04:00
Ryan Kurtz
a60e2d8637 GP-0: Upping Gradle wrapper to 9.0.0 2025-08-04 06:48:15 -04:00
Ryan Kurtz
3307a0b06b Merge remote-tracking branch 'origin/patch' 2025-08-04 06:26:27 -04:00
Ryan Kurtz
22de131dd0 Merge branch 'GP-5901_ryanmkurtz_gradle9' into patch 2025-08-04 06:22:05 -04:00
Ryan Kurtz
2180fd2851 GP-5901: Support for Gradle 9.0.0 2025-08-04 06:21:21 -04:00
Ryan Kurtz
18f7ed85da Merge remote-tracking branch 'origin/GP-5869_DecompilerIndexAndShift'
(Closes #7474)
2025-08-01 12:58:25 -04:00
Ryan Kurtz
0a97fd8feb Merge branch 'GP-0_ryanmkurtz_PR-8404_gemesa_bsim-cmd-line-ref' 2025-08-01 06:37:56 -04:00
Andras Gemes
42bc550c0b
BSim: Remove extra characters in CommandLineReference.html 2025-08-01 09:05:51 +02:00
caheckman
943ccd322d GP-5869 Fix for some out of bounds array indices and shift amounts 2025-07-31 22:56:19 +00:00
dev747368
9550bef788 GP-5898 speed up JythonPlugin startup
Delay printing welcome text until the console is displayed.
2025-07-31 20:33:09 +00:00
Ryan Kurtz
213a9e48cc Merge remote-tracking branch 'origin/GP-0_ghidragon_splash_screen_update' 2025-07-31 15:25:42 -04:00
Ryan Kurtz
49bdfd8df4 Merge remote-tracking branch
'origin/GP-5807-dragonmacher-file-choose-slowness--SQUASHED'
(Closes #8284, Closes #4725)
2025-07-31 15:21:25 -04:00
Ryan Kurtz
c311ecd87d Merge remote-tracking branch 'origin/patch' 2025-07-31 14:14:58 -04:00
ghidra1
ada4b5c4ae GP-0 Update Ghidra patch version to 11.4.2 2025-07-31 13:52:18 -04:00
ghidra1
da059ed907 GP-0 Reverted version to 11.4.1 for patch release 2025-07-31 11:21:23 -04:00
dragonmacher
7202703a60 GP-5807 - File Chooser - Large directory speed ups 2025-07-31 10:44:36 -04:00
Ryan Kurtz
3c0a0fa063 Merge remote-tracking branch 'origin/patch' 2025-07-30 16:17:49 -04:00
Ryan Kurtz
7426d4b685 Merge remote-tracking branch 'origin/GP-5884_ghizard_PDB_CPP_Reconstruct_parent_source_order' 2025-07-30 15:15:03 -04:00
ghidragon
66421c88f9 Tweaks to SplashScreen 2025-07-30 14:46:33 -04:00
Nicolas Iooss
4f3f1059dc
Add eBPF instruction CALLX for indirect calls
When clang encounters indirect calls in eBPF programs, it emits a call
instruction with a register parameter (`BPF_X`) instead of an immediate
value (`BPF_K`). This encoding (`BPF_JMP | BPF_CALL | BPF_X = 0x8d`) is
decoded by llvm-objdump as `callx`.

For example, here is a simple C program with an indirect call:

    extern void (*ptr_to_some_function)(void);
    void call_ptr_to_some_function(void) {
        ptr_to_some_function();
    }

Compiling and disassembling it gives with clang 14.0 (and LLVM 14.0):

    $ clang -O2 -target bpf -c indirect_call.c -o indirect_call.ebpf
    $ llvm-objdump -rd indirect_call.ebpf

    indirect_call.ebpf:  file format elf64-bpf

    Disassembly of section .text:

    0000000000000000 <call_ptr_to_some_function>:
           0:  18 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  r1 = 0 ll
                    0000000000000000:  R_BPF_64_64  ptr_to_some_function
           2:  79 11 00 00 00 00 00 00  r1 = *(u64 *)(r1 + 0)
           3:  8d 00 00 00 01 00 00 00  callx r1
           4:  95 00 00 00 00 00 00 00  exit

Contrary to usual eBPF instructions, `callx`'s register operand is
encoded in the immediate field. This encoding is actually specific to
LLVM (and clang). GCC used the destination register to store the target
register.

LLVM 19.1 was modified to use GCC's encoding:
https://github.com/llvm/llvm-project/pull/81546 ("BPF: Change callx insn
encoding"). For example, in an Alpine Linux 3.21 system:

    $ clang -target bpf --version
    Alpine clang version 19.1.4
    Target: bpf
    Thread model: posix
    InstalledDir: /usr/lib/llvm19/bin

    $ clang -O2 -target bpf -c indirect_call.c -o indirect_call.ebpf
    $ llvm-objdump -rd indirect_call.ebpf

    indirect_call.ebpf:  file format elf64-bpf

    Disassembly of section .text:

    0000000000000000 <call_ptr_to_some_function>:
           0:  18 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00  r1 = 0x0 ll
                    0000000000000000:  R_BPF_64_64  ptr_to_some_function
           2:  79 11 00 00 00 00 00 00  r1 = *(u64 *)(r1 + 0x0)
           3:  8d 01 00 00 00 00 00 00  callx r1
           4:  95 00 00 00 00 00 00 00  exit

The instruction is now encoded `8d 01 00...`.

For reference, here are similar commands using GCC showing it is using
the same encoding (here, compiler option `-mxbpf` is required to enable
several features including indirect calls, cf.
https://gcc.gnu.org/onlinedocs/gcc-12.4.0/gcc/eBPF-Options.html ).

    $ bpf-gcc --version
    bpf-gcc (12-20220319-1ubuntu1+2) 12.0.1 20220319 (experimental) [master r12-7719-g8ca61ad148f]

    $ bpf-gcc -O2 -c indirect_call.c -o indirect_call.ebpf -mxbpf
    $ bpf-objdump -mxbpf -rd indirect_call.ebpf

    indirect_call_gcc-12.ebpf:     file format elf64-bpfle

    Disassembly of section .text:

    0000000000000000 <call_ptr_to_some_function>:
       0:  18 00 00 00 00 00 00 00   lddw %r0,0
       8:  00 00 00 00 00 00 00 00
          0: R_BPF_INSN_64  ptr_to_some_function
      10:  79 01 00 00 00 00 00 00   ldxdw %r1,[%r0+0]
      18:  8d 01 00 00 00 00 00 00   call %r1
      20:  95 00 00 00 00 00 00 00   exit

Add both `callx` instruction encodings to eBPF processor.

By the way, the eBPF Verifier used by Linux kernel currently forbids
indirect calls (it fails when `BPF_SRC(insn->code) != BPF_K`, in
https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/verifier.c?h=v6.14#n19141
). But other deployments of eBPF may already support this feature.
2025-07-30 16:26:42 +02:00
ghidra1
2f439d6909 GP-0 Set release version to 11.4.2 2025-07-30 10:11:39 -04:00
ghidra1
cc932b12b2 GP-5888 Corrected regression error in stack editor 2025-07-30 10:09:35 -04:00
ghizard
b85c2b5947 GP-5884 - PDB CPP - Reconstruct parent source order 2025-07-30 09:16:06 -04:00
Ryan Kurtz
369804843c GP-0: Fixing docker README file location 2025-07-30 07:56:15 -04:00
Ryan Kurtz
dbb9e7feee Merge remote-tracking branch 'origin/patch' 2025-07-29 15:34:48 -04:00
Ryan Kurtz
0d8f57ba2f Merge remote-tracking branch 'origin/GP-4400_ghintern_mlextension_improvements' 2025-07-29 15:22:49 -04:00
ghidra1
fe7cbd8ee8 GP-0 Updated ChangeHistory for 11.4.1 release 2025-07-29 14:31:09 -04:00
Ryan Kurtz
5712017eb1 Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_extract' 2025-07-29 14:07:13 -04:00
ghidra1
bfd1e3dbea Merge remote-tracking branch 'origin/patch' 2025-07-29 14:03:18 -04:00
ghidra1
a3137e33d7 GP-5881 Corrected regression error with Structure editor change 2025-07-29 14:00:21 -04:00
James
168cbc7e7a GP-4400 minor tweaks 2025-07-29 17:47:44 +00:00
Ryan Kurtz
b239500645 GP-0: Adding instructions stating to not extract the Ghidra zip on top
of an existing installation
2025-07-29 11:29:32 -04:00
Ryan Kurtz
b76bbb843f Merge remote-tracking branch 'origin/GP-5853_Dan_ARM-VLD-and-VST--SQUASHED' 2025-07-29 10:35:14 -04:00
Dan
352fed0d95 GP-5853: Initial implementation of ARM Neon VLD/VSTn instructions. 2025-07-29 14:32:54 +00:00
RibShark
e7cad294c9
Fix 80251 "ANL Rm,#data" showing as "ADD"
Should be self explanatory, looks like it was just a typo.
2025-07-29 14:59:32 +01:00
RibShark
cca3fcc208
Fix ANL Areg,Data for 80251 in source mode
ANL Areg,Data should be GROUP1 rather than GROUP2, the incorrect group causes the instruction to fail to decode on source mode 80251
2025-07-29 14:57:07 +01:00
ghintern
efb837ef34 GP-4400: ML extension improvements 2025-07-29 13:47:26 +00:00
Ryan Kurtz
0af58800f5 Merge remote-tracking branch 'origin/GP-1-dragonmacher-review-tool-close-bug' 2025-07-29 09:45:21 -04:00
Ryan Kurtz
7fb7f5df1b Merge remote-tracking branch 'origin/GP-1-dragonmacher-action-context-fix' 2025-07-29 09:44:57 -04:00
Ryan Kurtz
c892ad1695 Merge remote-tracking branch 'origin/GP-1-dragonmacher-color-chooser-history-fix' 2025-07-29 09:44:28 -04:00
Ryan Kurtz
6c85ba4563 Merge remote-tracking branch
'origin/GP-5759_ghidorahrex_PR-8192_p1pkin_sh4_fsca_fix' (Closes #8192)
2025-07-29 09:12:19 -04:00
Ryan Kurtz
391a052e55 Merge remote-tracking branch 'origin/patch' 2025-07-29 09:10:56 -04:00
ghidorahrex
4abf6d55ad GP-5766: Fixed instruction AVX512 disassembly errors 2025-07-29 08:56:43 -04:00
Ryan Kurtz
9b8468b6b6 Merge remote-tracking branch
'origin/GP-5592_ghidorahrex_PR-7982_niooss-ledger_ebpf-ISA-v4' into
patch (Closes #7982)
2025-07-29 08:53:18 -04:00
Nicolas Iooss
24d19f6e8c Add eBPF ISA v4 instructions
In 2023, the eBPF instruction set was modified to add several
instructions related to signed operations (load with sign-extension,
signed division, etc.), a 32-bit jump instruction and some byte-swap
instructions. This became version 4 of eBPF ISA.

Here are some references about this change:

- https://pchaigno.github.io/bpf/2021/10/20/ebpf-instruction-sets.html
  (a blog post about eBPF instruction set extensions)
- https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/
  (documentation sent to Linux Kernel mailing list)
- https://www.rfc-editor.org/rfc/rfc9669.html#name-sign-extension-load-operati
  (IETF's BPF Instruction Set Architecture standard defined the new
  instructions)
- https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/core.c?h=v6.14#n1859
  (implementation of signed division and remainder in Linux kernel.
  This shows that 32-bit signed DIV and signed MOD are zero-extending
  the result in DST)
- https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/core.c?h=v6.14#n2135
  (implementation of signed memory load in Linux kernel)
- https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=1f9a1ea821ff25353a0e80d971e7958cd55b47a3
  (commit which added signed memory load instructions in Linux kernel)

This can be tested with a recent enough version of clang and LLVM (this
works with clang 19.1.4 on Alpine 3.21).
For example for signed memory load instructions:

    signed int sext_8bit(signed char x) {
        return x;
    }

produces:

    $ clang -O0 -target bpf -mcpu=v4 -c test.c -o test.ebpf
    $ llvm-objdump -rd test.ebpf
    ...
    0000000000000000 <sext_8bit>:
           0:  73 1a ff ff 00 00 00 00  *(u8 *)(r10 - 0x1) = r1
           1:  91 a1 ff ff 00 00 00 00  r1 = *(s8 *)(r10 - 0x1)
           2:  bc 10 00 00 00 00 00 00  w0 = w1
           3:  95 00 00 00 00 00 00 00  exit

(The second instruction is a signed memory load)

Instruction MOVS (Sign extend register MOV) uses offset to encode the
conversion (whether the source register is to be considered as signed
8-bit, 16-bit or 32-bit integer). The mnemonic for these instructions is
quite unclear:

- They are all named MOVS in the proposal
  https://lore.kernel.org/bpf/4bfe98be-5333-1c7e-2f6d-42486c8ec039@meta.com/
- LLVM and Linux disassemblers only display pseudo-code (`r0 = (s8)r1`)
- RFC 9669 (https://datatracker.ietf.org/doc/rfc9669/) uses MOVSX for
  all instructions.
- GCC uses MOVS for all instructions:
  https://github.com/gcc-mirror/gcc/blob/releases/gcc-14.1.0/gcc/config/bpf/bpf.md?plain=1#L326-L365

To make the disassembled code clearer, decode such instructions with a
size suffix: MOVSB, MOVSH, MOVSW.

The decoding of instructions 32-bit JA, BSWAP16, BSWAP32 and BSWAP64 is
straightforward.
2025-07-29 12:45:06 +00:00
Ryan Kurtz
1929357e1d Merge remote-tracking branch 'origin/patch' 2025-07-29 08:33:22 -04:00
Ryan Kurtz
0d8a39a07a Merge remote-tracking branch
'origin/GP-5857_ghidorahrex_PR-7979_niooss-ledger_ebpf-fix-load-zext'
into patch (Closes #7979)
2025-07-29 08:24:03 -04:00
Ryan Kurtz
b4239911c9 Merge remote-tracking branch
'origin/GP-5858_ghidorahrex_PR-7929_niooss-ledger_fix-ebpf-call-operand'
into patch (Closes #7929)
2025-07-29 08:21:27 -04:00
Ryan Kurtz
179263a592 Merge remote-tracking branch
'origin/GP-5593_ghidorahrex_PR-7985_niooss-ledger_ebpf-fix-semantic-byte-swap-instructions'
into patch (Closes #7985)
2025-07-29 08:19:37 -04:00
Ryan Kurtz
28b46c5c93 Merge remote-tracking branch
'origin/GP-5336_ghidorahrex_PR-7065_philpem_6805_hcs08_xidx_fix' into
patch (Closes #7065, Closes #7064)
2025-07-29 08:16:11 -04:00
Ryan Kurtz
ce924f8ab5 Merge remote-tracking branch 'origin/GP-4977_DescriptorDecoderFix' 2025-07-29 10:14:27 +00:00
dragonmacher
24532a377d Minor refactor for tool closing bug in extension apps 2025-07-28 18:18:04 -04:00
caheckman
c05acfed1d Fix for testGetReturnTypeOfMethodDescriptor 2025-07-28 22:06:06 +00:00
ghidra1
1449eef894 Merge remote-tracking branch 'origin/patch' 2025-07-28 17:03:48 -04:00
ghidra1
296778319e GP-5881 Minor Structure editor event handling improvement 2025-07-28 17:01:42 -04:00
ghidra1
a63b39d14f GP-0 Added exception detail for composite resolution error 2025-07-28 14:58:31 -04:00
Ryan Kurtz
47bd5a50cb Merge remote-tracking branch
'origin/GP-5871_dev747368_dwarf_strings_charset_option' (Closes #8346)
2025-07-28 17:29:11 +00:00
Ryan Kurtz
1b7fae31f9 Merge remote-tracking branch 'origin/patch' 2025-07-28 17:28:07 +00:00
Ryan Kurtz
1486a06165 Merge remote-tracking branch
'origin/GP-5877_Dan_fixReDisassembler--SQUASHED' into patch
(Closes #8382)
2025-07-28 17:25:05 +00:00
Ryan Kurtz
b729d9b217 Merge remote-tracking branch
'origin/GP-5876-dragonmacher-vt-column-exception-patch' into patch
(Closes #8094)
2025-07-28 17:23:02 +00:00
Ryan Kurtz
538ee96e69 GP-0: Fixing javadoc (Closes #8369) 2025-07-28 15:57:42 +00:00
Ryan Kurtz
67ba8d5f6b Merge remote-tracking branch 'origin/patch' 2025-07-28 15:49:57 +00:00
Dan
39c0a83c0c GP-5877: Fix Patch Instruction action in some Harvard architectures. 2025-07-28 15:48:40 +00:00
Ryan Kurtz
60ff7c9791 Merge remote-tracking branch 'origin/GP-5867_dev747368_dwarf_only_iterate_defined_dtc' into patch 2025-07-28 15:46:50 +00:00
Dan
851264808b GP-5795: Add a "Comment" column in the "Watches" table. 2025-07-28 15:29:01 +00:00
Ryan Kurtz
598efa66d9 Merge remote-tracking branch 'origin/patch' 2025-07-28 12:44:07 +00:00
Ryan Kurtz
6f339247ef Merge remote-tracking branch
'origin/GP-5788_Dan_addActionForciblyCloseTxes--SQUASHED' into patch
(Closes #8298)
2025-07-28 12:41:31 +00:00
Ryan Kurtz
790fe71c41 Merge remote-tracking branch 'origin/GP-5553_Dan_lessTimingOut' into patch 2025-07-28 12:39:41 +00:00
Ryan Kurtz
89534eecaf Merge remote-tracking branch 'origin/patch' 2025-07-28 12:34:13 +00:00
Ryan Kurtz
35202441cc Merge remote-tracking branch
'origin/GP-5764_ghidra007_rttiscript_vfunctions_dont_force_thiscalls--SQUASHED'
into patch (Closes #8163)
2025-07-28 12:32:06 +00:00
Dan
1ad0a0f719 GP-5788: Add an action to forcibly close all transactions for a target (in case of back-end misbehavior) 2025-07-28 12:31:48 +00:00
Ryan Kurtz
bfb28de7d8 Merge remote-tracking branch
'origin/GP-5875_dragonmacher_PR-8375_neuromancer_patch-1' (Closes #8375)
2025-07-28 12:21:54 +00:00
Ryan Kurtz
c7f0253ac0 Merge remote-tracking branch 'origin/GP-5874_ghizard_PDB_CPP_fix_months_old_regression_in_assigning_vxt_types' 2025-07-28 12:19:38 +00:00
dragonmacher
0286fb59fa GP-5876 - Fixed table column exception seen when using Version Tracking 2025-07-25 19:29:07 -04:00
dragonmacher
ae5ecfc3fd Fixed import 2025-07-25 18:56:59 -04:00
neuromancer
2a8e4a54df Use L as a default shortcut for renaming symbols in symbol tree 2025-07-25 18:56:57 -04:00
ghidra007
cee04048cb GP-5764 added option to RecoverClassesFromRTTIScript enabling users to not force vfunctions to be thiscalls. 2025-07-25 22:15:27 +00:00
dragonmacher
2eca4e9d7e Fix for null context and actions that do not use action context, but
rely on managed enablement
2025-07-25 16:16:08 -04:00
Dan
9767073b32 GP-5553: Disable timing out when we have a ProgressService. 2025-07-25 19:36:55 +00:00
Ryan Kurtz
4aaf18f435 Merge remote-tracking branch
'origin/GP-3091_ghidra_ElfPowerPC64_ELFv1Fixes' (Closes #570)
2025-07-25 19:07:56 +00:00
dev747368
3aa00a125b GP-5871 add analyzer option to set charset used by DWARF importer 2025-07-25 18:32:34 +00:00
ghidra1
4a0e95ecd3 GP-3091 ppc64 ELF improvements for 32-bit addressing. Fixed default ELF
GOT markup boundary condition.  Fixed improper EXTERNAL symbols with
.pltgot. prefix and duplication.
2025-07-25 14:19:18 -04:00
ghizard
c1dbadade8 GP-5874 - PDB CPP - Fix month's old regression in assigning vxt types;
add tests to prevent further regression
2025-07-25 11:34:52 -04:00
Ryan Kurtz
a67720f028 Merge remote-tracking branch 'origin/patch' 2025-07-25 09:55:12 -04:00
Ryan Kurtz
c56d41a353 Merge remote-tracking branch 'origin/GP-5865_emteere_MultiWordReferenceDialogFix' into patch 2025-07-25 09:43:52 -04:00
Ryan Kurtz
7e6c01f283 Merge remote-tracking branch 'origin/patch' 2025-07-24 14:36:22 -04:00
Ryan Kurtz
0e5c95dfc2 Merge remote-tracking branch
'origin/GP-5361_James_code_compare_exception_fix' into patch
(Closes #7028, Closes #8125, Closes #8289)
2025-07-24 14:27:51 -04:00
Ryan Kurtz
1724227c31 Merge remote-tracking branch 'origin/patch' 2025-07-24 12:20:20 -04:00
Ryan Kurtz
4c8b9761fe Merge remote-tracking branch 'origin/GP-0_Dan_addTestDiagnostics' into patch 2025-07-24 12:14:20 -04:00
Ryan Kurtz
62946ffde9 Merge remote-tracking branch 'origin/GP-0_Dan_fixTests-2025-07-24-1' into patch 2025-07-24 12:13:04 -04:00
Dan
dcbfa2aa79 GP-0: Print LLDB output in case of test failure. 2025-07-24 14:43:28 +00:00
Dan
6ce2361da5 GP-0: Fix tests due to swing invocations off-thread. 2025-07-24 13:42:36 +00:00
Ryan Kurtz
66cecdf954 Merge remote-tracking branch 'origin/GP-5863_FixLanedParameters' 2025-07-24 06:33:32 -04:00
Ryan Kurtz
0348223d62 Merge remote-tracking branch
'origin/GP-5866_caheckman_PR-4864_astrelsky_renameglobal' (Closes #4864,
Closes #8121)
2025-07-24 06:27:14 -04:00
Ryan Kurtz
67943324c3 Merge remote-tracking branch 'origin/patch' 2025-07-24 06:21:59 -04:00
James
fc4b780025 GP-5736 prevent constant propagation from making RETURN inputs constant
(Closes #8183)
2025-07-24 06:18:30 -04:00
Ryan Kurtz
e28df99d96 Merge remote-tracking branch 'origin/GP-5789_Dan_fixModulesWithOneZeroLengthSection' into patch 2025-07-24 06:14:59 -04:00
dev747368
b6de7df726 GP-5867 dwarf: only iterate struct's defined fields
Iterating all fields (defined and undefined) could cause large memory
allocation for the result of Structure.getComponents(), plus iterating
undefined fields was unnecessary.
2025-07-23 22:03:41 +00:00
Andrew Strelsky
01f5972757 Fixed renaming global through offcut reference 2025-07-23 21:41:48 +00:00
dragonmacher
c99faccdd9 Fixed broken color chooser history 2025-07-23 17:34:54 -04:00
emteere
0744141b15 GP-5865 Add reference dialog fix for address spaces that have a wordsize
greater than one byte
2025-07-23 20:03:01 +00:00
Dan
92708efe40 GP-5789: Handle case where module appears to have zero length. 2025-07-23 17:33:48 +00:00
caheckman
cc0203307d GP-5863 Check for input intersection before creating unreferenced param 2025-07-23 17:31:18 +00:00
Ryan Kurtz
e355d86144 Merge remote-tracking branch 'origin/GP-0_Dan_cleanupLocationTracking' 2025-07-23 09:34:00 -04:00
Ryan Kurtz
e7f495010e Merge remote-tracking branch 'origin/patch' 2025-07-23 06:14:48 -04:00
Ryan Kurtz
d11c1c6c17 Merge remote-tracking branch
'origin/GP-5861_ghizard_PDB_and_Demangler_and_DTUtils_fix_truncated_symbol_processing'
into patch (Closes #8358)
2025-07-23 06:08:20 -04:00
ghizard
1684aaf61f GP-5861 - PDB, MDMang, and DTUtils optim - fix for processing of
truncated symbols and optional prefix on MDMang datatype demangling
2025-07-22 16:27:14 -04:00
James
49d848ad5a GP-5361 fix indexoutofboundsexception in decompiler code comparison 2025-07-22 19:48:19 +00:00
Ryan Kurtz
a3422f6fbe Merge remote-tracking branch 'origin/patch' 2025-07-22 14:38:22 -04:00
Ryan Kurtz
b17d58ce18 Merge remote-tracking branch 'origin/GP-5859_Dan_fixPatchDataAction' into patch 2025-07-22 14:34:43 -04:00
Dan
f79a1a2816 GP-5859: Both enablement and pop-up of Patch Data controlled by unit type 2025-07-22 14:29:50 +00:00
Dan
9b66589b00 GP-0: Some cleanup. Squelch errors from closing Trace. 2025-07-22 14:07:56 +00:00
Ryan Kurtz
a6a738f650 Merge remote-tracking branch 'origin/patch' 2025-07-22 06:12:42 -04:00
Ryan Kurtz
20643f0c31 Merge remote-tracking branch 'origin/GP-5856_RulePtrsubUndoInfiniteLoop'
into patch (Closes #7997)
2025-07-22 06:09:35 -04:00
Ryan Kurtz
a74ad243da Merge remote-tracking branch
'origin/GP-5852_Dan_fixStackTraceWithTrackWatchOnToolRestore' into patch
(Closes #8333)
2025-07-22 06:07:53 -04:00
caheckman
c4c7aa5dad Fix for infinite loop caused by RulePtrsubUndo 2025-07-21 19:40:05 +00:00
Dan
07105dbc33 GP-5852: Force saved tracking config to be an option. 2025-07-21 19:30:36 +00:00
Ryan Kurtz
6077b55dd5 Merge remote-tracking branch 'origin/GP-5829_ghintern_emulator_quantize_flag' 2025-07-21 13:26:09 -04:00
Ryan Kurtz
2bb237e8d0 Merge remote-tracking branch
'origin/GP-5819-dragonmacher-help-build-update--SQUASHED' (Closes #8320)
2025-07-21 13:23:15 -04:00
Ryan Kurtz
0ddd0d7533 Merge remote-tracking branch 'origin/GP-5818_Dan_fixTaintEmuTests' 2025-07-21 13:19:33 -04:00
Ryan Kurtz
cc177afc8f Merge remote-tracking branch 'origin/patch' 2025-07-21 13:17:27 -04:00
Ryan Kurtz
3cfa867ac3 Merge remote-tracking branch 'origin/GP-5843_emteere_MIPS64FunctionStarts' into patch 2025-07-21 13:14:06 -04:00
Ryan Kurtz
440867a776 Merge remote-tracking branch 'origin/GP-5833_emteere_MIPSInfiniteLoop' into patch 2025-07-21 13:11:39 -04:00
dragonmacher
17c28209ef GP-5819 - Help - Added validation code to check all Ghidra TOC files after help is built 2025-07-21 11:59:01 -04:00
Dan
ea6b8b0a67 GP-5818: Fix TracePropertyMapSpace for object mode. Fix TaintEmu tests. 2025-07-21 15:50:46 +00:00
Ryan Kurtz
f71ad662d1 GP-0: Adding "gradle clean" to DevGuide.md 2025-07-21 07:04:14 -04:00
Ryan Kurtz
32782037a9 Merge remote-tracking branch
'origin/GP-5834_dev747368_dwarfline_sourcefile_iterate' (Closes #8329)
2025-07-21 06:11:19 -04:00
Ryan Kurtz
8537164d80 Merge remote-tracking branch 'origin/GP-0_dev747368_fix_fsb_tests' 2025-07-18 15:22:31 -04:00
Ryan Kurtz
9628d10220 Merge remote-tracking branch 'origin/patch' 2025-07-18 15:21:52 -04:00
Ryan Kurtz
db6b52b10f Merge remote-tracking branch 'origin/GP-5832_InlineOpTarget' into patch
(Closes #7383)
2025-07-18 15:19:54 -04:00
Ryan Kurtz
edf42d82d9 Merge remote-tracking branch 'origin/GP-5846_ghidra1_PPC64_ELFRelocations' into patch 2025-07-18 15:17:45 -04:00
dev747368
a8b604647e GP-0 fix FSB tests and the 'list mounted' feature. 2025-07-18 19:13:40 +00:00
ghidra1
006bd8d423 GP-5846 Corrected ELF PowerPC 64-bit relocation processing bugs
affecting ELFv2 use and R_PPC64_JMP_SLOT relocation
2025-07-18 12:00:34 -04:00
Ryan Kurtz
b643c1319d GP-0: Updating WhatsNew 2025-07-18 08:22:10 -04:00
Ryan Kurtz
2ec1995ce1 Merge remote-tracking branch 'origin/patch' 2025-07-18 08:18:53 -04:00
Ryan Kurtz
5d66a34a5f GP-5820: Enabling gradle for VSCode projects (Closes #8322) 2025-07-18 08:14:23 -04:00
Ryan Kurtz
fde33a5821 Merge remote-tracking branch 'origin/patch' 2025-07-18 06:19:25 -04:00
Ryan Kurtz
374c7e33cd Merge remote-tracking branch 'origin/GP-5752_emteere_InstSeparatorFix--SQUASHED' into patch 2025-07-18 06:16:42 -04:00
Ryan Kurtz
e69ce4104b Merge remote-tracking branch 'origin/GP-5804_emteere_FixDefaultSymbolicPropRecordState' into patch 2025-07-18 06:15:13 -04:00
emteere
3468c4b502 GP-5843 Added MIPS64 function start patterns 2025-07-17 22:42:00 +00:00
emteere
8839bd365e GP-5833 Fixed possible inifinite loop during constant analysis on mips
platforms.
2025-07-17 20:31:08 +00:00
emteere
9979a6f9ec GP-5752 Fixed missing characters at the end of operands, for example closing parenthesis added in the base sleigh instruction constructor. 2025-07-17 15:49:39 -04:00
dev747368
20c8d97c85 GP-5834 fix DWARF file / line issue
remove access to dwarfline file count because it encourages callers to
try to iterate via index, which is not something they should do.
2025-07-17 18:30:59 +00:00
Ryan Kurtz
12a8db6195 Merge remote-tracking branch 'origin/GP-5825_dev747368_refactor_localfilesystemsub_out' 2025-07-17 13:50:47 -04:00
dev747368
4e5b223145 GP-5825 refactor FSB file system logic for subtrees 2025-07-17 17:49:14 +00:00
Ryan Kurtz
1a1cdefc14 Merge remote-tracking branch 'origin/GP-5830_ghidra1_ProjectDataTableUpdates--SQUASHED' 2025-07-17 11:07:15 -04:00
ghidra1
25dda1300a GP-5830 Corrected Project Data Table update issues 2025-07-17 10:38:10 -04:00
Ryan Kurtz
f0d774c31f Merge remote-tracking branch 'origin/patch' 2025-07-17 09:27:25 -04:00
Ryan Kurtz
48f1bf133f Merge branch 'GP-5836_ryanmkurtz_ghidradev' into patch 2025-07-17 09:24:22 -04:00
Ryan Kurtz
396dd6e1de GP-5836: Fixed GhidraDev bug that prevented Ghidra from discovering the
Ghidra module project when launched with the PyGhidra run config
2025-07-17 08:52:48 -04:00
Ryan Kurtz
88bfdeb429 Merge remote-tracking branch 'origin/GP-4356_ghintern_avr8_cspec--SQUASHED' 2025-07-17 06:19:47 -04:00
ghintern
991a4b440c GP-4356: fixes to avr8 cspec and elf extension, and additions to decompiler model rules 2025-07-16 20:22:28 +00:00
caheckman
80d66023a9 GP-5832 Update inline target op when inlining a subfunction 2025-07-16 19:12:27 +00:00
Ryan Kurtz
2c10392a79 Merge remote-tracking branch 'origin/GP-5211_ghintern_riscv_cspec--SQUASHED' 2025-07-16 13:31:25 -04:00
ghintern
f26d36c6bb GP-5211: Fix RISCV 32- and 64-bit compiler specifications and relocation handler 2025-07-16 16:38:27 +00:00
Ryan Kurtz
bbdb084d0c Merge remote-tracking branch 'origin/GP-1-dragonmacher-front-end-new-folder-fix' 2025-07-16 12:29:36 -04:00
dragonmacher
889d2ace20 Fix for creating a new folder with no node selected 2025-07-16 11:55:42 -04:00
ghintern
4bc44fc943 GP-5829: respect emulator quantize flag for addressing 2025-07-16 15:14:59 +00:00
Ryan Kurtz
bdfe4ba492 Merge remote-tracking branch
'origin/GP-5815_ghidra1_AARCH64_ElfGotRelocs' (Closes #8253)
2025-07-16 06:15:58 -04:00
Ryan Kurtz
cb762ea71e Merge remote-tracking branch 'origin/GP-1-dragonmacher-graph-help' 2025-07-16 06:14:37 -04:00
Ryan Kurtz
eb53319b24 Merge remote-tracking branch 'origin/GP-1-dragonmacher-decomp-esc-clear-selection--SQUASHED' 2025-07-16 06:13:48 -04:00
Ryan Kurtz
eac74e404c Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-7-15-25' 2025-07-16 06:12:38 -04:00
ghidra1
17827592d4 Merge remote-tracking branch 'origin/patch' 2025-07-15 18:30:48 -04:00
ghidra1
0bd8870da3 Merge branch 'GP-5827_ghidra1_ElfMips64RelocationProcessing' into patch 2025-07-15 18:28:19 -04:00
ghidra1
130b365e7c GP-5827 Corrected ELF MIPS 64-bit relocation processing error 2025-07-15 18:27:41 -04:00
dragonmacher
c94d44fe1d Fixed missing graph help 2025-07-15 16:23:57 -04:00
dragonmacher
5345960ac1 Updated the Clear Selection action to work in the Decompiler
Fixes #7241
2025-07-15 15:35:53 -04:00
dragonmacher
0071ebe96b Test fixes 2025-07-15 15:21:33 -04:00
Ryan Kurtz
4992417aaa Merge remote-tracking branch 'origin/patch' 2025-07-15 11:09:31 -04:00
Ryan Kurtz
f011cbd324 Merge remote-tracking branch
'origin/GP-5828-dragonmacher-extensions-dialog-action-enablement' into
patch (#8294)
2025-07-15 11:07:00 -04:00
Ryan Kurtz
cc0efeb5dc Merge remote-tracking branch
'origin/GP-5821-dragonmacher-tab-ordering-issue--SQUASHED'
(Closes #8303)
2025-07-15 11:00:26 -04:00
Ryan Kurtz
4d6bb0ddaa Merge remote-tracking branch 'origin/GP-5826-dragonmacher-symbol-tree-flickering' 2025-07-15 10:58:40 -04:00
Ryan Kurtz
295f71472a GP-5637: The ghidra_script() function now accepts an optional
"script_args" parameter
2025-07-15 07:40:07 -04:00
dragonmacher
5b3f4e9e90 Fixed the Install Extensions dialog toolbar action enablement 2025-07-14 19:45:16 -04:00
dragonmacher
5a631afc45 GP-5821 - Fixed bug that caused incorrect tab to be selected when closing docked component provider tabs via the 'x' button 2025-07-14 16:37:26 -04:00
Ryan Kurtz
7d26a65e31 Merge remote-tracking branch 'origin/patch' 2025-07-14 16:11:33 -04:00
Ryan Kurtz
9ddc746e6f Merge remote-tracking branch 'origin/GP-5718_LeftShiftSubvar' into patch 2025-07-14 16:09:18 -04:00
Ryan Kurtz
7d76ab5e9b Merge remote-tracking branch
'origin/GP-4989_ghintern_arm_fix_aapcs--SQUASHED' into patch
(Closes #6958)
2025-07-14 16:05:48 -04:00
Ryan Kurtz
6a77dc88b4 Merge remote-tracking branch 'origin/GP-4977_DecompileJVMArrays' 2025-07-14 16:03:07 -04:00
caheckman
14870dc532 GP-4977 Properly decode <object> in Array 2025-07-14 18:49:05 +00:00
ghintern
3e11715778 GP-4989: Fix ARM AAPCS cspec, add soft float calling convention 2025-07-14 18:38:17 +00:00
Ryan Kurtz
5acdc3b522 Merge remote-tracking branch 'origin/GP-5367_ghintern_aggregate_filter--SQUASHED' 2025-07-14 14:06:30 -04:00
ghintern
3067d3e61f GP-5367: Filter by max_primitives on homogeneous aggregate types in cspec 2025-07-14 17:21:02 +00:00
ghidra007
b3f4609330 GP-5718 fix for index issue 2025-07-14 15:17:49 +00:00
ghidra1
a3897c04ac GP-0 Corrected test failure 2025-07-14 10:55:25 -04:00
dragonmacher
95fd25eb58 GP-5826 - Symbol Tree - Fixed flashing due to too many events being
processed
2025-07-12 14:19:48 -04:00
ghidra1
438725bafd GP-5815 Added ELF Loader GOT allocation support for AARCH64 in support
of object module loading.
2025-07-11 16:17:19 -04:00
ghidra1
8c56fc8e04 GP-1 Assume \u2192 right arrow char will always render properly 2025-07-11 12:22:48 -04:00
Ryan Kurtz
c7aa190b40 Merge remote-tracking branch 'origin/GP-1-dragonmacher-function-color-fix--SQUASHED' 2025-07-11 11:58:14 -04:00
Ryan Kurtz
f3d4ccbf2f Merge remote-tracking branch
'origin/GP-5646_ghidragon_drag_n_drop_program_tabs--SQUASHED'
(Closes #8099)
2025-07-11 11:56:26 -04:00
Ryan Kurtz
e63d97b112 Merge remote-tracking branch 'origin/patch' 2025-07-11 11:53:12 -04:00
Ryan Kurtz
5ae62e2f49 Merge remote-tracking branch 'origin/GP-5822_ghidra1_CommentTypeErrors'
into patch (Closes #8341)
2025-07-11 11:46:15 -04:00
ghidragon
99992cf550 GP-5646 reorder program tabs via drag-N-drop
tmp
2025-07-11 11:37:40 -04:00
ghidra1
c56d6fd26e GP-1 Updated link arrow character used 2025-07-11 10:00:47 -04:00
ghidra1
183ecf3acf GP-5822 Corrected errors related to null CommentType returned by
CommentFieldLocation
2025-07-11 09:08:21 -04:00
Ryan Kurtz
d3c021119c GP-0: Fixing gradle warning 2025-07-11 07:14:04 -04:00
Ryan Kurtz
529b174764 GP-0: Fixing javadoc errors 2025-07-11 07:07:48 -04:00
Ryan Kurtz
cb68d29bac GP-5637: Fixing PyGhidra usage of DomainFileIterator 2025-07-11 06:58:18 -04:00
dragonmacher
c538b0def6 Updated broken color usage for function references and parameter references 2025-07-10 17:09:20 -04:00
Ryan Kurtz
70b062e6d0 Merge remote-tracking branch 'origin/GP-5637_ryanmkurtz_pyghidra-api'
(Closes #6914, Closes #6915)
2025-07-10 14:47:29 -04:00
ghidra1
8938cc3478 GP-1 Always use BadDataType.datatype instance 2025-07-10 12:04:29 -04:00
Ryan Kurtz
f5fd0171a2 GP-5637: New PyGhidra API 2025-07-10 11:42:46 -04:00
Ryan Kurtz
894e65589a Merge remote-tracking branch 'origin/GP-1-dragonmacher-added-missing-theme-file' 2025-07-10 10:01:04 -04:00
Ryan Kurtz
1b74b8eb9b Merge remote-tracking branch 'origin/GP-4007_ghintern_codecompare_actions--SQUASHED' 2025-07-10 09:58:55 -04:00
ghintern
e72e58117f GP-4007: Add actions to transfer variable and callee names and types to dual decompiler view 2025-07-10 13:54:27 +00:00
Ryan Kurtz
f97fd834fe Merge remote-tracking branch 'origin/patch' 2025-07-10 05:39:35 -04:00
Ryan Kurtz
3ad921d5c7 Merge remote-tracking branch 'origin/GP-5816_ReturnValueRecovery' into patch 2025-07-10 05:35:35 -04:00
Ryan Kurtz
2e3f37f803 Merge remote-tracking branch 'origin/GP-0_d-millar_junit_fix' 2025-07-10 05:30:31 -04:00
ghidra1
3f638e22b4 GP-1 Disable replace action for BadDataType 2025-07-09 19:10:22 -04:00
dragonmacher
d0f08f7460 Added missing theme file 2025-07-09 19:08:14 -04:00
ghidra1
f250cfeac4 GP-1 Corrected treatment of BadDataType within DataTypeManagerDB 2025-07-09 18:55:42 -04:00
d-millar
96d4edf39b GP-0: fix for test failures 2025-07-09 22:10:38 +00:00
caheckman
de842dbd32 GP-5816 Fix return recovery for AARCH64 and ARM 2025-07-09 21:19:07 +00:00
Ryan Kurtz
413949b64a GP-0: Bumping master to 12.0 2025-07-09 14:50:25 -04:00
ghidra1
53552616ec Merge branch 'GP-3551_ghidra1_InternalProjectLinks' 2025-07-09 13:34:56 -04:00
ghidra1
1aa7b089c0 GP-3551 Added support for internal project link-files with improved link
support within project data tree. Linked-folders are now supported.
Addressed link-support issues related to various actions.  Revised
link-file storage to use smaller non-DB storage. This change does impact
the Ghidra Server.
2025-07-09 13:34:22 -04:00
Ryan Kurtz
794cb1c07c Merge remote-tracking branch 'origin/GP-4310_ghida1_RGB_DataTypes'
(Closes #6191)
2025-07-09 12:33:05 -04:00
Ryan Kurtz
60d0883b10 GP-0: Adding a ProgramLoader.Builder.loaders(String) method 2025-07-09 11:37:06 -04:00
ghidra1
23711ac652 GP-4310 Added RGB Color Data Types 2025-07-09 10:30:50 -04:00
Ryan Kurtz
e28509c2ea GP-0: Handling ProgramLoader.Builder.source(byte[]) a little better 2025-07-08 14:16:00 -04:00
Ryan Kurtz
b2e11d5312 Merge remote-tracking branch 'origin/GP-4741-dragonmacher-graph-size-fix--SQUASHED' 2025-07-08 06:05:22 -04:00
dragonmacher
4cab37febd GP-4741 - Graphing - Fixed odd size issues on Class graphs 2025-07-07 12:32:12 -04:00
Ryan Kurtz
d58f2ad24c Merge remote-tracking branch 'origin/patch' 2025-07-07 12:25:55 -04:00
Ryan Kurtz
bf167a3126 GP-5810: Improving CWD removal from sys.path 2025-07-07 12:23:55 -04:00
Ryan Kurtz
fe335aa946 Merge remote-tracking branch 'origin/patch' 2025-07-07 11:40:02 -04:00
Ryan Kurtz
2930b622cc GP-5810: Removing CWD from PyGhidra's sys.path (Closes #8190) 2025-07-07 11:35:57 -04:00
Nicolas Iooss
e2de11d5b2
Fix eBPF zero-extend load instructions
When a loading less than 8 bytes to a register, the value is supposed to
be zero-extended. This is what the eBPF execution engine in the Linux
kernel does, in
https://web.git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/kernel/bpf/core.c?h=v6.14#n2113
This is also what is specified in RFC 9669 which standardised BPF ISA:
https://www.rfc-editor.org/rfc/rfc9669.html#name-regular-load-and-store-oper

Add the missing `zext` calls in the semantic section of instructions
LDXW, LDXH and LDXB. While at it, add them to other load instructions.

For information, the issue can be seen when analyzing this C program:

    unsigned int div_by_1000(unsigned int value) {
        return value / 1000;
    }

Compiling it with clang gives:

    $ clang -O0 -target bpf -c division.c -o division.ebpf
    $ bpf-objdump -rd division.ebpf
    division.ebpf:     file format elf64-bpfle

    Disassembly of section .text:

    0000000000000000 <div_by_1000>:
       0:    63 1a fc ff 00 00 00 00     stxw [%fp+-4],%r1
       8:    61 a0 fc ff 00 00 00 00     ldxw %r0,[%fp+-4]
      10:    37 00 00 00 e8 03 00 00     div %r0,0x3e8
      18:    95 00 00 00 00 00 00 00     exit

Ghidra decompiles this program as:

    ulonglong div_by_1000(uint param_1)
    {
      undefined4 in_stack_00000000;
      return CONCAT44(in_stack_00000000,param_1) / 1000;
    }

This `in_stack_00000000` comes from the way the parameter is loaded from
the stack. The listing shows the following disassembly and p-code
operations:

    ram:00100008 61 a0 fc ff 00       LDXW       R0,[R10 + -0x4=>Stack[-0x4]]
                 00 00 00
                            $U3e00:8 = INT_ADD R10, -4:8
                            R0 = LOAD ram($U3e00:8)

This shows the value is indeed loaded from 8 bytes at `$U3e00:8` instead
of 4.

After adding `zext` calls, Ghidra decodes the same instruction as:

    ram:00100008 61 a0 fc ff 00       LDXW       R0,[R10 + -0x4=>local_4]
                 00 00 00
                            $U4100:8 = INT_ADD R10, -4:8
                            $U4180:4 = LOAD ram($U4100:8)
                            R0 = INT_ZEXT $U4180:4

This only loads 4 bytes from the stack, as expected.
Moreover the decompilation view is now correct:

    ulonglong div_by_1000(uint param_1)
    {
      return (ulonglong)param_1 / 1000;
    }
2025-07-07 16:28:00 +02:00
Nicolas Iooss
c1d96a2140
Fix eBPF CALL operand decoding
The operand of the CALL instruction missed multiplying the immediate
value by 8. Without this, calls are not decoded correctly.

Such a CALL instruction can be emitted when compiling this simple
`single_call.c` program:

    static int one(void) {
        return 1;
    }

    int call_one(void) {
        return one();
    }

with:

    clang -O0 -target bpf -c single_call.c -o single_call.ebpf

Disassembling with LLVM shows:

    $ llvm-objdump -d single_call.ebpf
    single_call.ebpf:	file format elf64-bpf

    Disassembly of section .text:

    0000000000000000 <call_one>:
           0:	85 10 00 00 01 00 00 00	call 1
           1:	95 00 00 00 00 00 00 00	exit

    0000000000000010 <one>:
           2:	b7 00 00 00 01 00 00 00	r0 = 1
           3:	95 00 00 00 00 00 00 00	exit

The first instruction ("call 1") calls the function located at 0x10 (at
index `2:` in the listing). Ghidra considered the call to target
address 9 instead (as `inst_next = 8` and `imm = 1`). Fix this by
multiplying `imm` by 8 when encountering a `disp32` operand (which is
only used by instruction `CALL`).

Adjust ELF Relocation R_BPF_64_32 to take into account for this
multiplication by 8. Actually it is documented to compute (S + A) / 8 - 1
so the division by 8 was missing.
2025-07-07 16:26:31 +02:00
Ryan Kurtz
c0140fd396 Merge remote-tracking branch 'origin/patch' 2025-07-07 10:20:25 -04:00
Ryan Kurtz
2aa431a904 GP-5811: PE IMAGE_FUNCTION_RUNTIME_ENTRY's are now all marked as
functions (Closes #8321)
2025-07-07 10:17:49 -04:00
Nicolas Iooss
adb0eac98a
Add support for big endian eBPF programs 2025-07-07 16:13:37 +02:00
Nicolas Iooss
52cb7a36e6
Fix the semantics of eBPF byte swap instructions
eBPF byte swap operations (BE16, BE32, BE64, LE16, LE32, LE64) have
semantics that depend on the endianness of the host processor executing
the eBPF program. For example, on a Little-Endian CPU, BE16 swaps the 2
lowest significant bytes of the given destination register.

The semantic section of LE16 contains:

    { dst=((dst) >> 8) | ((dst) << 8); }

This contains several issues:

- It assumes the instruction always swaps the bytes. This should only
  happen on Big-Endian host CPU.
- If `dst` does not contain a 16-bit value (meaning `dst >> 16 != 0`),
  the computed value is wrong. The value should be properly masked. For
  example the Linux kernel defines in
  https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/include/uapi/linux/swab.h?h=v6.14#L14

    #define ___constant_swab16(x) ((__u16)(             \
            (((__u16)(x) & (__u16)0x00ffU) << 8) |      \
            (((__u16)(x) & (__u16)0xff00U) >> 8)))

As the endianness of the CPU has to be the same as the eBPF program
(defined in the ELF header), introduce a macro `ENDIAN` and use it to
implement the byte swap operations.
2025-07-07 16:13:36 +02:00
Ryan Kurtz
66f48fe95b GP-5545_5600: ProgramLoader.Builder can now take a string-based source 2025-07-07 06:45:18 -04:00
Ryan Kurtz
d4758498ac Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_z3' 2025-07-07 06:14:01 -04:00
Ryan Kurtz
245c52b8c6 Merge remote-tracking branch 'origin/GP-0_ghidragon_fixing_data_graphTest_to_dispose_env' 2025-07-03 14:00:20 -04:00
emteere
4723729d80 GP-5804 Set SymbolicPropogator to record register begin/end state in
basic constructor. Better document recordBeginEndState flag.
2025-07-03 17:49:53 +00:00
ghidragon
03428cc125 GP-0 fixing data graph tests 2025-07-03 13:24:01 -04:00
Ryan Kurtz
b6968e26c5 GP-0: z3 dependency improvements 2025-07-03 12:10:52 -04:00
Ryan Kurtz
9018e9a05a Merge remote-tracking branch
'origin/GP-5800_Dan_fixAsmDbgSlowdown--SQUASHED' (Closes #8308,
Closes #8309)
2025-07-03 09:27:17 -04:00
Ryan Kurtz
28ca8302ba Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-07-03-1' 2025-07-03 09:23:20 -04:00
Dan
0e3beed22a GP-5800: Delete asm debug logging altogether 2025-07-03 13:23:17 +00:00
Dan
980a80beb9 GP-0: Fix event thread recording (found in Z3 test) 2025-07-03 12:27:58 +00:00
Ryan Kurtz
3e50533187 Merge remote-tracking branch
'origin/GP-5481_ghidragon_data_graph--SQUASHED'
2025-07-03 06:40:25 -04:00
Ryan Kurtz
2442bfc2bb Merge remote-tracking branch 'origin/GP-5700_Dan_reworkLauncherGhidraHome--SQUASHED' 2025-07-03 06:21:08 -04:00
Ryan Kurtz
4df861c656 Merge remote-tracking branch 'origin/patch' 2025-07-03 06:20:34 -04:00
Ryan Kurtz
7e1b6e9cd5 Merge remote-tracking branch 'origin/GP-5799_Dan_FixNPEInExample' into
patch (Closes #8296)
2025-07-03 06:18:13 -04:00
Ryan Kurtz
a41ad68289 Merge remote-tracking branch 'origin/GP-5790_Dan_fixNPEWhenCursorOutsideModule' into patch 2025-07-03 06:17:00 -04:00
Ryan Kurtz
f3a90f7887 Merge remote-tracking branch 'origin/GP-5796_Dan_setEmuEventThread' into
patch (Closes #8293)
2025-07-03 06:15:29 -04:00
Dan
f92076b936 GP-5700: Expose module directories to scripts on request 2025-07-02 19:15:54 +00:00
Ryan Kurtz
a09bd1ee34 Merge remote-tracking branch
'origin/GP-0_Dan_makeZ3AnExtension--SQUASHED'
2025-07-02 13:49:03 -04:00
ghidragon
f54bd20d40 GP-5481 Created prototype data graph feature 2025-07-02 13:20:47 -04:00
Dan
13c71e809a GP-0: Change SymbolicSummaryZ3 to be an extension. 2025-07-02 17:04:12 +00:00
Ryan Kurtz
9876a4bfe5 Merge remote-tracking branch 'origin/GP-0_Dan_fixZ3Tests' 2025-07-02 12:57:49 -04:00
Ryan Kurtz
5dcd35ca6f Merge remote-tracking branch 'origin/patch' 2025-07-02 12:55:50 -04:00
Ryan Kurtz
c7efb3c5cf GP-5545-5600: Fixing headless regression 2025-07-02 12:55:19 -04:00
Dan
e93bc62749 GP-0: Fix Z3 tests. 2025-07-02 15:57:17 +00:00
Ryan Kurtz
d16bf27873 GP-5802: Fixed a timing issue that prevented
FlatProgramAPI.analyzeAll(Program) from picking up analyzer options set
in the script (Closes #8287)
2025-07-02 09:24:19 -04:00
Ryan Kurtz
90c85a7761 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-7-2-25' into patch 2025-07-02 09:16:27 -04:00
dragonmacher
2394103ea5 Test fixes 2025-07-02 09:10:57 -04:00
Dan
f74b783b3e GP-5796: Write event thread down in emulated snapshots. 2025-07-01 18:15:47 +00:00
Dan
044bd03ccb GP-5790: Fix NPE on "Select Current Module" when cursor is not in a module. 2025-07-01 17:57:15 +00:00
Dan
6e27a9faa2 GP-5799: Improve example InstallCustomLibraryScript and fix NPE. 2025-07-01 17:52:26 +00:00
Ryan Kurtz
c9299a7fc7 Merge remote-tracking branch 'origin/GP-5798_dev747368_dwarf_composite_packing_fix' 2025-07-01 13:22:36 -04:00
Ryan Kurtz
409d320057 Merge remote-tracking branch 'origin/GP-5726_dev747368_absolute_symlink_paths' 2025-07-01 11:32:01 -04:00
Ryan Kurtz
ca8a5d9d0f GP-0: Fixing javadoc 2025-07-01 11:20:54 -04:00
dev747368
b6fcd6b536 GP-5798 fix issue in DWARF struct/union packing logic
If struct was sized, but had no defined fields, the check meant to
detect this and avoid packing was incorrect, and packed anyway.
2025-07-01 15:11:02 +00:00
Ryan Kurtz
fdf3676cc5 GP-5727: Fixing hashes 2025-07-01 11:02:50 -04:00
Ryan Kurtz
b534a494c3 GP-5727: Fixing build 2025-07-01 10:50:00 -04:00
Ryan Kurtz
a8655234a4 Merge remote-tracking branch
'origin/GP-5545-5600_ryanmkurtz_autoimporter--SQUASHED' (Closes #8097)
2025-07-01 08:27:37 -04:00
Ryan Kurtz
d3aed2c4b3 GP-5545_5600: ProgramLoader and more flexible loader args 2025-07-01 08:18:36 -04:00
ghidra1
3aff1293bc Merge remote-tracking branch
'origin/GP-5748_ghidracadabra_PR-8176_gemesa_bsim-getmetadata'
(Closes #8176)
2025-06-30 14:42:22 -04:00
ghidra1
caff8b2264 Merge remote-tracking branch 'origin/patch' 2025-06-30 14:40:03 -04:00
ghidra1
2727715539 GP-5797 Corrected CommentsDialog regression. Default to previously used
tab
2025-06-30 14:36:16 -04:00
ghidra1
43ac551bd2 Merge remote-tracking branch 'origin/GP-5779_Dan_cleanDeprecatedColorModel' 2025-06-30 10:08:28 -04:00
ghidra1
92540c87e0 Merge remote-tracking branch 'origin/GP-5776_ghizard_MDMang_improvements_for_16-bit_program_vcall_modiers_and_based_attributes--SQUASHED' 2025-06-30 10:07:21 -04:00
ghidra1
2c3bfe1796 Merge remote-tracking branch 'origin/GP-5775_James_view_source_file_action' 2025-06-30 10:05:57 -04:00
ghidra1
b41d97c8a9 Merge remote-tracking branch 'origin/GP-5773_James_DWARF_add_all_source_files' 2025-06-30 10:03:07 -04:00
ghidra1
211a432cdb Merge remote-tracking branch 'origin/GP-5772_Dan_finishPcodeStepper' 2025-06-30 10:00:09 -04:00
ghidra1
a483a4e28c Merge remote-tracking branch
'origin/GP-5727_Dan_z3emu--SQUASHED'
2025-06-30 09:53:44 -04:00
ghidra1
8ac6bd74ee Merge remote-tracking branch 'origin/GP-5194_Dan_removeLegacyDBTraceTables--SQUASHED' 2025-06-30 08:48:00 -04:00
ghidra1
97d2a51038 Merge remote-tracking branch 'origin/patch' 2025-06-30 08:41:12 -04:00
ghidra1
4629af7235 Merge remote-tracking branch 'origin/GP-5738_Dan_gdbArmv5te' into patch 2025-06-30 08:29:30 -04:00
ghidra1
0a07e885db Merge remote-tracking branch 'origin/GP-5767_ryanmkurtz_dyld' into patch 2025-06-30 08:24:44 -04:00
ghidra1
a613bd4972 Merge remote-tracking branch
'origin/GP-5777-dragonmacher-dialog-context-fix--SQUASHED' into patch
(Closes #8294)
2025-06-30 08:23:02 -04:00
ghidra1
39770ddee0 Merge remote-tracking branch 'origin/GP-1-dragonmacher-tool-restore-state-fix' into patch 2025-06-30 08:19:52 -04:00
ghidra1
a34a8a5206 Merge remote-tracking branch 'origin/GP-1-dragonmacher-action-exception' into patch 2025-06-30 08:19:24 -04:00
Dan
7e7c8a5e86 GP-5194: Remove Deprecated 'Legacy mode' for DBTrace. 2025-06-27 16:00:08 +00:00
Dan
cbf8579c9d GP-5738: Add armv5te to gdb connector's arch.py 2025-06-27 13:06:54 +00:00
Dan
3099cc9006 GP-5772: Mark PcodeStepperPlugin as RELEASED. 2025-06-27 12:50:29 +00:00
Dan
93d5e3db0d GP-5779: Clean out some ColorModel garbage. 2025-06-27 12:36:51 +00:00
dragonmacher
64ee7bd5a1 Fixed an exception in the enabledWhen() method of the ClearSelection
action
2025-06-26 18:33:15 -04:00
Dan
9729d240d7 GP-5727: Add Z3-based emulator and summarizer 2025-06-26 18:26:42 +00:00
dragonmacher
6b7064b1f4 GP-5777 - Fix for dialog action context 2025-06-26 13:54:21 -04:00
ghizard
cc213cdebf GP-5776 - MDMang - Improved 16-bit program demangling of vcall modifiers and based attributes 2025-06-26 06:01:32 -04:00
James
2cb73057e9 GP-5775 code review changes 2025-06-25 20:38:58 +00:00
James
988dadd7cf GP-5775 added view source file action to source file table 2025-06-25 20:32:42 +00:00
James
cd549a0805 GP-5773 DWARF: add all source files 2025-06-25 19:34:00 +00:00
dragonmacher
d88f464a32 Fixed potential NPE when restoring tool state 2025-06-24 13:16:33 -04:00
Ryan Kurtz
7482131bcc Merge remote-tracking branch 'origin/patch' 2025-06-24 12:38:45 -04:00
Ryan Kurtz
a7e64844fb GP-0: Fixing ChangeHistory typo 2025-06-24 12:30:42 -04:00
Ryan Kurtz
2d34b3afc7 GP-0: Upping patch to 11.4.1 2025-06-24 12:28:38 -04:00
Ryan Kurtz
8d95e97521 Merge remote-tracking branch
'origin/GP-1-dragonmacher-escape-selection-fix' (#7241)
2025-06-23 12:57:51 -04:00
dragonmacher
93ad4631a1 Fixed the Clear Selection action to also work for character selections 2025-06-21 11:54:48 -04:00
Ryan Kurtz
9e4e43d9f8 GP-5767: Support for iOS 26 BETA dyld_shared_cache 2025-06-20 17:05:31 -04:00
Ryan Kurtz
44938cf9f1 Merge branch 'GP-0_ryanmkurtz_PR-8274_sepalani_readme-gradlew' 2025-06-20 06:36:41 -04:00
Ryan Kurtz
bba400ee2f Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-20 06:03:45 -04:00
sepalani
bfb61bb116
Fix gradle wrapper name in README.md 2025-06-19 22:26:20 +04:00
ghidra2
aed1cf1c4e GP-0 - ChangeHistory.md for 11.4 2025-06-18 19:22:22 +00:00
Ryan Kurtz
8c48d9f116 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-6-17-25' 2025-06-18 06:24:10 -04:00
dragonmacher
a58340b810 Test fixes 2025-06-17 18:58:06 -04:00
emteere
c87e45857c GP-0 11.4 WhatsNew 2025-06-17 17:48:34 -04:00
Ryan Kurtz
69872037e5 Merge remote-tracking branch 'origin/GP-3756-dragonmacher-plate-comment-annotations' 2025-06-17 10:56:45 -04:00
Ryan Kurtz
453f8002a4 Merge remote-tracking branch
'origin/GP-5761-dragonmacher-dt-tree-collapse-update--SQUASHED'
(Closes #8244)
2025-06-17 09:08:31 -04:00
Ryan Kurtz
93fe45aff1 Merge branch 'GP-5023_ryanmkurtz_demangle' 2025-06-17 08:16:10 -04:00
Ryan Kurtz
a5c0dd9897 GP-5023: Deprecating GhidraScript.getDemangled() 2025-06-17 08:15:12 -04:00
dragonmacher
175c0153e9 GP-3756 - Fixed plate comment annotation rendering bug in tooltip 2025-06-16 18:45:41 -04:00
Ryan Kurtz
cd5e163c0a Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-16 14:39:52 -04:00
Ryan Kurtz
560497c5ff Merge remote-tracking branch 'origin/GP-5762_ghidra007_autoVT_increase_dupe_correlator_min' into Ghidra_11.4 2025-06-16 14:37:41 -04:00
dragonmacher
b07256a114 GP-5761 - Data Type Manager - Updated the Collapse button to stop any post-filter state restoring 2025-06-16 14:10:43 -04:00
Ryan Kurtz
592242fdba Merge remote-tracking branch 'origin/GP-2140-dragonmacher-delete-refs-action--SQUASHED' 2025-06-16 13:50:29 -04:00
dragonmacher
1fc7356080 GP-2140 - Xrefs - Added an action to delete xrefs from the xrefs table 2025-06-16 13:46:34 -04:00
Ryan Kurtz
c03417b3f6 GP-0: Fixing test 2025-06-16 11:59:44 -04:00
ghidra007
160dfd1e36 GP-5762 increased AutoVT duplicate inst match correlator min function
size
2025-06-16 15:49:44 +00:00
Ryan Kurtz
e1f90b72bf Merge remote-tracking branch 'origin/GP-5757_ryanmkurtz_xml-xxe' 2025-06-16 11:49:40 -04:00
ghidorahrex
997c64f6db GP-5759: Fixed token piece formatting 2025-06-16 14:29:10 +00:00
Ryan Kurtz
032e62fd76 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-16 10:15:37 -04:00
Ryan Kurtz
b0ca297a1a Merge remote-tracking branch
'origin/GP-0_update_postgres_version_in_script_comment' into Ghidra_11.4
(#8122)
2025-06-16 10:12:55 -04:00
James
79d87eb63d GP-0 fixed postgres version in make-postgres.sh comments 2025-06-16 14:08:52 +00:00
Ryan Kurtz
66f8d541ea Merge branch 'GP-0_ryanmkurtz_PR-8251_xndcn_xml' 2025-06-16 07:50:08 -04:00
Ryan Kurtz
2be860e3b0 GP-0: Certify 2025-06-16 07:48:57 -04:00
Ryan Kurtz
87a26e9cf0 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-16 06:15:07 -04:00
Ryan Kurtz
94305f2b5c Merge remote-tracking branch 'origin/GP-5695_emteere_ExceptionConstantProcessing' into Ghidra_11.4 2025-06-16 05:57:28 -04:00
emteere
2971656579 GP-5695 fixing null exception 2025-06-13 19:30:34 +00:00
Ryan Kurtz
ab849887aa Merge remote-tracking branch
'origin/GP-3952-ghidra_blue-update-script-categories--SQUASHED'
2025-06-13 12:12:47 -04:00
Ryan Kurtz
7d31a9547d Merge remote-tracking branch
'origin/GP-4473-ghidra_blue-stack-column--SQUASHED' (Closes #6330)
2025-06-13 12:07:37 -04:00
ghidra_blue
ea62161214 Added a local stack size and parameter stack size column in Window-> Functions 2025-06-13 15:56:38 +00:00
Ryan Kurtz
3c8bb490ac Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-13 11:10:20 -04:00
Ryan Kurtz
7a557c7d16 Merge remote-tracking branch
'origin/GP-0_ghidraffe_UpdateMakePostgresVersion' into Ghidra_11.4
(#8122)
2025-06-13 11:07:20 -04:00
ghidra_blue
7db176b2bd GP-3952 Updated the script categories to simplify and reduce the number of folders. 2025-06-13 15:00:15 +00:00
ghidraffe
4436bbd564 GP-0 fix incorrect version specified for postgres. 2025-06-13 14:43:14 +00:00
Ryan Kurtz
5ac69075e3 GP-0: Fixing deprecated calls to Conv 2025-06-13 09:03:48 -04:00
Ryan Kurtz
412bd0ffc1 GP-0: Fixing some warnings 2025-06-13 07:48:40 -04:00
Ryan Kurtz
3e53ea7f90 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-13 07:09:32 -04:00
Ryan Kurtz
ee0815cbd3 GP-0: Fixing javadoc warning 2025-06-13 07:06:13 -04:00
Ryan Kurtz
0052df889e Merge remote-tracking branch 'origin/GP-5712_ghidragon_gotonext_function_skip_non_memory_function--SQUASHED' 2025-06-12 14:06:28 -04:00
ghidragon
081e7222a8 GP-5712 fixing next/previous function to skip non-memory functions. 2025-06-12 13:14:03 -04:00
Ryan Kurtz
08ca670f43 GP-5757: Restricting XML external access 2025-06-12 10:39:53 -04:00
xndcn
faa9907deb Decompiler: Add .xml entension when user did not specify for DebugDecompilerAction 2025-06-12 18:05:56 +08:00
ghidra1
bca1fa5219 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-11 13:59:22 -04:00
ghidra1
ea414bd23e Merge branch 'GP-5680_ghidra1_Postgres15.13' into Ghidra_11.4
(Closes #8122)
2025-06-11 13:42:39 -04:00
ghidra1
5c8da44a33 GP-5680 Postgres upgrade to 15.13 and JDBC driver 42.7.6 2025-06-11 13:10:36 -04:00
Ryan Kurtz
82baf0aa74 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-11 12:07:08 -04:00
Ryan Kurtz
e08d05a376 Merge remote-tracking branch 'origin/GP-5622_ghidorahrex_aarch64_neon_impl--SQUASHED' into Ghidra_11.4 2025-06-11 11:51:05 -04:00
vporok01
3d54c90cd6 Fix RISC-V minu and max instructions' definitions (Closes #8215) 2025-06-11 11:47:49 -04:00
Ryan Kurtz
34402ed14e Merge remote-tracking branch 'origin/GP-5456_Dan_upgradeProtobuf--SQUASHED' 2025-06-11 08:13:45 -04:00
Ryan Kurtz
6073f01158 Merge branch 'GP-0_ryanmkurtz_PR-8240_bdemick_vxworks-symtab-improvements' 2025-06-11 08:01:50 -04:00
Ryan Kurtz
3467345cd2 GP-0: Fixing warnings 2025-06-11 08:00:21 -04:00
ghidorahrex
fe4244cbc9 GP-5622: Implemented pcode for several AARCH64 Neon instructions 2025-06-11 07:56:09 -04:00
Ryan Kurtz
22e785b1f5 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-11 06:12:50 -04:00
Ryan Kurtz
c52f4b20bf Merge remote-tracking branch 'origin/GP-5755_dev747368_fix_apple_kdk_dwarf' into Ghidra_11.4 2025-06-11 06:10:07 -04:00
Ryan Kurtz
af43036ff0 Merge remote-tracking branch 'origin/GP-1-dragonmacher-incremental-timing-fix' 2025-06-11 06:02:06 -04:00
Ryan Kurtz
1eb858dcf0 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-11 06:00:54 -04:00
Ryan Kurtz
c9fb3c5b3a Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-6-10-25' 2025-06-11 05:59:55 -04:00
dragonmacher
de22c25aa2 Fixed test failing due to being too slow 2025-06-10 17:55:42 -04:00
dev747368
e2fa4aaa7b GP-5755 Fix Apple KDK DWARF section name lookup, atomic type and source
file npe

Apple Macho binaries truncate section names to 16 chars, DWARF 5
introduced a section (debug_str_offsets) that has a name longer than 16
(along with the macho "__" prefix).

Add support for ignoring atomic_type, and some checking for missing
source file names.
2025-06-10 21:04:56 +00:00
ghidra1
5b71018f82 Merge remote-tracking branch 'origin/GP-5498_ghidra1_ExternalSymbolDB--SQUASHED' 2025-06-10 13:55:55 -04:00
ghidra1
f9a7a3d6ce GP-0 Fill out a few StubListing methods to avoid VT test stack traces 2025-06-10 13:52:10 -04:00
ghidra1
fd4370e946 GP-5498 SymbolTable V4 schema refactor 2025-06-10 13:49:26 -04:00
Ryan Kurtz
5fa1f30df9 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-10 12:46:09 -04:00
Ryan Kurtz
5ef97ee1d9 Merge remote-tracking branch 'origin/GP-5725_ghidorahrex_x86_avx512_immoper_fix--SQUASHED' into Ghidra_11.4 2025-06-10 12:43:00 -04:00
Ryan Kurtz
d4c034df15 GP-0: Fixing tests 2025-06-10 11:56:26 -04:00
Ryan Kurtz
4257433253 GP-5737: Fixing bug that caused some test failures 2025-06-10 10:10:05 -04:00
ghidorahrex
b0750c2783 GP-5725: Corrected operands for several AVX512 instructions 2025-06-10 09:21:39 -04:00
ghidra1
569519fb6c Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-09 18:54:09 -04:00
ghidra1
92f2588895 GP-0 Corrected build.gradle for PA-RISC to allow pcode test execution 2025-06-09 18:53:22 -04:00
ghidra1
17d8fdfcfa GP-0 corrected PA-RISC sleigh compile option 2025-06-09 18:48:09 -04:00
dragonmacher
748d4d037f Fixed lockup in incremental load job when the latch was not counted down 2025-06-09 17:59:39 -04:00
ghidra1
2acf286046 GP-0 Corrected build.gradle for PA-RISC to allow pcode test execution 2025-06-09 15:17:05 -04:00
ghidra1
ce0839f78c Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-09 14:00:35 -04:00
ghidra1
153956213f GP-5723 Revised default pointer label generation logic (Closes #8245) 2025-06-09 13:58:56 -04:00
Ryan Kurtz
1734ba7712 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-09 13:26:15 -04:00
Ryan Kurtz
283790a03e GP-0: Upping Gradle wrapper to 8.14.2 2025-06-09 13:24:27 -04:00
Ryan Kurtz
c224c5d44e Merge remote-tracking branch 'origin/GP-5737_ryanmkurtz_script-output--SQUASHED' 2025-06-09 12:20:46 -04:00
Ryan Kurtz
1add5a9bce GP-5737: Fixing GhidraScript PrintWriter 2025-06-09 12:14:58 -04:00
ghidra1
8367ac7354 GP-0 Allow SARIF module tests to run 2025-06-09 10:19:41 -04:00
ghidra1
6514e058b4 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-09 10:03:32 -04:00
ghidra1
cb3f884ef5 GP-5742 Corrected deprecation comments/annotations 2025-06-09 10:01:05 -04:00
ghidra1
f981f43fad Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-06 18:50:01 -04:00
ghidra1
e03fb9af76 Merge remote-tracking branch 'origin/GP-5742_ghidra1_CommentTypeCleanup--SQUASHED' into Ghidra_11.4 2025-06-06 18:00:36 -04:00
ghidra1
8c441250f5 GP-5742 Cleanup preferred CommentType enum use. Changed SARIF data component comment JSON serialization from int to String. 2025-06-06 17:58:07 -04:00
bdemick
fbee1cf61b Improves symbol string check, adds function to check if candidate symtable is just a string pointer table 2025-06-06 16:13:26 -04:00
Ryan Kurtz
5b0cac73c4 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-06 14:31:03 -04:00
Paul Hordiienko
700a06e897 Fixing analysis fail with function entryPoint may not be created on
defined data error (Closes #8238)
2025-06-06 14:28:41 -04:00
Ryan Kurtz
1b8faba952 Merge remote-tracking branch 'origin/GP-5740-dragonmacher-dtm-chooser-dialog-fix' 2025-06-06 13:52:47 -04:00
Ryan Kurtz
9d527d7859 Merge remote-tracking branch 'origin/GP-5645_ryanmkurtz_coff--SQUASHED'
(Closes #1398, Closes #8042)
2025-06-06 13:51:05 -04:00
Ryan Kurtz
12af96f0e3 GP-5645: Improved support for importing big-endian COFF binaries 2025-06-06 13:48:35 -04:00
Ryan Kurtz
a1f777a1dd Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-06 13:27:23 -04:00
Ryan Kurtz
54ba166144 Merge remote-tracking branch 'origin/GP-1-dragonmacher-edit-action-fix' into Ghidra_11.4 2025-06-06 13:23:59 -04:00
dragonmacher
08b990412e GP-5740 - Data Types - Fixed composite editor showing 2 data type
chooser dialogs; fixed Escape not working in the chooser dialog
2025-06-05 20:44:50 -04:00
dragonmacher
ac00cf7e30 Fixed missing help; fixed action enablement 2025-06-05 20:35:28 -04:00
ghidra1
c0cfad9107 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-05 17:55:06 -04:00
ghidra1
4a65e9af3b Merge remote-tracking branch 'origin/GP-5749_ghidra1_SARIF_improvements' into Ghidra_11.4 2025-06-05 17:53:26 -04:00
d-millar
7fe22b8092 GP-5749: Corrected SARIF import/export errors 2025-06-05 17:53:26 -04:00
ghidra1
f925768829 Merge remote-tracking branch 'origin/GP-5744_d-millar_sarif_failures' into Ghidra_11.4 2025-06-05 16:45:55 -04:00
Andras Gemes
c10a91fa3e BSim: Add getmetadata subcommand to bsim 2025-06-05 19:21:33 +00:00
d-millar
02cc001d30 GP-5744: fix for null sarif entries 2025-06-05 17:00:45 +00:00
Ryan Kurtz
e804e1a01d Merge remote-tracking branch
'origin/GP_5741_ghidragon_fixing_accessibility_for_symbol_tree--SQUASHED'
(Closes #8228)
2025-06-05 07:40:44 -04:00
ghidragon
8b6f85f1c5 GP-5741 fixing screen reader support for tree widges that have html toolt 2025-06-04 14:08:55 -04:00
Ryan Kurtz
1b9507e12d Merge remote-tracking branch 'origin/GP-4881_ryanmkurtz_pe--SQUASHED'
(Closes #6864)
2025-06-04 14:03:07 -04:00
Ryan Kurtz
129602cc8c GP-4881: Prevent PE Data Directory parse failures from making the import fail 2025-06-04 14:01:33 -04:00
Ryan Kurtz
9107dc3931 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-04 13:33:22 -04:00
Ryan Kurtz
f19b9d710c Merge remote-tracking branch
'origin/GP-5739_d-millar_NPE_fix_rebased_11.4' into Ghidra_11.4
(Closes #8227)
2025-06-04 13:29:37 -04:00
d-millar
58cecaf6a2 GP-5379: fix for file path NPE 2025-06-04 14:44:36 +00:00
Ryan Kurtz
7772d98143 Merge remote-tracking branch
'origin/GP-1-dragonmacher-decompiler-location-npe' (#8114)
2025-06-03 06:13:10 -04:00
Ryan Kurtz
1e27f3eff8 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-03 06:10:57 -04:00
Ryan Kurtz
0a0d7a6336 Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_comment-warnings' 2025-06-03 06:10:07 -04:00
Ryan Kurtz
d896b94124 Merge remote-tracking branch
'origin/GP-5735_fix_composite_editor_datatype_cloning--SQUASHED' into
Ghidra_11.4 (Closes #8217)
2025-06-03 06:02:58 -04:00
dragonmacher
397fdb2fb1 NPE fix 2025-06-02 17:29:57 -04:00
dev747368
24b6492c69 GP-5735 fix composite editor data type cloning 2025-06-02 15:37:36 -04:00
Ryan Kurtz
1ebb1a1457 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-02 14:26:08 -04:00
Ryan Kurtz
6a5cd42cc0 Merge remote-tracking branch 'origin/GP-5697_ghizard_update_PDB_post_analysis_popup_message' into Ghidra_11.4 2025-06-02 14:22:27 -04:00
ghizard
2858b63c67 GP-5697 -PDB - Updated pop-analysis pop-up message 2025-06-02 14:21:11 -04:00
Dan
f1607b5cfd GP-5456: Upgrade protobuf to 4.31.0 (java) and 6.31.0 (python) 2025-06-02 14:49:12 +00:00
Ryan Kurtz
684177702e GP-0: Fixing deprecated comment API warnings 2025-06-02 09:54:19 -04:00
Ryan Kurtz
5772ac2ab8 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-06-02 06:25:48 -04:00
Ryan Kurtz
24b9061eba Merge branch
'GP-5728_dev747368_PR-8213_imladenov51_ghidra_golang120_fix_11.4' into
Ghidra_11.4 (Closes #8213)
2025-06-02 06:23:18 -04:00
dev747368
4521861b18 GP-5728 improve go pcheader and moduledata searching
These code paths are mainly hit with stripped PE binaries, and together
with the missing 1.20+ pcheader magic value would cause failure to find
the firstmoduledata struct, which is the root of everything.
2025-06-02 06:21:41 -04:00
Ivan Mladenov
3422409568 Fixed magic bytes to resolve Golang (v1.20+) functions. 2025-06-02 06:21:22 -04:00
Ryan Kurtz
e849e9689c Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-30 14:35:05 -04:00
Ryan Kurtz
39ef79cace Merge remote-tracking branch 'origin/GP-5721_emteere_ConstantPropBugFix' into Ghidra_11.4 2025-05-30 14:24:00 -04:00
Ryan Kurtz
6bd2542049 Merge remote-tracking branch
'origin/GP-5724-dragonmacher-table-column-deadlock' (Closes #8208)
2025-05-30 14:21:26 -04:00
Ryan Kurtz
2b7a6c6d3b Merge remote-tracking branch 'origin/GP-5659_ghidorahrex_z80_sub_fix'
into Ghidra_11.4 (Closes #8144)
2025-05-30 13:51:53 -04:00
Ryan Kurtz
3b9701cb9e Merge remote-tracking branch 'origin/GP-5703_Dan_fixAutoVersion' into Ghidra_11.4 2025-05-30 13:49:16 -04:00
Ryan Kurtz
e3a652db2b Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-30 11:54:50 -04:00
ghidra1
35b67d2d25 GP-5723 Corrected regression bug 2025-05-30 10:11:41 -04:00
Ryan Kurtz
1f1e77b780 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-29-25-2' 2025-05-30 07:59:29 -04:00
Ryan Kurtz
faf4950bb5 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-30 07:59:04 -04:00
Ryan Kurtz
cc1fea8562 GP-5640: Fixing GFileSystem iterable function javadoc 2025-05-30 07:56:01 -04:00
Ryan Kurtz
d3131e319a GP-0: Fixing unused import warnings 2025-05-30 07:07:43 -04:00
Ryan Kurtz
2e0c098c25 GP-0: Fixing unnecessary semicolon warnings 2025-05-30 06:46:11 -04:00
Ryan Kurtz
5fe25f1cfd Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_warnings' 2025-05-30 06:06:50 -04:00
emteere
8b43314daf GP-4512 bugfixes 2025-05-30 01:51:09 +00:00
dragonmacher
6758197e84 Test fixes 2025-05-29 18:59:10 -04:00
dragonmacher
45e9baca7e GP-5724 - Fixed potential deadlock with options registration 2025-05-29 18:42:56 -04:00
dev747368
3ecbccaf6f GP-5726 fix absolute symlink path resolution
Absolute paths were being treated as relative.
2025-05-29 19:53:41 +00:00
Ryan Kurtz
48b8bc0fcc Merge remote-tracking branch 'origin/GP-3547_ghidra1_DefaultSettingsFix' 2025-05-29 14:37:47 -04:00
Ryan Kurtz
9cdb80472c Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-29 13:28:04 -04:00
Ryan Kurtz
1429b17db3 Merge remote-tracking branch 'origin/GP-0_ghidraffe_improveBuildDockerImageScript' into Ghidra_11.4 2025-05-29 13:25:25 -04:00
ghidraffe
a794a26345 GP-0 improved the build docker image script to use relative path for the
build context parameter of docker build.
2025-05-29 17:03:35 +00:00
Ryan Kurtz
0cbf33d074 GP-0: Fixing raw type warnings 2025-05-29 11:07:48 -04:00
Ryan Kurtz
a6cd5b5dbc GP-0: Fixing @Override warnings 2025-05-29 11:07:44 -04:00
ghidra1
f9435194a1 GP-3547 Disable Default Settings when they are immutable such as Dynamic
datatype component types.
2025-05-29 10:41:21 -04:00
Ryan Kurtz
d4120b4b4d Merge remote-tracking branch 'origin/GP-1-dragonmacher-test-fixes-5-29-25' 2025-05-29 10:41:08 -04:00
dragonmacher
f225a3e32a Test fixes 2025-05-29 10:33:18 -04:00
Ryan Kurtz
8365cf0a19 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-29 08:49:16 -04:00
Ryan Kurtz
f053749e7f Merge remote-tracking branch
'origin/GP-5723_ghidra1_DefaultPointerLabels' into Ghidra_11.4
(Closes #8200)
2025-05-29 08:47:10 -04:00
ghidra1
ef790b6261 GP-5723 Improved default pointer label naming 2025-05-28 15:35:07 -04:00
Ryan Kurtz
5e17903c66 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-28 14:59:46 -04:00
Ryan Kurtz
ec43d344ad GP-0: Giving PyGhidra access to a ProjectManager 2025-05-28 14:59:29 -04:00
Ryan Kurtz
6cf47563fb GP-0: Fixing warnings in Utility project 2025-05-28 14:55:40 -04:00
Ryan Kurtz
b63f4d305b Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-28-25' 2025-05-28 11:50:30 -04:00
dragonmacher
72d7986e6b Test fixes 2025-05-28 11:49:47 -04:00
Ryan Kurtz
50f289779f Merge branch 'GP-0_ryanmkurtz_PR-8193_sollyucko_fixing-typo-in-rename-structure-field-created-by-comment' 2025-05-28 06:16:03 -04:00
Ryan Kurtz
f299842b24 GP-0: Certify 2025-05-28 06:15:21 -04:00
Ryan Kurtz
368f59abb5 Merge remote-tracking branch 'origin/GP-1-dragonmacher-archive-icon-fix' 2025-05-28 06:06:01 -04:00
Solomon Ucko
ef4cbad4ec fixing typo in RenameStructureFieldTask comment: "Created by retype action" -> "Created by Rename Structure Field action" 2025-05-28 01:48:08 -04:00
dragonmacher
b6111feb39 Fixed node icon to show read-only status for archives from other
projects
2025-05-27 14:00:20 -04:00
ghidra1
b276bc6b33 Merge remote-tracking branch 'origin/GP-5391_ghidra1_BuiltinSettingsInit' into Ghidra_11.4 2025-05-27 13:24:09 -04:00
ghidra1
1505725e36 GP-5391 Correct manner in which BuiltIn datatype default settings are
conveyed to DataTypeSettingsDB instance.
2025-05-27 13:22:51 -04:00
Ryan Kurtz
88f77e5cd1 Merge remote-tracking branch 'origin/GP-5717-dragonmacher-vertex-shapes' 2025-05-27 13:16:27 -04:00
ghidra1
70bce6aa3a Merge remote-tracking branch 'origin/GP-5660_ghidra1_CorrectedFolderRenameRefresh' into Ghidra_11.4 2025-05-27 13:08:49 -04:00
ghidra1
8162329810 GP-5660 Corrected folder rename refresh bug 2025-05-27 13:06:41 -04:00
Ryan Kurtz
3f8fe98862 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-27 13:06:32 -04:00
Ryan Kurtz
0f5608ed56 Merge branch 'GP-5677_ryanmkurtz_lastrun' into Ghidra_11.4
(Closes #7440)
2025-05-27 12:53:59 -04:00
Ryan Kurtz
189117e7d4 GP-5677: Ghidra now writes a "lastrun" file that PyGhidra can look for
to help find the Ghidra installation dir
2025-05-27 09:09:53 -04:00
Ryan Kurtz
65b290624e Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-25 07:17:39 -04:00
Ryan Kurtz
7b01e2a595 GP-5396: Fixing regression in Mach-O FileSet extraction (Closes #8194) 2025-05-25 07:15:47 -04:00
dragonmacher
b03b5e112c Graph - Refactored the FcgVertex to create a generic circle vertex shape
provider
2025-05-24 16:54:55 -04:00
Ryan Kurtz
1a05e89206 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-23 13:45:56 -04:00
ghidraffe
da37f9d3c4 GP-0 fix docker build script warning 2025-05-23 13:43:14 -04:00
Ryan Kurtz
b3d4edb5f2 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-23 13:01:04 -04:00
Ryan Kurtz
73f8749439 Merge remote-tracking branch 'origin/GP-0_ghidraffe_fixDockerBuildScript' into Ghidra_11.4 2025-05-23 12:58:57 -04:00
ghidraffe
1676e929a8 GP-0 fix issue with docker build script 2025-05-23 16:56:13 +00:00
Ryan Kurtz
6cca3a1c5c Merge remote-tracking branch
'origin/GP-5711-dragonmacher-search-by-structure-offset--SQUASHED'
(Closes #8171)
2025-05-23 10:43:27 -04:00
MetalliC
24c0699a38
SuperH4: fix FSCA opcode destination location 2025-05-23 15:08:01 +03:00
MetalliC
53d7e1608f
SuperH4: fix fpu registers order 2025-05-23 15:03:55 +03:00
Ryan Kurtz
cd30a59a1c Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-22-25' 2025-05-23 06:10:03 -04:00
Ryan Kurtz
bdb8836982 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-23 06:09:40 -04:00
Ryan Kurtz
aff0561691 GP-0: Fixing NPE in Batch Importer (#Closes #8191) 2025-05-23 06:07:58 -04:00
dragonmacher
6b28db4085 Updated how the test timeout feature prints debug 2025-05-22 16:28:29 -04:00
Ryan Kurtz
f6682b872b Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-22 13:27:43 -04:00
Ryan Kurtz
e7b3d17fbe Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-22-25' into Ghidra_11.4 2025-05-22 13:25:32 -04:00
dragonmacher
38e83b2417 Test fixes 2025-05-22 13:21:05 -04:00
dragonmacher
e830dbabfa GP-5711 - Updated the Structure Editor's 'Find Uses of' action to work on unnamed fields 2025-05-22 13:10:48 -04:00
Ryan Kurtz
d6612d5dfd Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-22 11:12:02 -04:00
Ryan Kurtz
95497ba0a7 Merge remote-tracking branch 'origin/GP-5649_ghidraffe_DockerFixes' into Ghidra_11.4 2025-05-22 10:29:19 -04:00
Ryan Kurtz
5ab3df4bf8 Merge remote-tracking branch 'origin/GP-5699_ghidraffe_fixGhidraGoDevMode--SQUASHED' into Ghidra_11.4 2025-05-22 10:27:48 -04:00
ghidraffe
c85915954c GP-5699 fix GhidraGo in dev mode 2025-05-22 14:23:50 +00:00
Ryan Kurtz
6f0cb9a77c GP-5415: Python scripts that do not declare a @runtime metadata comment
now default to PyGhidra instead of Jython. (Closes #7856)
2025-05-22 10:13:19 -04:00
Ryan Kurtz
b7602e9d41 Merge remote-tracking branch
'origin/GP-5327-create-structure-dialog-updates' (Closes #6713)
2025-05-22 06:10:55 -04:00
Ryan Kurtz
089e3a229c Merge remote-tracking branch 'origin/GP-5713_ghizard_PDB_adjust_processing_of_thunks_to_allow_Demangler_to_set_siganture' 2025-05-22 06:08:16 -04:00
Ryan Kurtz
0609093a1f Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-22 06:05:06 -04:00
Ryan Kurtz
81d9cbb5ac Merge remote-tracking branch 'origin/GP-1-dragonmacher-edit-field-fix' into Ghidra_11.4 2025-05-22 06:01:29 -04:00
ghizard
348c423ae2 GP-5713 - PDB - adjust MSFT thunk processing to allow demangled
signatures to be used when not considered to be a Ghidra thunk
2025-05-21 16:30:42 -04:00
ghidra1
ce6770132b Merge remote-tracking branch
'origin/GP-5605_ghidra1_ELF_SH4_PartialInplace' into Ghidra_11.4
(Closes #8021)
2025-05-21 16:14:07 -04:00
dragonmacher
e2d5d30c64 GP-5327 - Fixed sizing issues with the data type and category editors 2025-05-21 15:36:35 -04:00
ghidravision
8234bfb14a GP-5327 - Create Structure Dialog - New text category box & existing
categories chooser
2025-05-21 15:36:35 -04:00
Ryan Kurtz
6c1b881847 Merge remote-tracking branch 'origin/GP-5707_dev747368_fix_projectindex_ref_for_getinfo_action' 2025-05-21 12:22:32 -04:00
Ryan Kurtz
bcbec7da37 Merge remote-tracking branch 'origin/GP-5661_ghizard_Fix_Apply_Data_Archives_SourceType_bug' 2025-05-21 12:21:28 -04:00
Ryan Kurtz
175cf94887 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-21 11:46:01 -04:00
Ryan Kurtz
775bd54efe Merge branch 'GP-0_ryanmkurtz_PR-8172_travislibre_vt-fix' into
Ghidra_11.4 (Closes #8172)
2025-05-21 11:28:22 -04:00
Ryan Kurtz
9871e01a8f GP-0: Certify 2025-05-21 11:27:00 -04:00
Travis Libre
310a6f073b Fix getDestinationFunctions 2025-05-21 11:23:15 -04:00
Ryan Kurtz
1b116f7b62 Merge remote-tracking branch 'origin/GP-1-dragonmacher-db-viewer-help-fix' 2025-05-21 11:05:30 -04:00
Ryan Kurtz
30b0e80733 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-21-25' 2025-05-21 10:32:29 -04:00
dragonmacher
f81300e2aa Test fixes 2025-05-21 10:31:33 -04:00
ghidra1
52eed79cc8 GP-0 Completed cleanup of unused AbstractDataType DuplicateNameException
use
2025-05-21 10:30:33 -04:00
ghidra1
f080fb70a1 GP-0 Minor cleanup of unused AbstractDataType DuplicateNameException use 2025-05-21 10:07:00 -04:00
Ryan Kurtz
aa8bffe707 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-21 09:46:27 -04:00
Ryan Kurtz
8ff5444ac1 GP-5710: Fixed a bug that prevented PyGhidra from properly using the
user's already-active virtual environment
2025-05-21 09:43:29 -04:00
ghidra1
2391bdefed Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-21 09:06:05 -04:00
ghidra1
4dbfaf0f66 GP-0 Removed unsupported method DataType.getDocs() 2025-05-21 08:56:13 -04:00
Ryan Kurtz
91e106c40c Merge remote-tracking branch 'origin/GP-5662-dragonmacher-namespace-hl' 2025-05-20 17:35:11 -04:00
Ryan Kurtz
55f9f0315e Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-20 17:34:41 -04:00
Ryan Kurtz
c594e41f60 Merge remote-tracking branch 'origin/GP-5681_ryanmkurtz_macho' into
Ghidra_11.4 (Closes #8124)
2025-05-20 17:20:05 -04:00
dragonmacher
6d96c5656a Help - DB Viewer help update
Fixes #1988
2025-05-20 16:01:34 -04:00
Ryan Kurtz
a048c3dd7c Merge remote-tracking branch 'origin/GP-1-dragonmacher-exception-fix'
(Closes #6838)
2025-05-20 14:13:40 -04:00
dragonmacher
bb56797479 Fixed stack trace in debug component 2025-05-20 14:09:02 -04:00
dev747368
2c894df34c GP-5707 fix getinfo FSB action project index
Also tweak tar filename info string
2025-05-20 18:05:53 +00:00
Ryan Kurtz
1ea264b71a GP-5681: Relocating Mach-O got entries with no symbols to the EXTERNAL
block
2025-05-20 14:01:21 -04:00
Ryan Kurtz
795d92cb1a Merge remote-tracking branch
'origin/GP-5694-dragonmacher-dtm-get-data-type' (Closes #8157)
2025-05-20 09:54:50 -04:00
Ryan Kurtz
c883520c90 Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_SequencedCollection' 2025-05-20 06:05:35 -04:00
dragonmacher
065581ad38 GP-5622 - Decompiler - Fixed namespace highlight bug 2025-05-19 17:47:33 -04:00
ghidra1
988660d862 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-19 16:06:03 -04:00
ghidra1
0b2739a8fe Merge remote-tracking branch
'origin/GP-5704_ghidra1_x86_16_LanguageUpgradeIssues' into Ghidra_11.4
(Closes #8140)
2025-05-19 16:05:34 -04:00
ghidra1
271ec694ad GP-5704 Corrected language upgrade issue affecting x86-16 Protected and
SMM mode variants.
2025-05-19 16:01:16 -04:00
dragonmacher
33ecf97be3 Updated the Quick Edit Field to fix the menu name and to fix a data type
edit bug
2025-05-19 14:21:59 -04:00
Ryan Kurtz
ea076b3fa6 GP-0: Using SequencedCollection for application root dirs since order
matters
2025-05-19 12:47:56 -04:00
ghidra1
5e7dcf750e Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-19 12:43:10 -04:00
ghidra1
749fdbb556 GP-0 Correction to GP-5619 regression 2025-05-19 12:40:37 -04:00
Ryan Kurtz
2e7c5da7b0 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-19 09:47:37 -04:00
Ryan Kurtz
e13838d177 GP-5396: Only adding exports for the original extracted dylib, not
additional ones (#7289)
2025-05-19 09:45:53 -04:00
Ryan Kurtz
98e80fee0b Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-19 06:02:43 -04:00
Ryan Kurtz
e4e2d92b07 Merge remote-tracking branch
'origin/GP-0_dev747368_definedstringiterator_morefixes_for_unions' into
Ghidra_11.4 (Closes #8134)
2025-05-19 05:57:23 -04:00
Ryan Kurtz
4c7795a944 Merge remote-tracking branch 'origin/GP-5692_James_update_bsim_tutorial' into Ghidra_11.4 2025-05-19 05:54:17 -04:00
Ryan Kurtz
175dbb1723 Merge remote-tracking branch 'origin/GP-5698_Dan_fixOneRepoDevLayout' into Ghidra_11.4 2025-05-19 05:51:32 -04:00
dragonmacher
6396a1a1e0 GP-5694 - Data Types - Updated the DataTypeQueryService to add more
useful method
2025-05-17 11:06:31 -04:00
dev747368
2ea66d6fb4 GP-0 more fixes for new definedstringiterator and unions 2025-05-16 22:04:26 +00:00
James
4226376a95 GP-5692 updated bsim tutorial 2025-05-16 20:21:23 +00:00
Dan
deadfe59a1 GP-5703: Only require minor versions to match in auto-install. 2025-05-16 19:48:43 +00:00
Ryan Kurtz
fd2dde2608 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-16 15:09:09 -04:00
Ryan Kurtz
f30aee4535 Merge remote-tracking branch 'origin/GP-5693_ghidragon_function_comparison_order_with_left_and_right_funcitons' into Ghidra_11.4 2025-05-16 15:06:20 -04:00
Ryan Kurtz
6726ed1515 GP-0: Fixing javadoc error 2025-05-16 14:48:55 -04:00
Ryan Kurtz
db8e21463b Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-16 14:25:58 -04:00
Ryan Kurtz
e2332dec70 Merge remote-tracking branch 'origin/GP-0_dev747368_fix_definedstringsiterator_foundstringsiterator_missing_first_struct_field' into Ghidra_11.4 2025-05-16 14:09:25 -04:00
dev747368
56694d77dc GP-0 fix definedstringiterator missing first struct field 2025-05-16 18:06:44 +00:00
Ryan Kurtz
6c6eb609c2 GP-5552: Integrated the UniversalMachoLoader into MachoLoader to address
a library loading issue
2025-05-16 13:47:28 -04:00
Dan
dbd574cfb2 GP-5698: Don't go to parent unless we have ghidra.repos.config. 2025-05-16 17:00:40 +00:00
Ryan Kurtz
69608f2751 Merge remote-tracking branch 'origin/GP-5697_ghizard_PDB_provide_post-analysis_popup_when_PDB_not_found' into Ghidra_11.4 2025-05-16 12:05:41 -04:00
ghizard
2f51ec305c GP-5697 - PDB Provide post-analysis pop-up when PDB file not found 2025-05-16 10:47:00 -04:00
Ryan Kurtz
0b8985a257 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-05-16-1' into Ghidra_11.4 2025-05-16 09:54:29 -04:00
Dan
04609f52da GP-0: Fix tests. 2025-05-16 13:50:06 +00:00
Ryan Kurtz
3872a6212f Merge remote-tracking branch 'origin/GP-5679-dragonmacher-dtm-type-filter--SQUASHED' into Ghidra_11.4 2025-05-16 09:45:41 -04:00
Ryan Kurtz
384cb88568 Merge remote-tracking branch 'origin/GP-5533_Dan_documentAndroidNdkWindowsSetup' into Ghidra_11.4 2025-05-16 09:38:19 -04:00
Dan
c1e42d60d8 GP-5533: Document Android NDK lldb setup. 2025-05-16 13:27:58 +00:00
Ryan Kurtz
b22ccaa260 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-16 06:17:56 -04:00
Ryan Kurtz
657215ddbe Merge remote-tracking branch 'origin/GP-5691_James_update_setexecutablecategoryscript--SQUASHED' into Ghidra_11.4 2025-05-16 06:08:22 -04:00
Ryan Kurtz
e386550016 Merge remote-tracking branch
'origin/GP-2941_dev747368_definedstringstable_performance--SQUASHED'
into Ghidra_11.4 (Closes #5726, Closes #8134, Closes #3498)
2025-05-16 06:06:41 -04:00
ghidragon
566ba712a3 GP-5693 fixed left/right order when comparing exactly two functions 2025-05-15 17:02:04 -04:00
James
d2d0c989f9 GP-5641 update SetExecutableCategoryScript 2025-05-15 16:50:59 -04:00
dragonmacher
2ef2619e18 GP-5679 - Data Type Filter fix 2025-05-15 16:33:33 -04:00
dev747368
c70de2b590 GP-2941 better defined string iterator
Don't iterate arrays that can't contain a string.
When iterating a struct, only look at defined fields.
Should address issues #8134, #5726, #3498
2025-05-15 16:20:27 -04:00
Ryan Kurtz
d0c327973c Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-15 14:46:31 -04:00
Ryan Kurtz
18d73945da Merge remote-tracking branch 'origin/GP-5612_Dan_fixGdbZeroLengthSections' into Ghidra_11.4 2025-05-15 14:34:43 -04:00
Dan
1398e1f9b9 GP-5612: Fix listing of zero-length sections in gdb. 2025-05-15 18:30:37 +00:00
Ryan Kurtz
865ac556b5 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-15 14:23:15 -04:00
Ryan Kurtz
f533aa5857 Merge remote-tracking branch 'origin/GP-5686_dev747368_dwarf_progtree_fix' into Ghidra_11.4 2025-05-15 14:20:24 -04:00
Ryan Kurtz
e6241f6058 Merge remote-tracking branch 'origin/GP-5668_Dan_activateOnLaunch' into Ghidra_11.4 2025-05-15 14:19:25 -04:00
Ryan Kurtz
72545246cf Merge remote-tracking branch 'origin/GP-5673_Dan_fixHangAtLaunchWithRegsFilter' into Ghidra_11.4 2025-05-15 14:18:45 -04:00
Dan
4e63ea7201 GP-5673: Fix hang at launch caused by repeated filtering of registers table. 2025-05-15 18:05:30 +00:00
dev747368
afe19e3f74 GP-5686 fix DWARF program tree when func is split over multi-memblk 2025-05-15 17:50:56 +00:00
Ryan Kurtz
0295d57b5e Merge remote-tracking branch 'origin/GP-1-dragonmacher-popup-mouse-fix-redux-11-5' 2025-05-15 13:42:41 -04:00
Dan
00d634ca17 GP-5668: Activate trace on target creation. Tweak message about out-of-date programs. 2025-05-15 17:42:38 +00:00
Ryan Kurtz
8ec9a9079a Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-15 13:42:06 -04:00
Ryan Kurtz
b8ecef1d5a Merge remote-tracking branch
'origin/GP-5665_ghidorahrex_PR-8151_jmillikin_fix-cvttsd2si' into
Ghidra_11.4 (Closes #8004, Closes #8151)
2025-05-15 13:39:10 -04:00
Ryan Kurtz
60ce1f523d Merge remote-tracking branch
'origin/GP-5682-dragonmacher-vxworks-headless-script-fix' into
Ghidra_11.4 (Closes #8156)
2025-05-15 13:35:49 -04:00
Ryan Kurtz
1740ddae4a Merge remote-tracking branch 'origin/GP-5671_Dan_fixStaleLogicalBpt' into Ghidra_11.4 2025-05-15 13:33:58 -04:00
Dan
0facc761ce GP-5671: Fix failed breakpoint updates on toggle. 2025-05-15 17:09:57 +00:00
ghidorahrex
d6815ae407 GP-5665: Additional cvt reg32 dest fixes 2025-05-15 16:52:12 +00:00
Ryan Kurtz
317d993c63 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-15 12:50:04 -04:00
Ryan Kurtz
284980b60b Merge remote-tracking branch
'origin/GP-5678_Dan_fixWow64AutoReads--SQUASHED' into Ghidra_11.4
(Closes #8155)
2025-05-15 12:47:10 -04:00
dragonmacher
667e439550 GP-5682 - VxWorksSymTab script headless fix 2025-05-15 12:44:02 -04:00
Dan
4a7d8b6984 GP-5678: Move timeout error on PE-header read to debug console. Heed Auto-Read spec. 2025-05-15 16:39:02 +00:00
Ryan Kurtz
d45a8d4c75 Merge remote-tracking branch 'origin/GP-1-dragonmacher-loop-counter-fix'
(#8104)
2025-05-15 11:59:26 -04:00
Ryan Kurtz
33b9688d7c Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-15 11:58:09 -04:00
dragonmacher
a9d24753ee Fix loop counter 2025-05-15 11:55:40 -04:00
Ryan Kurtz
46542228c3 GP-5681: Adding currently unsupported DYLD chained fixups to the
relocation table (#8124)
2025-05-15 11:52:50 -04:00
Ryan Kurtz
bcb2d2934e Merge remote-tracking branch 'origin/GP-5670_Dan_dbgTutorialErrata' into Ghidra_11.4 2025-05-15 09:14:47 -04:00
Dan
b18291178a GP-5670: Errata in the Debugger Tutorial 2025-05-15 13:07:11 +00:00
dragonmacher
4eced86c09 Yet another attempt at correct global mouse popup behavior 2025-05-14 19:08:37 -04:00
Ryan Kurtz
717cb2a0ce Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-14 16:29:33 -04:00
Ryan Kurtz
7b310a0676 Merge remote-tracking branch
'origin/GP-5676_James_handle_ops_with_one_input' into Ghidra_11.4
(Closes #8092)
2025-05-14 16:27:23 -04:00
James
27a019d9f8 GP-5676 fixed issue involving ops with one input in
BooleanMatch::evalute
2025-05-14 20:24:04 +00:00
Ryan Kurtz
24205f79a7 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-14 16:17:25 -04:00
Ryan Kurtz
fa09e132a1 Merge remote-tracking branch 'origin/GP-5675_Dan_fixCompareSnapshots' into Ghidra_11.4 2025-05-14 16:14:39 -04:00
Dan
b491934eea GP-5675: Ensure comparison uses alternative view path. 2025-05-14 20:06:57 +00:00
Ryan Kurtz
741e6614f0 Merge remote-tracking branch 'origin/Ghidra_11.4' 2025-05-14 15:56:47 -04:00
Ryan Kurtz
b915d15baa Merge remote-tracking branch 'origin/GP-5672_Dan_fixSyncProgramSwitch' into Ghidra_11.4 2025-05-14 15:53:58 -04:00
Dan
2a173db3fc GP-5672: Emit program change on sync if needed. 2025-05-14 19:46:20 +00:00
Ryan Kurtz
dfac883a7a Merge remote-tracking branch
'origin/GP-5654-dragonmacher-slow-data-types-delete--SQUASHED'
(Closes #8104)
2025-05-14 15:46:13 -04:00
Ryan Kurtz
c832784952 GP-0: Bumping master to 11.5 2025-05-14 15:45:24 -04:00
Ryan Kurtz
a674133712 Merge remote-tracking branch 'origin/GP-5664_ghizard_PdbReader_parse_NewFramePointerOmission_data' 2025-05-14 15:43:31 -04:00
Ryan Kurtz
e79a68c764 Merge remote-tracking branch 'origin/GP-5667_Dan_fixDebuggerArgsPassing' into Ghidra_11.4 2025-05-14 15:33:09 -04:00
Dan
6ab32ff426 GP-5667: Fix gdbi and lldb argument passing in bash. 2025-05-14 19:29:13 +00:00
Ryan Kurtz
70820402d7 GP-0: Making build fail if "UNKNOWN" wheel is produced due to old pip. 2025-05-14 12:01:03 -04:00
ghizard
9003cf9461 GP-5664_PdbReader_parse_NewFramePointerOmission_data 2025-05-14 06:40:52 -04:00
John Millikin
6ab48b885b x86: Fix missing zero-extension in CVTTSD2SI 2025-05-14 19:19:32 +09:00
Ryan Kurtz
fb04408b0a Merge remote-tracking branch 'origin/GP-0-dragonmacher-11-4-test-fixes-5-13-25' into Ghidra_11.4 2025-05-14 05:59:57 -04:00
dragonmacher
68bc9c8109 Test fixes; Revert of mouse listener fix for 11.4 2025-05-13 19:20:43 -04:00
dragonmacher
404191cdaa GP-5654 - Data Type Manager - Speed improvements for deleting data types 2025-05-13 14:27:17 -04:00
ghizard
b15b51e48e GP-5661 - Fix SourceType issue in Apply Data Archives 2025-05-13 12:45:19 -04:00
d-millar
a1b6084c88 GP-0: Adding a missing commit (cosmetic changes) 2025-05-13 10:50:08 -04:00
ghidorahrex
eb6fbb17ef GP-5659: Fixed z80 sub instruction semantics 2025-05-13 14:24:39 +00:00
Ryan Kurtz
04bb0fa5a7 Merge remote-tracking branch 'origin/GP-1-dragonmacher-mouse-listener-fix--SQUASHED' into Ghidra_11.4 2025-05-13 07:54:00 -04:00
Ryan Kurtz
53b2e81863 Merge remote-tracking branch
'origin/GP-1-dragonmacher-dtm-tree-action-fix' into Ghidra_11.4 (#8131)
2025-05-13 07:53:48 -04:00
Ryan Kurtz
db237ce639 Merge remote-tracking branch
'origin/GP-5642-dragonmacher-gnu-demangler-tls-init--SQUASHED' into
Ghidra_11.4 (Closes #8105)
2025-05-13 06:18:56 -04:00
Ryan Kurtz
ca9be8510d Merge remote-tracking branch
'origin/GP-5655-dragonmacher-decomp-location-exception' into Ghidra_11.4
(Closes #8139)
2025-05-13 06:16:43 -04:00
Ryan Kurtz
60ab12ca12 Merge remote-tracking branch 'origin/GP-5658_Dan_fixMissingHome' into Ghidra_11.4 2025-05-13 06:14:27 -04:00
Ryan Kurtz
0decb8916f Merge remote-tracking branch 'origin/GP-5657_Dan_fixForGdb12' into Ghidra_11.4 2025-05-13 06:13:00 -04:00
Ryan Kurtz
b5f31e7c35 Merge remote-tracking branch 'origin/GP-5656_Dan_fixTypoInstalled' into Ghidra_11.4 2025-05-13 06:11:16 -04:00
dragonmacher
5f61a06381 GP-5642 - Gnu Demangler - Added support for TLS init functions 2025-05-12 19:27:20 -04:00
dragonmacher
6f4b1f730e Fixed mouse listener ordering 2025-05-12 15:54:12 -04:00
Dan
4edb4ca970 GP-5658: Fix missing lines from extracted gmodutils.py 2025-05-12 18:30:46 +00:00
Dan
e4f12cc691 GP-5657: Some conditionals to avoid missing types in older gdb versions. 2025-05-12 18:18:39 +00:00
Dan
cd593a23ea GP-5656: Fix debilitating typo affecting installation layout. 2025-05-12 18:06:14 +00:00
dragonmacher
b714f562ac GP-5655 - Decompiler - NPE fix for program location 2025-05-12 10:49:40 -04:00
dragonmacher
969f854fe2 Fixed Copy/Paste keybindings in the Data Type Manager 2025-05-10 14:47:30 -04:00
ghidraffe
e817566c4f GP-5649 improvements for Dockerized Ghidra 2025-05-09 18:27:58 +00:00
Ryan Kurtz
0ebc4c9608 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-9-25' 2025-05-09 13:47:29 -04:00
dragonmacher
dad56dfcbe Test fixes 2025-05-09 13:40:52 -04:00
emteere
c58647b7d2 GP-0 Fix for minor instruction length override regression 2025-05-09 14:06:32 +00:00
Ryan Kurtz
acf3e49928 Merge branch 'GP-5363_ghidra2_helpIndex--SQUASHED' 2025-05-09 06:11:15 -04:00
ghidra2
6a41722fd0 GP-5363: Added BSim section and path to Debugger tutorial to
GettingStarted.md
2025-05-09 06:09:31 -04:00
ghidra1
9a7d3eb93f Merge remote-tracking branch 'origin/GP-1-dragonmacher-dt-filter-updates--SQUASHED' 2025-05-08 17:48:06 -04:00
dragonmacher
72dfb355ac GP-1 Updates to the Data Type Manager filter dialog to allow typedef filtering 2025-05-08 17:47:11 -04:00
ghidra1
a9d3b9e236 Merge remote-tracking branch 'origin/GP-4512_emteere_ConstantAnalysisSpeedup--SQUASHED' 2025-05-08 17:36:25 -04:00
emteere
c396867209 GP-4512 Constant propagation and stack analysis performance changes 2025-05-08 17:35:25 -04:00
ghidra1
e10c42ab44 Merge remote-tracking branch 'origin/patch' 2025-05-08 17:20:05 -04:00
ghidra1
cd6d45c64f GP-0 Corrected NPE for eBPF ELF import. (Closes #8034) 2025-05-08 17:18:19 -04:00
ghidra1
0bf8f03a1e Merge branch 'GP-5619_emteere_VariousSpeedImprovements_VERSION2' 2025-05-08 16:18:38 -04:00
ghidra1
ececb7ea36 Merge remote-tracking branch 'origin/GP-3579_ghidraffe_GhidraDocker--SQUASHED' 2025-05-08 15:48:19 -04:00
ghidraffe
fbdcd1c709 GP-3579 Added docker image generation to Ghidra distribution. Use from development source repo is not supported. 2025-05-08 15:47:15 -04:00
ghidra1
df505c40a3 Merge branch 'GP-5619_emteere_VariousSpeedImprovements_VERSION2' 2025-05-08 14:57:36 -04:00
emteere
5a9b0268de GP-5619 Various FunctionDB/InstructionDB locking related speed
improvements.  Revised DatabaseObject checkIsValid implementation.
2025-05-08 14:54:51 -04:00
Dan
87db26d487 GP-5551: Detect and offer installation of missing Python packages. 2025-05-08 18:30:58 +00:00
Ryan Kurtz
1dc06fcdc2 Merge remote-tracking branch 'origin/GP-5573_d-millar_CTADL_upgrade--SQUASHED' 2025-05-08 13:11:09 -04:00
d-millar
3816012384 GP-5573: fix for horrible kludge
GP-5573: mostly working (ish)
GP-5566: lib/fn variants
GP-5573: error in initRun logic
GP-5573: append
GP-5573: tests/colors
GP-5573: more errors
GP-5573: minor fix
GP-5573: basically working?
2025-05-08 12:55:00 -04:00
Ryan Kurtz
8320d12461 Merge remote-tracking branch
'origin/GP-4923_ghintern_arm_apcs--SQUASHED' (Closes #7434)
2025-05-08 12:36:16 -04:00
Ryan Kurtz
32abab0a3d Merge remote-tracking branch
'origin/GP-5192_ghintern_aarch64_aapcs_fixes--SQUASHED' (Closes #8016)
2025-05-08 12:34:30 -04:00
Ryan Kurtz
5fd9cff2ed Merge remote-tracking branch
'origin/GP-5543_ghidracadabra_PR-7953_ADonut_decompiler-optimize'
(Closes #7953)
2025-05-08 12:29:44 -04:00
Ryan Kurtz
c7f9586d97 Merge remote-tracking branch
'origin/GP-5638_ghidracadabra_PR-6602_Sleigh-InSPECtor_x86_push_fs_gs_size'
(Closes #6602)
2025-05-08 12:28:25 -04:00
Ryan Kurtz
541818c274 Merge remote-tracking branch 'origin/patch' 2025-05-08 12:26:49 -04:00
Ryan Kurtz
d641f9de69 Merge remote-tracking branch
'origin/GP-4731_ghidorahrex_PR-5256_befoulad_armv8-splimit' into patch
(Closes #5256, Closes #5255, Closes #6667)
2025-05-08 12:22:40 -04:00
Ryan Kurtz
7cf82f6fe6 Merge remote-tracking branch 'origin/GP-5643_ryanmkurtz_rust-strings'
(Closes #8019)
2025-05-08 11:46:32 -04:00
Ryan Kurtz
1f6b6478d2 Merge remote-tracking branch 'origin/GP-5640_ryanmkurtz_iterableFS--SQUASHED' 2025-05-08 11:44:25 -04:00
Ryan Kurtz
71ed695edd GP-5640: Making more things Iterable 2025-05-08 11:42:30 -04:00
Ryan Kurtz
86ddb78480 The "Rust String Analyzer" no longer clears and converts strings defined
in the header to character arrays
2025-05-08 10:46:41 -04:00
ghintern
28ca53cb34 GP-4923: cspec, ldefs, opinion file support for ARM apcs abi 2025-05-07 17:41:41 +00:00
ghintern
b0b1db632c GP-5192: Fix aarch64 cspec to match aapcs calling convention 2025-05-07 17:40:54 +00:00
Ryan Kurtz
eaf6c42a7e Merge branch 'GP-0_ryanmkurtz_PR-8117_MTAwsl_lldb-arg-bug' 2025-05-07 11:04:49 -04:00
Ryan Kurtz
f9b3499231 Merge remote-tracking branch
'origin/GP-5639-dragonmacher-decompiler-exceptions' (Closes #8111,
Closes #8114)
2025-05-07 10:41:43 -04:00
James
a9e193d811 GP-5638 update language verions 2025-05-07 13:51:22 +00:00
NapCat
bd2088dfed
Update local-lldb.sh, fix #8115 2025-05-07 20:44:59 +10:00
NapCat
5d6cc2c981
Update kernel-lldb.sh, Fix #8115 2025-05-07 20:44:15 +10:00
NapCat
d49faf9e0f
Update android-lldb.sh, Fix #8115 2025-05-07 20:43:44 +10:00
dragonmacher
af7e572632 Fixed recent Decompiler location regressions 2025-05-06 18:47:17 -04:00
Sleigh-InSPECtor
ce839ce9fc x86: PUSH FS/GS long mode improvements. 2025-05-06 18:42:50 +00:00
Ryan Kurtz
915760bcae Merge remote-tracking branch 'origin/GP-5631_ryanmkurtz_jars' 2025-05-06 11:47:21 -04:00
Ryan Kurtz
bbd6b99605 GP-5631: Upgrading some jars 2025-05-06 05:52:23 -04:00
Ryan Kurtz
e209136396 Merge remote-tracking branch
'origin/GP-5634-dragonmacher-find-structures' (Closes #8096)
2025-05-05 17:53:35 -04:00
dragonmacher
17d0a83d51 GP-5634 - Fixed 'Find Structures by Size...' to find zero-length
structures
2025-05-05 16:52:25 -04:00
Ryan Kurtz
7e7f226b8c GP-0: Fixing WhatsNew link to ChangeHistory 2025-05-05 12:48:47 -04:00
Ryan Kurtz
01cb570dc7 Merge remote-tracking branch 'origin/patch' 2025-05-05 12:44:07 -04:00
Ryan Kurtz
39520f7894 Merge remote-tracking branch 'origin/GP-5633_ryanmkurtz_prevprefs' into
patch (Closes #8107)
2025-05-05 12:42:18 -04:00
Ryan Kurtz
7ed4b39bab Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-5-5-25' 2025-05-05 12:38:46 -04:00
dragonmacher
837ccb0f2a Test fixes 2025-05-05 12:35:33 -04:00
Ryan Kurtz
d2d3590d28 GP-5633: Fixed a bug that prevented new installations of Ghidra from
applying preferences found in older installed versions of Ghidra
2025-05-05 12:28:23 -04:00
Ryan Kurtz
939a8f979c Merge remote-tracking branch 'origin/patch' 2025-05-05 12:15:00 -04:00
Ryan Kurtz
67837ab99e GP-0: Fixing GhidraProject.openProgram() javadoc (Closes #8108) 2025-05-05 12:13:44 -04:00
ghidra1
f0a327ff11 GP-0 Added additional DataTypeParserTest cases 2025-05-05 12:00:16 -04:00
Ryan Kurtz
55bd8de0fa GP-0: Setting Gradle wrapper version to 8.14 2025-05-05 09:45:45 -04:00
Ryan Kurtz
87b1dbb8dc Merge remote-tracking branch 'origin/patch' 2025-05-02 15:17:36 -04:00
Ryan Kurtz
838c773253 Merge remote-tracking branch
'origin/GP-5587_ghidorahrex_AARCH64_dsb_instruction_fix' into patch
(Closes #7996)
2025-05-02 15:14:21 -04:00
Ryan Kurtz
9a7cced02c Merge remote-tracking branch
'origin/GP-5469_ghidorahrex_ARM_VFP_sysreg_fix' into patch
(Closes #6573)
2025-05-02 15:10:53 -04:00
ghidra1
8985f7d526 Merge branch 'GP-5628_ghidra1_NewTypedefFix' 2025-05-01 17:12:28 -04:00
ghidra1
742deca674 GP-5628 Corrected New Typedef... dialog to be consistent with other
cases
2025-05-01 17:11:42 -04:00
Ryan Kurtz
7e8d0c850d Merge remote-tracking branch
'origin/GP-5447_ghizard_fix_spelling_on_vxt_methods_and_variables'
2025-05-01 07:53:19 -04:00
ghizard
fb64f3084b GP-0 - Fix PDB CPP vxt spelling on methods and variables 2025-05-01 07:48:40 -04:00
Ryan Kurtz
a280e5162a Merge remote-tracking branch 'origin/GP-5611_ghizard_rename_to_MsVxtManager' 2025-05-01 06:10:50 -04:00
Ryan Kurtz
878a8fc5e5 Merge remote-tracking branch 'origin/GP-0-dragonmacher-bug-fix-4-30-25' 2025-05-01 06:09:42 -04:00
ghizard
be3f380540 GP-5611 - Rename to MsVxtManager and MsVxtManagerTest 2025-05-01 04:34:59 -04:00
dragonmacher
63503ac3b5 small bug fix for restoring program locations 2025-04-30 17:02:29 -04:00
Ryan Kurtz
ed1521227b Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-26-25--SQUASHED' 2025-04-30 14:25:49 -04:00
Ryan Kurtz
5e825ebb5a Merge branch 'GP-5627_ryanmkurtz_pyghidra-projects' (Closes #8040) 2025-04-30 11:25:55 -04:00
dragonmacher
dd15eca6b5 Test fix; update Code Browser to have both setView() and updateView() 2025-04-30 11:05:11 -04:00
Ryan Kurtz
151fea46f5 GP-5627: PyGhidra can now open projects created with the Ghidra GUI by
setting the "nested_project_location" optional parameter to False
2025-04-30 09:54:57 -04:00
Ryan Kurtz
34f9064788 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-29-25' 2025-04-29 13:44:34 -04:00
dragonmacher
f6d0222e3f test fixes; removed anonymous warnings 2025-04-29 13:36:45 -04:00
Ryan Kurtz
73b743654a Merge remote-tracking branch 'origin/patch' 2025-04-29 12:38:59 -04:00
Ryan Kurtz
be44608fa0 Merge remote-tracking branch 'origin/GP-5626_ghidra1_BookmarkMergeNPE' into patch 2025-04-29 12:35:25 -04:00
ghidra1
8802b2dab0 GP-5626 Corrected Bookmerge merge NPE. Ensure that category and comment
are never null
2025-04-29 11:18:10 -04:00
Ryan Kurtz
ef4e9fee4d Merge remote-tracking branch 'origin/GP-5624_dev747368_gcwritebarrier_flag_dwarf' 2025-04-28 18:52:41 -04:00
dev747368
804210b7eb GP-5624 fix markup of gcwritebarrier enabled flag when dwarf is present
DWARF can lay down a more detailed struct that encompasses the enabled
flag, but it prevents the decompiler from simplifying its output.

This change clears any DWARF struct laid down over the enabled flag.
2025-04-28 20:44:24 +00:00
Ryan Kurtz
af5e744570 Merge remote-tracking branch 'origin/patch' 2025-04-28 15:27:24 -04:00
Ryan Kurtz
2ab014f8c2 Merge remote-tracking branch 'origin/GP-5537_ghidorahrex_avx512_update--SQUASHED' into patch 2025-04-28 15:22:04 -04:00
Ryan Kurtz
02221f03f5 Merge remote-tracking branch 'origin/GP-5625_ghidra007_AddNullChecks'
into patch (Closes #8045)
2025-04-28 15:20:06 -04:00
ghidra007
e4163c60a5 GP-5625 rtti script added some missing null checks 2025-04-28 18:36:37 +00:00
Ryan Kurtz
fb54675cfc Merge remote-tracking branch
'origin/GP-5618-dragonmacher-table-popup-fix--SQUASHED' (Closes #7902)
2025-04-28 14:15:51 -04:00
Ryan Kurtz
af7b333b12 GP-0: Making Project AutoCloseable 2025-04-28 13:55:11 -04:00
Ryan Kurtz
61bb5bcdd0 Merge remote-tracking branch
'origin/GP-5615_ghidragon_execption_in_goto_dialog--SQUASHED'
(Closes #8038)
2025-04-28 13:40:59 -04:00
Ryan Kurtz
f17a9c4607 Merge branch 'GP-0_ryanmkurtz_PR-8043_adriankentsato_remove-installationguide-html' 2025-04-28 12:42:08 -04:00
Ryan Kurtz
1131f02dc8 GP-0: Certify 2025-04-28 12:41:31 -04:00
Ryan Kurtz
9b3b9a851b Merge remote-tracking branch
'origin/GP-5620-dragonmacher-table-duplicate-data' (Closes #8031)
2025-04-28 11:45:18 -04:00
James
35e4d3d4c5 GP-5543 fixed typo 2025-04-28 14:28:39 +00:00
ADonut
b5d58be2ce Decompiler: Enable optimization for C++ source files
Also enable LTCG/LTO.
2025-04-28 14:21:58 +00:00
Kent Adrian Sato
0a2b2b6569
cleanup: updated references to InstallationGuide.html with GettingStarted.md
Removed references to InstallationGuide.html and changed it to GettingStarted.md
2025-04-26 09:40:13 +08:00
dragonmacher
7420c70b2d GP-5618 - Tables - Updated tables so that Ctrl-Left-Click on the Mac does not clear the selection 2025-04-25 16:46:58 -04:00
dragonmacher
8d2c94e28d GP-5620 - Fixed a bug that introduced duplicate data when renaming
functions with a filter
2025-04-25 15:34:48 -04:00
ghidra1
15203337f5 Merge branch 'GP-5586_ghidra1_StackEditorIssues' 2025-04-25 15:33:22 -04:00
ghidra1
72a94daa1d GP-5586 Refactored and fixed function stack frame editor 2025-04-25 15:31:42 -04:00
ghidragon
68bd01cbc1 GP-5615 fixed NPE in GoTo dialog when '\' entered 2025-04-24 16:56:03 -04:00
Ryan Kurtz
4a46edc9fe Merge remote-tracking branch 'origin/patch' 2025-04-24 14:22:15 -04:00
Ryan Kurtz
022318bd4d Merge remote-tracking branch 'origin/GP-5607_d-millar_bad_image_defaults' 2025-04-24 12:58:43 -04:00
ghidorahrex
4f1933c1a3 GP-5537: Added additional AVX512 instructions 2025-04-24 12:57:38 -04:00
Ryan Kurtz
da9f764d78 Merge remote-tracking branch 'origin/GP-5606_d-millar_dbgeng_exc_error'
(Closes #8029)
2025-04-24 12:56:47 -04:00
Ryan Kurtz
e2f7be119a GP-0: Fixing javadoc 2025-04-24 12:14:05 -04:00
Ryan Kurtz
71e7f65d3f Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-23-25' 2025-04-24 09:47:32 -04:00
ghidra1
52c52224e7 Merge remote-tracking branch 'origin/GP-5446_ghizard_lay_down_vxt_types' 2025-04-23 18:02:44 -04:00
ghidra1
7bde88f3cb Merge remote-tracking branch 'origin/GP-5608_ghizard_fix_vxtable_composition_regression' 2025-04-23 18:02:10 -04:00
dragonmacher
10366c08e4 Update key event processing to not fire Java actions, but to instead let
Java handle them.
2025-04-23 14:13:17 -04:00
Ryan Kurtz
4aa78ae6d0 Merge remote-tracking branch
'origin/GP-5453-dragonmacher-decompiler-locations--SQUASHED'
(Closes #7518)
2025-04-23 10:41:54 -04:00
ghizard
1d84859a8d GP-5446 - PDB CPP Lay down vxt types 2025-04-23 07:57:11 -04:00
ghizard
388a1e989b GP-5608 - PDB CPP Fix vxtable composition regression; add in planned
signature compare; adjust tests
2025-04-22 17:09:36 -04:00
ghidra1
1179fc10a0 GP-0 Restored missing release notes for ChangeHistory.md 2025-04-22 15:23:00 -04:00
dragonmacher
14c10409ac GP-5453 - Decompiler - Updated location broadcasting to better navigate the listing 2025-04-22 15:18:09 -04:00
Ryan Kurtz
ac4b4bb5d2 Merge remote-tracking branch 'origin/GP-5603_ghizard_PDB_CPP_nonspeculative_class_layout_when_vbt_not_found--SQUASHED' 2025-04-22 14:13:20 -04:00
ghizard
61025ea48f GP-5603 - PDB CPP nonspeculative class layout when no VBT; modify layout options 2025-04-22 14:05:08 -04:00
Ryan Kurtz
1a7627bd23 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-21-25' 2025-04-22 13:14:46 -04:00
d-millar
9c23ea8f09 GP-5607: don't use tool defaults if you have a prorgam 2025-04-22 12:26:39 -04:00
d-millar
11a7490262 GP-5606: fix for always stopping 2025-04-22 11:30:18 -04:00
Ryan Kurtz
37cdf1fa69 Merge remote-tracking branch 'origin/GP-5524_ghizard_Improve_CPP_PDB_testing_framework--SQUASHED' 2025-04-22 09:22:36 -04:00
ghizard
12d14149f4 GP-5524 - Improve CPP/PDB testing framework 2025-04-22 06:07:37 -04:00
ghidra1
29712e5b74 GP-5605 Handle partially linked ELF SH4 R_SH_DIR32 relocation 2025-04-21 17:51:14 -04:00
dragonmacher
01de3b89dd review fixes 2025-04-21 17:38:58 -04:00
dragonmacher
f57c6f64ac Updated key event processing to let client code have the event before
the docking action system
2025-04-21 16:09:15 -04:00
Ryan Kurtz
a810c384f4 Merge remote-tracking branch 'origin/GP-1-dragonmacher-escape-confirmation' 2025-04-21 14:12:54 -04:00
Ryan Kurtz
ce8835ef7d Merge remote-tracking branch
'origin/GP-5604_James_bsim_overview_listener--SQUASHED' (Closes #7903)
2025-04-21 14:11:55 -04:00
James
e56b4a746b GP-5604 add listener to bsim overview table 2025-04-21 13:01:12 -04:00
Ryan Kurtz
5a2957ff2a Merge remote-tracking branch 'origin/GP-5598_ryanmkurtz_GettingStarted' 2025-04-21 12:02:39 -04:00
Ryan Kurtz
6f6f1fccd4 Merge remote-tracking branch
'origin/GP-5602_dev747368_dwarf_create_func_at_occupied_addr'
(Closes #6866)
2025-04-21 12:01:42 -04:00
Ryan Kurtz
0ee0537e45 GP-5598: Rename InstallationGuide to GettingStarted; put in installation
root dir
2025-04-21 11:58:26 -04:00
Ryan Kurtz
39e5485389 GP-0: Fixing Mach-O DYLD_CHAINED_IMPORT_ADDEND64 weak_import value
(Closes #8023)
2025-04-21 08:40:02 -04:00
Ryan Kurtz
f8ce5b4b3b Merge branch 'GP-0_ryanmkurtz_PR-8025_LukeSerne_fix-typo' 2025-04-21 07:55:21 -04:00
Ryan Kurtz
6730154316 GP-0: Certify 2025-04-21 07:54:19 -04:00
Ryan Kurtz
812b243dbb Merge branch 'GP-0_ryanmkurtz_PR-8024_bdemick_vxworks-symtab-edge-case' 2025-04-21 06:21:25 -04:00
Luke Serné
8303061629 Many typo's
These were found using the command below searching for duplicated words,
and manually going through the results to remove the false positives and
reword the true positives. Sometimes I removed the doubled word and
sometimes I replaced the duplicated word.

The grep command:
grep -nIEr '\b([a-zA-Z]+)[[:space:]*]+\1\b' ./Ghidra
2025-04-19 18:06:41 +02:00
Luke Serné
b7e91e80a2 Fix various "function" typos 2025-04-19 17:20:51 +02:00
dragonmacher
c942158416 Memory Search - Updated the search provider to prompt users before
closing a provider with user-modified results
2025-04-18 19:42:22 -04:00
Ryan Kurtz
23e656ffc0 Merge remote-tracking branch 'origin/GP-5364_Dan_funcGraphPlusBptMarginBugs--SQUASHED' 2025-04-18 13:47:46 -04:00
Dan
20e83f2165 GP-5364: Fix some plugin order bugs. 2025-04-18 17:46:28 +00:00
dev747368
08d9871b85 GP-5602 dwarf: check for conflicting data at func addr 2025-04-18 17:37:06 +00:00
Ryan Kurtz
f65a993d26 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-18-25' 2025-04-18 13:07:29 -04:00
dragonmacher
a052d9e227 Test fixes 2025-04-18 13:06:37 -04:00
Ryan Kurtz
569c47eebb Merge remote-tracking branch 'origin/GP-5264_Dan_pcModFuncColumnsInTime--SQUASHED' 2025-04-18 11:17:35 -04:00
Dan
5743b48101 GP-5264: Add PC, Function, and Module columns to the Time panel 2025-04-18 15:15:17 +00:00
Ryan Kurtz
fdeef97855 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-04-18-1' 2025-04-18 10:59:09 -04:00
Dan
cdc32441b2 GP-0: Fix several tests from GP-5523. 2025-04-18 13:12:13 +00:00
Ryan Kurtz
712303165a Merge remote-tracking branch 'origin/GP-5570_dev747368_copy_symbols_from_external_reversestripped_debugfiles--SQUASHED' 2025-04-18 06:16:15 -04:00
Ryan Kurtz
bf1659f11d Merge remote-tracking branch 'origin/GP-5599-dragonmacher-shared-key-binding-fix--SQUASHED' 2025-04-18 06:14:45 -04:00
Ryan Kurtz
3143f7ad99 Merge remote-tracking branch 'origin/GP-5110_dev747368_associate_with_archive_action_builtin_datatypes' 2025-04-18 06:13:05 -04:00
Ryan Kurtz
84ef8f685b Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-17-25' 2025-04-18 06:07:20 -04:00
dragonmacher
fa5938ab41 GP-5599 - Fix for shared key bindings to get correctly updated when options are restored at tool load time 2025-04-17 19:43:39 -04:00
dragonmacher
fb76362903 Test fixes 2025-04-17 19:16:58 -04:00
dev747368
c621406c5f GP-5110 don't enable "Associate With Archive" action if built-in dt 2025-04-17 20:36:15 +00:00
Ben Demick
45b91b1818
Fixes VxWorksSymTab_Finder.java edge case
Fixes MemoryAccessException that occurs if a candidate entry goes into invalid memory.
2025-04-17 16:35:37 -04:00
dev747368
07d1280515 GP-5570 copy symbols found in external debug files 2025-04-17 14:57:20 -04:00
Ryan Kurtz
0ea368f36d Merge remote-tracking branch 'origin/GP-5585_dev747368_fsb_nonblocking_project_index--SQUASHED' 2025-04-17 14:23:25 -04:00
Ryan Kurtz
b2829ad6ea Merge remote-tracking branch 'origin/GP-5523_Dan_hexDecToggle--SQUASHED' 2025-04-17 14:21:54 -04:00
Dan
004712026b GP-5523: Allow tool-wide configuration of radix for displaying trace times. 2025-04-17 18:18:53 +00:00
dev747368
a3a0870b66 GP-5585 non blocking project index for the FileSystemBrowser 2025-04-17 10:57:56 -04:00
Ryan Kurtz
92e2b6b5d4 Merge remote-tracking branch
'origin/GP-5494_Dan_fixTraceSlowness--SQUASHED' (Closes #4940)
2025-04-16 06:16:29 -04:00
Ryan Kurtz
8a2a91b562 Merge remote-tracking branch
'origin/GP-5597_ghidra_bad_name_in_search_window_title' (Closes #8015)
2025-04-16 06:12:56 -04:00
Ryan Kurtz
1db3ee3edd Merge remote-tracking branch 'origin/GP-1-dragonmacher-escape-key-updates--SQUASHED' 2025-04-16 06:11:35 -04:00
dragonmacher
d59d6e7d92 Update key processing to have the notion of both valid and enabled 2025-04-15 19:08:17 -04:00
ghidragon
203854966d GP-5597 fixed bug where memory search title with control chars breaks
saving tools.
2025-04-15 16:43:40 -04:00
Dan
2abfd4e309 Merge branch 'patch' 2025-04-15 19:28:11 +00:00
Dan
82e02ada8f GP-0: Increment version to 11.3.3 2025-04-15 19:24:02 +00:00
Dan
e4024bc8cf GP-5494: Fix byte cache and increase number of cached pages (memory viewer). 2025-04-15 18:22:42 +00:00
Dan
3a50304897 GP-0: Updated ChangeHistory for 11.3.2 2025-04-15 15:05:38 +00:00
Ryan Kurtz
a832bc689d Merge remote-tracking branch 'origin/GP-5548_Dan_dynStaticSync--SQUASHED' 2025-04-15 06:58:07 -04:00
ghidra1
749ff08737 Merge remote-tracking branch 'origin/patch' 2025-04-14 19:39:39 -04:00
ghidra1
3c57ea8d5c Merge remote-tracking branch 'origin/GP-5583_emteere_DefaultCaseFlowAndLabels' into patch 2025-04-14 19:35:42 -04:00
emteere
2d19520b4d GP-5583 Code review minor changes 2025-04-14 23:00:57 +00:00
Dan
31f447e8c7 GP-5548: Factor listing synchronization into plugin. 2025-04-14 19:59:26 +00:00
Ryan Kurtz
5fb58661b9 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-04-14-1' 2025-04-14 09:20:40 -04:00
Dan
7d5e8639d3 GP-0: Fix NPE in DependentServiceResolver 2025-04-14 13:16:46 +00:00
Ryan Kurtz
f00de10f31 Merge remote-tracking branch 'origin/GP-4123_ryanmkurtz_cppexporter'
(Closes #2635)
2025-04-14 08:11:43 -04:00
Ryan Kurtz
90c77317ec Merge remote-tracking branch 'origin/GP-5588_ghizard_PDB_fix_aligned_base_placement_and_create_another_vxtable_location_workaround' 2025-04-14 08:09:51 -04:00
Ryan Kurtz
7559acf524 GP-4123: CppExporter can now emit referenced globals 2025-04-13 08:55:41 -04:00
ghizard
63facf90f1 GP-5588 - PDB CPP - fix aligned base class calc; create another vxtable
locator temp work-around
2025-04-11 15:01:17 -04:00
Ryan Kurtz
13834fabaa Merge branch 'GP-5564_ryanmkurtz_ext' (Closes #5940) 2025-04-11 12:56:19 -04:00
Ryan Kurtz
0ef0447601 Merge remote-tracking branch 'origin/GP-3405_Dan_syncDynamicViews--SQUASHED' 2025-04-11 12:55:14 -04:00
Ryan Kurtz
3c17cc6441 GP-5564: Clicking on Symbol Table Imports with no external linkage no
longer reports an error when it is data
2025-04-11 12:49:11 -04:00
Dan
da89fe5fe9 GP-3405: Emit events and sync for dynamic loc/sel/hl. 2025-04-11 16:43:49 +00:00
Ryan Kurtz
d4049f1d99 Merge remote-tracking branch 'origin/GP-0_ghidragon_4_11_fixing_GTabPanelTest' 2025-04-11 11:14:03 -04:00
ghidragon
c19290bcd5 GP-0 fixing GTabPanelTest 2025-04-11 11:12:06 -04:00
ghidorahrex
a917cc0345 GP-5587: Corrected parsing of AARCH64 dsb instruction 2025-04-11 14:56:38 +00:00
ghidra1
56df61cb0b Merge remote-tracking branch 'origin/patch' 2025-04-11 10:24:24 -04:00
ghidra1
3725eb0b39 Merge branch 'GP-5557_ghidra1_CompositeEditorFixes' into patch 2025-04-11 10:01:09 -04:00
ghidra1
0ef28cb54b GP-5557 Composite editor transaction and update notification fixes 2025-04-11 09:58:01 -04:00
Ryan Kurtz
9778722a7e Merge remote-tracking branch 'origin/GP-4995_ghidorahrex_pcodetest_framework_update--SQUASHED' 2025-04-11 09:32:59 -04:00
Ryan Kurtz
071652e3b9 Merge remote-tracking branch 'origin/patch' 2025-04-11 09:27:40 -04:00
Ryan Kurtz
5746f9330b Merge remote-tracking branch
'origin/GP-5305_ghidorahrex_PR-6336_depili_bugfixes_6809_com_instruction'
into patch (Closes #6336, Closes #5767)
2025-04-11 09:24:11 -04:00
Ryan Kurtz
e57bf92a20 Merge remote-tracking branch
'origin/GP-5131_ghidorahrex_MIPS16e_jump_delayslot_fix' into patch
(Closes #862)
2025-04-11 09:22:01 -04:00
Ryan Kurtz
1b31994fd9 Merge remote-tracking branch 'origin/GP-5011_ghidorahrex_x86_stack_operation_size_fix--SQUASHED' into patch 2025-04-11 09:17:42 -04:00
ghidorahrex
41305fb45e GP-5011: Fixed x86 stack push/pop sizing issues 2025-04-10 14:46:25 -04:00
ghidorahrex
00687c8db8 GP-4995: Updated pcodetest framework to python3 and additional config 2025-04-10 14:44:56 -04:00
Ryan Kurtz
1ef5566219 Merge remote-tracking branch
'origin/GP-5562_James_bsim_h2_script_improvements' (Closes #7897)
2025-04-10 14:31:45 -04:00
Ryan Kurtz
859abab92e Merge remote-tracking branch
'origin/GP-5578_ghidragon_fixing_program_tab_issues--SQUASHED'
(Closes #7915)
2025-04-10 14:20:58 -04:00
Ryan Kurtz
6d0c89f9fd Merge remote-tracking branch
'origin/GP-5584_ghidragon_fixing_toolbar_icon_spacing_issue'
(Closes #7984)
2025-04-10 14:19:03 -04:00
ghidragon
2776560743 GP-5578 fixed sizing issues with with program tabs, including handling case when java scaling factor is not 1 2025-04-10 14:14:24 -04:00
Ryan Kurtz
8b9d65484b Revert "GP-5564: Clicking on Symbol Table Imports with no external linking now takes you to the appropriate external program instead of reporting an error message"
This reverts commit 7b0d88fd23.
2025-04-10 13:57:20 -04:00
ghidragon
5af205707b GP-5584 fixed issue with toolbar icons sometimes getting extra spacing. 2025-04-10 13:34:04 -04:00
emteere
65409daa6f GP-5583 fixed default switch case labels and removed default case
address from switching instruction
2025-04-10 17:29:18 +00:00
Ryan Kurtz
b5e404f499 Merge remote-tracking branch 'origin/patch' 2025-04-10 09:27:23 -04:00
Ryan Kurtz
9b5080adcf Merge remote-tracking branch 'origin/GP-5577_dev747368_fsb_projectindexing' into patch 2025-04-10 09:24:30 -04:00
ghidra1
1044bf5f7e Merge remote-tracking branch 'origin/patch' 2025-04-09 20:46:42 -04:00
ghidra1
7c67a103cd GP-5580 Corrected Union editor issue with shift up/down and create
array.  Removed obsolete method within editor model.
2025-04-09 19:14:13 -04:00
dev747368
96e0532f8d GP-5577 avoid indexing large projects 2025-04-09 18:04:30 +00:00
Ryan Kurtz
313f2d2847 Merge remote-tracking branch
'origin/GP-5540_Dan_guardAgainstNullTraceManager' (Closes #7956)
2025-04-09 13:38:41 -04:00
Ryan Kurtz
703c2b37bd Merge remote-tracking branch 'origin/GP-4080_Dan_cxBusyIndicator--SQUASHED' 2025-04-09 13:36:52 -04:00
Ryan Kurtz
50a0bcd050 GP-0: Removing shorthand -c and -d command line args from
pyghidra_launcher.py...they interfered with some AnalyzeHeadless args
2025-04-09 13:35:25 -04:00
Dan
5f1581b417 GP-4080: Display 'lock' overlay when cx/target has a transaction. 2025-04-09 17:33:16 +00:00
Ryan Kurtz
680134df84 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fix-4-9-25' 2025-04-09 13:30:21 -04:00
dragonmacher
b2372dab97 Test fixes 2025-04-09 13:28:27 -04:00
Ryan Kurtz
327940b252 Merge remote-tracking branch
'origin/GP-5030_James_x87_floating_point_display--SQUASHED'
(Closes #6786)
2025-04-09 11:02:46 -04:00
Ryan Kurtz
8ee341cd65 Merge remote-tracking branch 'origin/GP-5576_ghizard_set_vxtable_alignment_and_packing' 2025-04-09 11:01:30 -04:00
Ryan Kurtz
1c1684de37 Merge remote-tracking branch 'origin/GP-5575_ghizard_fix_zero_sized_base_class_regression' 2025-04-09 11:00:18 -04:00
James
7909f63fc5 GP-5562 added checks to AddProgramToH2BSimDatabaseScript 2025-04-09 14:39:00 +00:00
Dan
8d7d13fac3 GP-5540: Guard TraceTabPanel against null traceManager during disposal. 2025-04-09 14:27:27 +00:00
James
30008b6715 GP-5030 improved x87 operand display 2025-04-09 10:04:02 -04:00
Ryan Kurtz
a5bd358564 Merge remote-tracking branch
'origin/GP-616_Dan_expWithMultipleTypeManagers--SQUASHED' (Closes #4127)
2025-04-09 09:35:08 -04:00
Dan
ed48b0e452 GP-616: Fix 32-bit pointer placement in WoW64 targets. 2025-04-09 13:27:49 +00:00
Ryan Kurtz
b8996c89be Merge remote-tracking branch 'origin/patch' 2025-04-09 06:28:40 -04:00
Ryan Kurtz
baef3c9b6c Merge remote-tracking branch 'origin/GP-5564_ryanmkurtz_ext--SQUASHED'
(Closes #5940)
2025-04-09 06:10:14 -04:00
Ryan Kurtz
7b0d88fd23 GP-5564: Clicking on Symbol Table Imports with no external linking now takes you to the appropriate external program instead of reporting an error message 2025-04-09 06:06:11 -04:00
ghizard
3b37ca1422 GP-5576 - PDB set vxtable alignment and packing 2025-04-09 06:00:38 -04:00
ghizard
9b96306f80 GP-5575 - PDB fix regression in using zero-sised base with no vbtable 2025-04-09 05:54:32 -04:00
ghidra1
2c5669dbd0 GP-0 Minor cleanup 2025-04-08 15:15:53 -04:00
ghidra1
b5ccf1f063 GP-0 Expose StandAloneDataTypeManager from
DataTypeArchive.getDataTypeManager to allow architecture manipulation
2025-04-08 14:57:51 -04:00
Ryan Kurtz
27394cfb9c Merge remote-tracking branch
'origin/GP-5572-dragonmacher-decompiler-action-dialog--SQUASHED'
(Closes #7893)
2025-04-08 14:51:45 -04:00
dragonmacher
7bd553d55d GP-5572 - Decompiler - Updated actions to not show warning dialog if executed while the Decompiler is busy 2025-04-08 14:26:12 -04:00
Ryan Kurtz
55b2667996 Merge remote-tracking branch 'origin/patch' 2025-04-08 06:15:40 -04:00
Ryan Kurtz
694b3b46ce GP-0: Fixing typo in patch directory README 2025-04-08 06:08:12 -04:00
Ryan Kurtz
f1a135d8bb Merge remote-tracking branch
'origin/GP-5326_ghidragon_adding_address_and_data_options'
(Closes #7407)
2025-04-07 14:53:12 -04:00
Ryan Kurtz
499b9d7a8f Merge remote-tracking branch
'origin/GP-2307-dragonmacher-fcg-name-truncation-option' (Closes #1684)
2025-04-07 13:06:17 -04:00
dragonmacher
e9fb18faee GP-5326 - Decompiler - Added a quick field edit action to the Decompiler 2025-04-07 12:54:20 -04:00
Ryan Kurtz
e8f539f622 GP-0: Styling HTML headings in converted Markdown files 2025-04-07 12:22:47 -04:00
Ryan Kurtz
768788c078 Merge branch 'GP-0_ryanmkurtz_PR-7989_gemesa_debugger-step-inst' 2025-04-07 11:39:15 -04:00
Ryan Kurtz
fc3a242a5d GP-0: Styling HTML code blocks in converted Markdown files 2025-04-07 11:26:44 -04:00
Ryan Kurtz
c91b82f9f0 Merge remote-tracking branch 'origin/GP-5535_ryanmkurtz-svrREADME' 2025-04-07 10:57:35 -04:00
Ryan Kurtz
5f9674ccee GP-5535: Converting svrREADME.html to Markdown 2025-04-07 10:39:46 -04:00
Andras Gemes
6d5a061290
Debugger: fix description of step_into 2025-04-07 13:55:11 +02:00
Ryan Kurtz
c75c852001 Merge remote-tracking branch
'origin/GP-5565-dragonmacher-decompiler-rename-label-action'
(Closes #7507)
2025-04-07 06:12:08 -04:00
dragonmacher
8785636939 GP-2308 - Function Call Graph - Added an option to disable name
truncation.
2025-04-05 12:37:45 -04:00
dragonmacher
812b02652d GP-5565 - Decompiler - Updated the edit label dialog to pick the correct
namespace for an existing symbol
2025-04-04 19:25:22 -04:00
Ryan Kurtz
8441563165 Merge remote-tracking branch
'origin/GP-5538_Dan_addImageFieldToRemotes--SQUASHED' (Closes #7955)
2025-04-04 13:22:06 -04:00
Ryan Kurtz
ba0fb6a07c Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-04-04-1' 2025-04-04 13:18:54 -04:00
Dan
b7570e1f52 GP-5538: Add 'Image' to remote-[gdb,lldb].*. Convert to powershell. 2025-04-04 17:15:41 +00:00
Dan
bcc932d7a8 GP-0: Fix tests. 2025-04-04 17:09:35 +00:00
Ryan Kurtz
0878da155c Merge remote-tracking branch 'origin/GP-5301_Dan_testEmuThumbPlt' 2025-04-04 12:51:15 -04:00
Dan
b702aa0a6f GP-5301: Fix ARM/THUMB ISA mode switching for indirect branches in JIT. 2025-04-04 16:18:36 +00:00
Ryan Kurtz
a0205ff960 Merge remote-tracking branch 'origin/patch' 2025-04-04 12:13:50 -04:00
Ryan Kurtz
a9f26d8f84 Merge remote-tracking branch
'origin/GP-5569_ryanmkurtz_extension-classpath' into patch (Also
closes #7977)
2025-04-04 12:09:48 -04:00
Ryan Kurtz
cee2cb3b44 GP-5569: Fixing an issue with external extension classpath order 2025-04-04 12:02:39 -04:00
Ryan Kurtz
82c344acde Merge remote-tracking branch 'origin/patch' 2025-04-04 10:05:31 -04:00
d-millar
482b4775b9 GP-5534: Backporting protobuf version change (3.17->3.21) 2025-04-04 10:03:30 -04:00
Ryan Kurtz
7c71be972a Merge remote-tracking branch 'origin/patch' 2025-04-03 14:13:39 -04:00
Ryan Kurtz
77edcc0985 GP-5567: Updating svrREADME.html's section on macOS Full Disk Access
(Closes #7934)
2025-04-03 14:08:01 -04:00
Ryan Kurtz
1fb758e5ae Merge remote-tracking branch 'origin/patch' 2025-04-03 13:18:59 -04:00
Ryan Kurtz
db2dee2a12 Merge remote-tracking branch
'origin/GP-5561_James_source_file_path_parse_error_fix' into patch
(Closes #7963)
2025-04-03 13:16:50 -04:00
James
861c0c93d4 GP-5561 correct dwarf source file path parsing error 2025-04-03 14:12:45 +00:00
Ryan Kurtz
c4314cebc1 Merge remote-tracking branch 'origin/patch' 2025-04-03 09:35:54 -04:00
Ryan Kurtz
f3cd8f54b8 Merge remote-tracking branch 'origin/GP-0-dragonmacher-patch-test-fixes-4-2-25' into patch 2025-04-03 09:33:46 -04:00
Ryan Kurtz
26fe882311 GP-0: Fixing javadoc error 2025-04-03 06:35:43 -04:00
dragonmacher
c22d88cf7c test fixes; put some replacments back 2025-04-02 13:53:53 -04:00
Ryan Kurtz
4192e94151 Merge remote-tracking branch 'origin/GP-5559_ghizard_PDB_Work_around_locating_primary_vxt_by_symbol--SQUASHED' 2025-04-02 13:35:31 -04:00
Ryan Kurtz
fa87e70af4 Merge remote-tracking branch
'origin/GP-0_ryanmkurtz_PR-7957_peterbelm_omf51-libfs' (Closes #7957)
2025-04-02 13:34:14 -04:00
Ryan Kurtz
8701d22356 GP-0: Certify and cleanup 2025-04-02 13:26:21 -04:00
Ryan Kurtz
7c1285d48d GP-0: A few buildExtenion.gradle tweaks
* Excluding .vscode/ from the distro
* Only including src/main/java in lib/*-src.zip
2025-04-02 11:39:13 -04:00
ghizard
c32bc2a129 GP-5559 - PDB - Work around issue with finding primary vxt by symbol 2025-04-02 11:24:33 -04:00
Ryan Kurtz
7f889d7812 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-4-2-25' 2025-04-02 10:00:36 -04:00
dragonmacher
413cd88a87 test fixes 2025-04-02 09:56:49 -04:00
Ryan Kurtz
90a16f9963 GP-0: Certify 2025-04-02 09:21:37 -04:00
Ryan Kurtz
7c1f73d6e2 GP-0: Tidying up Mach-O things 2025-04-02 07:22:00 -04:00
Ryan Kurtz
e4036f04b9 Merge remote-tracking branch 'origin/patch' 2025-04-02 06:21:53 -04:00
Sullivan DeVries
f29fb24ee8 GP-5558: fixed ndata post-increment instead of pre-increment causing
return case to be missed (Closes #7973, Closes #7974)
2025-04-02 06:18:26 -04:00
Ryan Kurtz
06e4d8783f Merge remote-tracking branch 'origin/patch' 2025-04-02 06:02:08 -04:00
ghidra1
59c55fdb6b GP-5556 Corrected structure editor transaction error on launch 2025-04-01 17:08:50 -04:00
Ryan Kurtz
97134cd8fa Merge remote-tracking branch 'origin/GP-5550_ghidra1_GTreeStartEditingTaskSelection--SQUASHED' 2025-04-01 14:50:17 -04:00
Ryan Kurtz
cd3ba7fb07 GP-5554: Fixed a bug that resulted in incorrect external addresses of
Mach-O undefined symbols (Closes #5941)
2025-04-01 13:12:18 -04:00
ghidra1
168fce3eda GP-5550 Revised GTreeStartEditingTask node re-selection 2025-04-01 12:34:09 -04:00
Ryan Kurtz
58979e0bfb Merge remote-tracking branch 'origin/GP-5552_ryanmkurtz_ub' 2025-04-01 11:54:21 -04:00
Ryan Kurtz
c611f6e5d2 Merge remote-tracking branch 'origin/patch' 2025-04-01 11:54:04 -04:00
Ryan Kurtz
88b9fd3481 Merge remote-tracking branch
'origin/GP-5549_NullCheck_VTMatchWithAddressNotInMemory' into patch
(Closes #7964)
2025-04-01 11:50:36 -04:00
Ryan Kurtz
87fdda4981 GP-5552: Universal Binary Mach-O Loader 2025-04-01 11:22:26 -04:00
Ryan Kurtz
30f30149f3 Merge remote-tracking branch 'origin/patch' 2025-04-01 09:21:24 -04:00
Ryan Kurtz
ecb4d0d92d Merge remote-tracking branch 'origin/GP-5503-dragonmacher-gnu-demangler-simplify-update' into patch 2025-04-01 09:10:26 -04:00
Ryan Kurtz
d4b7f3504f Merge remote-tracking branch 'origin/GP-5466_d-millar_gdb_evt_exc_RB250331--SQUASHED' 2025-04-01 09:01:56 -04:00
Ryan Kurtz
f0f0f8a86b Merge remote-tracking branch 'origin/GP-5546_d-millar_standalone_listener' 2025-04-01 09:00:23 -04:00
Ryan Kurtz
a9122c1a59 Merge remote-tracking branch 'origin/GP-4786_d-millar_dbgeng_events_RB250331--SQUASHED' 2025-04-01 08:57:59 -04:00
Ryan Kurtz
96786024b1 Merge remote-tracking branch 'origin/GP-5438_Dan_fixSelectAllDynamic--SQUASHED' 2025-04-01 08:56:01 -04:00
Ryan Kurtz
5297954c6c Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-20250331-1' 2025-04-01 08:54:03 -04:00
Dan
d7f63a9075 GP-5438: Fix 'Select All' and others in Dynamic Listing. (syncing needs follow-up work.) 2025-04-01 12:48:30 +00:00
d-millar
7447fc621b GP-4786: format
GP-4786: running
GP-4786: more from review
GP-4786: post-review
GP-4786: types
GP-4786: events listing
GP-4786: savingGP-4786: how to pass an arrayGP-4786: exceptionsGP-4786: refresh methodsGP-4786: first half toggleGP-4786: toggle workingGP-4786: combining arb/spc
2025-03-31 18:20:10 -04:00
ghidra007
f37eac9a82 GP-5549 added cu null check for case where address is not in memory. 2025-03-31 19:51:59 +00:00
Dan
e746694706 GP-0: Fix panel default to provider default. Fix tests. 2025-03-31 18:56:26 +00:00
d-millar
ccc2a1ddaf GP-5466: post-review
GP-5466: types
GP-5466: additional methods
2025-03-31 13:52:05 -04:00
Ryan Kurtz
7ab4989d4b Merge branch 'GP-5547_ryanmkurtz_gradle-clang' (Closes #7958) 2025-03-31 13:48:20 -04:00
Ryan Kurtz
d6cfb2e0b9 GP-5547: Improved Gradle support for building natives on AARCH64 2025-03-31 13:04:36 -04:00
Ryan Kurtz
f2890f02dd GP-0: Fixing Gradle warning 2025-03-31 07:57:50 -04:00
Ryan Kurtz
8527ce64b6 Merge remote-tracking branch 'origin/GP-0_ghidraffe_GhidraGoTestFix' 2025-03-31 07:35:03 -04:00
ghidraffe
3f61c478b3 GP-0 fix test issue for GhidraGo 2025-03-31 11:34:05 +00:00
Ryan Kurtz
c4fefb5924 Merge remote-tracking branch 'origin/GP-5536-dragonmacher-vt-tool-issue--SQUASHED' 2025-03-31 06:07:36 -04:00
Ryan Kurtz
e3958c3904 Merge remote-tracking branch 'origin/GP-5528_dev747368_fix_toggleopenclosed_data_task_progress' 2025-03-31 06:06:12 -04:00
Ryan Kurtz
e903eed362 Merge remote-tracking branch 'origin/GP-0_d-millar_fix_for_tests' 2025-03-31 06:05:10 -04:00
Peter Belm
64b6a358a0 FEAT: OMF-51 Library filesystem 2025-03-29 22:59:14 +00:00
dragonmacher
1f0fae0ffc GP-5503 - Demangler - Removed some namespace simplifications to prevent
class conflicts
2025-03-29 12:25:05 -04:00
ghidra1
22460b41d6 GP-0 Improved some unsupported content error handling. 2025-03-28 18:06:04 -04:00
dragonmacher
f7dc225c38 GP-5536 - Version Tracking - Fixed issue with incorrect plugins being loaded from saved tool 2025-03-28 17:35:33 -04:00
d-millar
be98f20ed0 GP-5546: standalone listener 2025-03-28 17:30:04 -04:00
d-millar
d5f29b47d6 GP-0: more from unit tests 2025-03-28 20:33:46 +00:00
d-millar
e19ff2a739 GP-0: test errors 2025-03-28 20:08:45 +00:00
Ryan Kurtz
8ca0372831 Merge remote-tracking branch 'origin/GP-0_ghidragon_fixing_a_few_lines_of_outdated_help' 2025-03-28 15:58:18 -04:00
ghidragon
3451b18061 GP-0 fixing a few lines of outdated help info. 2025-03-28 15:56:23 -04:00
Ryan Kurtz
b319b3df7f Merge remote-tracking branch 'origin/GP-5534_BSim_protobuf_upgrade' 2025-03-28 14:34:39 -04:00
Ryan Kurtz
9d379a3717 Merge remote-tracking branch 'origin/GP-5542_d-millar_bad_annot' 2025-03-28 14:33:22 -04:00
Ryan Kurtz
eb9db12ae0 Merge remote-tracking branch 'origin/GP-5539_d-millar_fullmem_lldb'
(Closes #7955)
2025-03-28 14:31:28 -04:00
Ryan Kurtz
c98abe17b4 Merge remote-tracking branch 'origin/GP-5504_ghidraffe_GhidraGoCliImprovements--SQUASHED' 2025-03-28 14:29:54 -04:00
ghidraffe
cdf4a51725 GP-5504 improved GhidraGo CLI with usage message and GhidraURL validation. 2025-03-28 18:27:50 +00:00
Ryan Kurtz
779f90860b GP-0: Making headless run configuration run in java headless mode 2025-03-28 07:29:17 -04:00
d-millar
7c7d203342 GP-5542: bad annotation 2025-03-27 19:10:25 +00:00
d-millar
f5df0a5de4 GP-5539: default to fullmem 2025-03-27 17:17:59 +00:00
Ryan Kurtz
24f46bb22c GP-5515: Follow-on commit to address bug (all PE's being id's as Rust) 2025-03-27 12:17:40 -04:00
Ryan Kurtz
074417eab8 Merge branch 'GP-0_ryanmkurtz_PR-7914_peterbelm_omf51' 2025-03-27 11:28:38 -04:00
Ryan Kurtz
0105f68329 GP-0: OMF-51 PR tweaks 2025-03-27 11:25:04 -04:00
Ryan Kurtz
2b99f5d15e Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-3-27-25' 2025-03-27 11:03:05 -04:00
dragonmacher
86f2874e3b Test fixes 2025-03-27 10:21:11 -04:00
Ryan Kurtz
b734df8129 Merge remote-tracking branch 'origin/GP-5499_Dan_timeTimeColumn--SQUASHED' 2025-03-27 09:37:52 -04:00
Ryan Kurtz
da477560a1 Merge remote-tracking branch 'origin/GP-5511_d-millar_drgn_types--SQUASHED' 2025-03-27 09:36:22 -04:00
Ryan Kurtz
eb45b79fd0 Merge remote-tracking branch 'origin/patch' 2025-03-27 09:35:27 -04:00
Ryan Kurtz
fe9acef391 Merge remote-tracking branch 'origin/GP-5522_Dan_orderLifeSetSpans' into patch 2025-03-27 09:31:43 -04:00
Ryan Kurtz
7e3395dc62 Merge remote-tracking branch 'origin/GP-5530_ryanmkurtz_maploader'
(Closes #7945)
2025-03-27 06:15:43 -04:00
Ryan Kurtz
2b34e8c9f7 Merge remote-tracking branch 'origin/patch' 2025-03-27 06:14:39 -04:00
Ryan Kurtz
a5caa4886d Merge remote-tracking branch
'origin/GP-0_d-millar_fix_for_spaces_in_paths' into patch (Closes #7943)
2025-03-27 06:12:42 -04:00
Dan
97e6205802 GP-5522: Order LifeSet.spans() 2025-03-26 19:57:34 +00:00
d-millar
5d4b56b7e4 GP-5511: final review set
GP-5511: post-re-review
GP-5511: fix for require_tx bug
GP-5511: minor fixes
GP-5511: fixups using vscode - something broken
GP-5511: finsihing up
GP-5511: most things covered
GP-5511: commands (first pass)
GP-5511: arch
2025-03-26 15:32:11 -04:00
d-millar
0b5a833339 GP-0: fix for spaces in paths 2025-03-26 15:19:00 -04:00
Dan
9016ed28f1 GP-5499: Add 'Time' column to Time table. 2025-03-26 19:03:51 +00:00
d-millar
11fe2a4ab7 GP-5534: 3.17->3.21 2025-03-26 18:26:10 +00:00
Ryan Kurtz
d11682d405 Merge remote-tracking branch 'origin/GP-5496_ryanmkurtz_headless-markdown' 2025-03-26 14:22:25 -04:00
Ryan Kurtz
b1f6fce9c5 Merge remote-tracking branch 'origin/GP-5421_ghidra1_ZeroLengthComponentMerge' 2025-03-26 14:05:53 -04:00
Ryan Kurtz
9f12dbebf1 GP-5532: Fixed an issue in the Mach-O loader that prevented
uninitialized segments from being mapped into memory (Closes #7949)
2025-03-26 13:06:16 -04:00
Ryan Kurtz
9a739ad311 GP-5530: The MapLoader now parses and applies the symbols found in the
"Static symbols" section of a MAP file
2025-03-26 11:06:32 -04:00
ghidra1
1a80aff30a GP-0 Corrected test issues 2025-03-26 10:36:32 -04:00
Ryan Kurtz
f2e8afff9c Merge remote-tracking branch
'origin/GP-5474-dragonmacher-symbol-tree-events--SQUASHED'
(Closes #7889, Closes #7891)
2025-03-26 09:09:07 -04:00
ghidra1
5cd0862969 GP-5527 Added structure unpack support for zero-length component edge
case
2025-03-26 07:30:23 -04:00
Ryan Kurtz
e594438eda Merge remote-tracking branch 'origin/patch' 2025-03-26 06:18:02 -04:00
Ryan Kurtz
83098ce2b5 Merge remote-tracking branch 'origin/GP-0_ghizard_RN_fixes' into patch 2025-03-26 06:15:10 -04:00
ghizard
163d96af2d GP-0 RN doc fixes 2025-03-26 06:11:15 -04:00
ghidra1
fe944640b9 GP-5421 Ensure merge inserts structure components in the correct
sequence to account for zero-length overlapping components. Refactor how
dataTypeDeleted and dataTypeReplaced are handled.  Use blocking error
message popup during most Merge operations.
2025-03-26 06:11:03 -04:00
ghidra1
dcc87e7fb7 GP-5527 Sturcture component unpack bug 2025-03-25 22:37:26 -04:00
ghidra1
877ff2e8ad Merge remote-tracking branch 'origin/GP-5527_ghidra1_StructureEdtorUnpackAction' 2025-03-25 18:52:43 -04:00
ghidra1
b2d85bd1c6 Merge remote-tracking branch 'origin/GP-4951_ghidra1_ZeroLengthComponentActions' 2025-03-25 18:52:17 -04:00
ghidra1
cac6b83929 Merge remote-tracking branch 'origin/patch' 2025-03-25 18:51:29 -04:00
ghidra1
52e02bf012 GP-5527 Structure editor unpack action improvement and zero-length
component fix
2025-03-25 18:44:32 -04:00
ghidra1
584026d817 GP-4951 Corrected structure editor component actions related to 0-length
components and arrays.
2025-03-25 17:24:48 -04:00
ghidra1
23b60335ca GP-0 Corrected DbViewerPlugin_Refresh help warning 2025-03-25 16:45:28 -04:00
dev747368
21aadafacf GP-5528 fix toggle data open/closed to not use task thread
Causes unnecessary progress dialog.  Also improve where the cursor is
left when collapsing something when the cursor is on a child field.
2025-03-25 20:07:38 +00:00
ghidragon
b7a23cacd4 GP-5326 adding "Add Date" and "Add Address" to edit data field dialog 2025-03-25 14:20:30 -04:00
Ryan Kurtz
1bed582491 Merge remote-tracking branch 'origin/patch' 2025-03-25 14:17:57 -04:00
Ryan Kurtz
1865142776 Merge remote-tracking branch 'origin/GP-5517_Dan_addStackToEmuSchema' into patch 2025-03-25 14:15:07 -04:00
dragonmacher
5f17963eba GP-5474 - Symbol Tree - Event handling improvements to maintain user view position; added an option for org node group threshold; Fixed missing nodes under classes 2025-03-25 14:14:03 -04:00
Dan
2261fde014 GP-5517: Add Stack/Frames to "pure emulation" schema. 2025-03-25 18:03:30 +00:00
Ryan Kurtz
907e5c563f GP-5521: pyghidra.open_program() now accepts a program_name parameter,
which can be used to override the program name derived from the
binary_path parameter
2025-03-25 13:44:04 -04:00
ghidra1
3acd4aede7 GP-0 Corrected spelling error 2025-03-25 13:11:06 -04:00
Ryan Kurtz
7ca36e01d9 Merge remote-tracking branch 'origin/GP-5436_Dan_torchAsyncComm--SQUASHED' 2025-03-25 12:46:21 -04:00
Dan
14d0432554 GP-5436: Move AsyncComm remains into Generic 2025-03-25 16:44:37 +00:00
Ryan Kurtz
587571ea4f Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-03-25-2' 2025-03-25 12:13:29 -04:00
Ryan Kurtz
39aa8542cd GP-0: Fixing javadoc 2025-03-25 12:08:02 -04:00
ghidra1
67c11735e6 GP-0 Corrected documention error 2025-03-25 12:06:51 -04:00
Dan
d95b8a20b2 GP-0: Correct viewport tests now with implied snap-0 post GP-4209 2025-03-25 13:28:55 +00:00
Dan
ee0a031261 GP-0: Correct assertions for new packet format post GP-4209 2025-03-25 13:22:05 +00:00
Ryan Kurtz
397a814f5f Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-03-25-1' 2025-03-25 09:15:47 -04:00
Dan
422372a69e GP-0: Try python3 first. 2025-03-25 13:12:12 +00:00
Dan
d35e321e9c GP-0: Ensure OS check happens first. 2025-03-25 13:04:33 +00:00
Ryan Kurtz
5d50b6236a Merge remote-tracking branch 'origin/GP-0_Dan_buildFixes-2025-03-25-1' 2025-03-25 08:57:19 -04:00
Dan
df74c44dd6 GP-0: Fix help sort-groups post 0a30e924 and GP-870 2025-03-25 12:48:30 +00:00
Ryan Kurtz
8f30c4da14 Merge remote-tracking branch 'origin/GP-870_d-millar_TimeOverview_RB250303--SQUASHED' 2025-03-25 06:39:36 -04:00
Ryan Kurtz
01652d9ba1 Merge remote-trackng branch 'origin/patch' 2025-03-25 06:37:02 -04:00
Ryan Kurtz
39cf3a794a Merge remote-tracking branch 'origin/GP-5460_Dan_fixIndirectsInInjects' into patch 2025-03-25 06:18:26 -04:00
Ryan Kurtz
e2103ebda4 Merge remote-tracking branch 'origin/GP-5459_Dan_fixEmptyStructuredOps' into patch 2025-03-25 06:16:45 -04:00
Dan
f0a9e138e2 GP-5460: Fix branching from injected p-code in emulation. 2025-03-24 20:04:23 +00:00
d-millar
c9ba81bd3d GP-870: oops
GP-870: help
GP-870: object restore
GP-870: slight refactoring
GP-870: first pass
GP-870: preliminary codeGP-870: partially functionalGP-870: simplificationsGP-870: added selectionGP-870: refactored somewhatGP-870: minor additionsGP-870: fix for post-rebase errorGP-870: rebaseGP-870: mods to match memviewGP-870: address -> snapGP-870: less brokenGP-870: better colors, shift dragGP-870: general post-review clean-upGP-870: changes lost, maybe restoredGP-870: minor improvementsGP-870: better selection logic
2025-03-24 15:47:10 -04:00
Ryan Kurtz
8fcda62c5b Merge remote-tracking branch 'origin/GP-0_d-millar_memview_mods' 2025-03-24 15:20:08 -04:00
Dan
852db3a80a GP-5459: For userop libraries, treat empty as empty, not unimpl 2025-03-24 19:19:06 +00:00
Ryan Kurtz
8d18be9e39 Merge remote-tracking branch 'origin/GP-4611_d-millar_better_launch_defaults' 2025-03-24 15:18:47 -04:00
Ryan Kurtz
a416ca7bad Merge remote-tracking branch 'origin/GP-4209_Dan_ttdIntegration--SQUASHED' 2025-03-24 15:14:13 -04:00
Dan
21a1602579 GP-4209: GhidraTime-MSTTD integration. Type hints for (most) Python agents. 2025-03-24 18:28:07 +00:00
Ryan Kurtz
bd60eda15e Merge remote-tracking branch 'origin/GP-5458_ryanmkurtz_project-lock--SQUASHED' 2025-03-24 14:06:03 -04:00
Ryan Kurtz
87c4b19b84 GP-5458: Fixing repetitive project lock dialogs 2025-03-24 14:05:20 -04:00
Ryan Kurtz
b06e992e91 Merge remote-tracking branch 'origin/GP-5074_ghizard_CPP_PDB_vxtable_composition_squashrebase20250318--SQUASHED' 2025-03-24 10:58:42 -04:00
Ryan Kurtz
4519440f53 GP-0: Removing 'numSections' parameter from SegmentCommand.create(),
since creating sections is not supported (Closes #7428)
2025-03-24 10:56:24 -04:00
ghidra1
deb49d5322 Merge remote-tracking branch 'origin/patch' 2025-03-24 09:57:16 -04:00
ghidra1
6b24b84bd8 Merge remote-tracking branch 'origin/GP-5519_ghidra1_FileSystemErrorHandling' into patch 2025-03-24 09:49:49 -04:00
ghidra1
b1c6beb494 GP-5519 Improved handling of unsupported project files and smooth over
project content incompatibilities that may arise
2025-03-24 09:39:55 -04:00
ghizard
edb277177d GP-5074 - CPP PDB vxtable datatype composition 2025-03-24 06:51:40 -04:00
Ryan Kurtz
e2132136c7 Merge remote-tracking branch 'origin/GP-5515_ryanmkurtz_rust-search'
(#7885)
2025-03-21 18:24:29 -04:00
Ryan Kurtz
7cb5e844b3 Merge remote-tracking branch 'origin/GP-5514_dev747368_fix_golang_itab_fun_field_lookup' 2025-03-21 16:14:53 -04:00
Ryan Kurtz
3f337a76ba Merge remote-tracking branch 'origin/patch' 2025-03-21 16:14:23 -04:00
Ryan Kurtz
ed8898cbbb Merge remote-tracking branch 'origin/GP-5505_ghidra007_RTTIscript_improveLowBitCodeModeUsage--SQUASHED' into patch 2025-03-21 15:12:46 -04:00
Ryan Kurtz
cb949f275a GP-5515: Faster Rust signature search 2025-03-21 14:44:25 -04:00
ghidra007
2f83e26c0e GP-5505 Improved RecoverClassesFromRTTIScript abilty to use the LowCodeModeBit to find code references. 2025-03-21 18:40:16 +00:00
Ryan Kurtz
cdd68cc791 Merge branch 'GP-5429_ryanmkurtz_reexport-obj-fix' 2025-03-21 13:18:27 -04:00
Ryan Kurtz
e514c63b7f Merge remote-tracking branch
'origin/GP-5373_dev747368_golang_gcwritebarrier_flag' (Closes #7484)
2025-03-21 13:16:46 -04:00
Ryan Kurtz
1345dbb192 GP-5429: Reexport fix for Mach-O object files where header is not at
imagebase
2025-03-21 12:50:49 -04:00
dev747368
937b1035c9 GP-5514 fix hard coded struct field ordinal for golang 1.23+ 2025-03-21 16:42:30 +00:00
Ryan Kurtz
69a66e0eec Merge remote-tracking branch 'origin/patch' 2025-03-21 06:12:55 -04:00
dev747368
aea65727fe GP-5373 markup golang's runtime.writeBarrier flag 2025-03-20 22:59:42 +00:00
ghidra1
5eb247f5cd GP-0 Corrected test screenshot failure 2025-03-20 14:51:29 -04:00
Ryan Kurtz
23d45e44e9 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-3-20-25' 2025-03-20 14:26:45 -04:00
dragonmacher
c02a321aef Test fixes 2025-03-20 14:25:03 -04:00
Ryan Kurtz
9fb80d2c0a Merge remote-tracking branch 'origin/patch' 2025-03-20 13:55:18 -04:00
Ryan Kurtz
122bd22317 Merge remote-tracking branch 'origin/GP-5502_ghidra007_rtti_gcc_verify_typeinfonames_are_strings--SQUASHED' into patch 2025-03-20 13:39:10 -04:00
Ryan Kurtz
85b24c686d Merge branch 'GP-0_ryanmkurtz_PR-7885_cyberkaida_stripped-rust-detect' 2025-03-20 13:28:59 -04:00
Ryan Kurtz
fa41bb3556 GP-0: Certify 2025-03-20 13:27:23 -04:00
ghidra007
24556abe4b GP-5502 added extra typeinfo validation by checking that typeinfoname is a string 2025-03-20 16:29:28 +00:00
ghidra1
22f36c2769 Merge branch 'GP-5480_ghidra1_ExternalLocationMerge_Fixes' 2025-03-20 09:38:15 -04:00
ghidra1
5aec479fb2 GP-5480 Additinal improvement/fixes for ExternalLocation merge support
to address test failures.
2025-03-20 09:37:05 -04:00
Ryan Kurtz
6cc201b572 Merge remote-tracking branch
'origin/GP-3182_ryanmkurtz_PR-5004_colinbourassa_unix-aout-loader'
(Closes #4943, Closes #5004)
2025-03-19 16:17:56 -04:00
Ryan Kurtz
6beee36e57 GP-3182: Certify and cleanup 2025-03-19 14:27:46 -04:00
Ryan Kurtz
b3ed5feaea Merge remote-tracking branch 'origin/patch' 2025-03-19 13:16:18 -04:00
Ryan Kurtz
fa554361d5 Merge remote-tracking branch 'origin/GP-5485-dragonmacher-union-editor-ordinal-col' into patch 2025-03-19 13:10:06 -04:00
Ryan Kurtz
595e66d698 Merge remote-tracking branch 'origin/GP-5501_ghidra007_gcc_rtti_improve_typeinfoStruct_validation' into patch 2025-03-19 13:08:49 -04:00
Ryan Kurtz
8d010a877c Merge remote-tracking branch
'origin/GP-5500_ghidra007_addValidBlockCheckForVftableAddresses' into
patch (Closes #7927)
2025-03-19 13:07:35 -04:00
Colin Bourassa
c9ab679e53 Feature: UNIX A.out Loader
With fixes/improvements from Jean-Baptiste Boric:
* fix package declarations
* don't special-case defined symbols with zero value
a.out object files can define symbols at the very start of a section.
* mark undefined symbols with non-zero value as bss candidates
* use FSRL to get filename

This is required when invoking loaders on subsets of files, such as
bulk-importing object files from static archives.

* don't use filename in memory block names
* reformat Unix Aout loader
* rename UnixAoutRelocation class
* rename UnixAoutSymbol class
* rework Unix Aout loader
2025-03-19 07:29:49 -04:00
ghidra1
ce6bef1e12 Merge branch 'GP-5369_FunctionStorageEditor_RegChooser' 2025-03-18 16:03:42 -04:00
dragonmacher
e7b6bb1fcb GP-5369 Use DropDownTextFieldDataModel for function
editor register storage cell editor
2025-03-18 15:22:28 -04:00
ghidra007
e9e127da89 GP-5501 improved rtti script gcc typeinfo creation 2025-03-18 19:03:54 +00:00
ghidra007
d43a827c7c GP-5500 add check that potential vftable address is in valid memory
block
2025-03-18 18:11:33 +00:00
ghidra1
65c496d833 Merge remote-tracking branch 'origin/GP-5326_ghidragon_update_to_datatype_component_field_name_changes' 2025-03-18 13:21:37 -04:00
ghidragon
9429fa0a8e GP-5326 fixed junit tests and removed check for default field names 2025-03-18 12:30:03 -04:00
Ryan Kurtz
2f581d0ead Merge remote-tracking branch 'origin/patch' 2025-03-18 12:17:44 -04:00
Ryan Kurtz
227497e0fa Merge remote-tracking branch
'origin/GP-5299_ghidorahrex_x86_pop_macro_fix' into patch (Closes #7326)
2025-03-18 12:14:01 -04:00
ghidra007
39a6a73c6d GP-5487 improved RecoverClassesFromRTTI gcc rtti detection
(Closes #7904)
2025-03-18 12:11:34 -04:00
Ryan Kurtz
a48b7cf495 Merge remote-tracking branch 'origin/GP-0_dev747368_fix_NPE_in_decompiler_text_finder' 2025-03-18 11:05:26 -04:00
Ryan Kurtz
6ecbf69e57 Merge remote-tracking branch
'origin/GP-5455_dev747368_golang_interface_method_calling'
(Closes #7529)
2025-03-18 11:03:54 -04:00
Ryan Kurtz
16780fc443 GP-5478: Fixing issue from cleanup effort 2025-03-18 11:02:52 -04:00
Ryan Kurtz
c187f26cfc Merge remote-tracking branch 'origin/GP-5492_ghizard_PdbReader_modify_and_bring_method_records_into_alignment' 2025-03-18 10:59:07 -04:00
dragonmacher
80bc6de413 GP-5485 - Added an optional 'ordinal' column to the union editor 2025-03-18 10:50:03 -04:00
Ryan Kurtz
95060a2dd8 GP-5496: Converting headless readme to markdown 2025-03-18 08:58:07 -04:00
ghidra1
6ab0beeeb7 GP-5480 Additional corrections and test fixes to handling of external
locations during merge
2025-03-17 18:56:13 -04:00
dev747368
5ca24f0001 GP-0 fix NPE in decompiler text finder when decompiler errors 2025-03-17 20:18:58 +00:00
dev747368
2d3922d41f GP-5455 golang interface method calling and decl
Improve how golang interface methods are handled.

Model the 'vtable' (runtime.itab) for a golang interface so each method
declared by the interface gets a funcdef that specifies the method's
params.
2025-03-17 20:07:45 +00:00
ghizard
766c4c7c04 GP-5492 - PdbReader - bring method records into alignment with each
other; expose thisAdjuster; change output format and tests
2025-03-17 15:58:56 -04:00
Ryan Kurtz
6d44b9bad7 Merge remote-tracking branch 'origin/GP-5435_ghidra2_MakeBSimInstalledByDefault' 2025-03-17 14:24:04 -04:00
Peter Belm
0f5e9c9ad4 BUG: OMFs with no exports caused an exception 2025-03-17 15:46:00 +00:00
ghidra1
ecfd6d39d8 Merge remote-tracking branch 'origin/patch' 2025-03-17 10:24:32 -04:00
Ryan Kurtz
a4ebfc5b33 Merge remote-tracking branch 'origin/GP-5475_ghidragon_disallow_spaces_in_fieldNames--SQUASHED' 2025-03-17 06:26:10 -04:00
Peter Belm
951fd9ec6b OMF-51 Loader Fixups & Public/External Refs implementation 2025-03-15 20:30:06 +00:00
ghidragon
0ea4e754b9 GP-5475 changed composite field names so that any whitespace is converted to underscores 2025-03-14 14:36:39 -04:00
Ryan Kurtz
6337086703 Merge remote-tracking branch
'origin/GP-5477-dragonmacher-decomp-hl-slowness' (Closes #7520)
2025-03-14 13:44:46 -04:00
ghidra1
6c00c68e2b GP-0 test fix 2025-03-14 10:51:02 -04:00
ghidra1
9fbcf838ca GP-0 Corrected StorageEditorModel related test failure 2025-03-14 09:33:32 -04:00
Ryan Kurtz
0a7db0d624 Merge remote-tracking branch 'origin/GP-5480_ghidra1_MergeExternalLocations' 2025-03-14 08:44:38 -04:00
Ryan Kurtz
88a35769a2 GP-0: Fixing some more javadoc 2025-03-14 08:34:43 -04:00
Ryan Kurtz
c964163c80 GP-0: Fixing some javadoc 2025-03-14 07:06:01 -04:00
ghidra1
905b4d78bd GP-5480 Corrected Merge tool rendering of external locations within
multi-listing.
2025-03-13 19:55:17 -04:00
dragonmacher
6fa543c2e2 GP-5477 - Decompiler - Fixed performance when using many global
highlighters; updated the highlight service to allow for
function-specific highlighting
2025-03-13 17:06:09 -04:00
Ryan Kurtz
825e8b811d Merge remote-tracking branch 'origin/patch' 2025-03-13 12:12:27 -04:00
Ryan Kurtz
7970f0c45a Merge remote-tracking branch
'origin/GP-5479_ghidra1_FunctionStorageEditor' into patch (Closes #7900)
2025-03-13 11:18:50 -04:00
Ryan Kurtz
24ca217a5a Merge remote-tracking branch 'origin/patch' 2025-03-13 11:09:53 -04:00
Noah Gregory
a962761ac0 Backporting "Start using long for symbol table offsets instead of
`int`" to patch (#7436, #7882)
2025-03-13 11:01:53 -04:00
Ryan Kurtz
2d29dd713a Merge remote-tracking branch 'origin/patch' 2025-03-13 09:06:31 -04:00
Ryan Kurtz
718987e811 GP-7899: Fixing issue with Mach-O stubs when local or absolute symbols
are present in the dynamic symbol table.  Also fixing first entry of
string table on dyld extractions. (Closes #7899)
2025-03-13 08:53:55 -04:00
Ryan Kurtz
869e32dd8e Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-cleanup' 2025-03-13 07:26:33 -04:00
ghidra1
15e4335eda GP-5479 Corrected Function Storage Editor issues 2025-03-12 15:47:59 -04:00
dragonmacher
c0f2edd2da Test update for closing windows that are dialogs 2025-03-12 14:02:38 -04:00
Ryan Kurtz
5a31ded2e0 Merge remote-tracking branch 'origin/GP-1-dragonmacher-help-reload-fix' 2025-03-12 13:01:52 -04:00
Ryan Kurtz
928fd09692 Merge remote-tracking branch
'origin/GP-5326_ghidragon_edit_structure_field--SQUASHED' (Closes #7407)
2025-03-12 12:59:58 -04:00
Ryan Kurtz
678209dbc3 Merge remote-tracking branch 'origin/GP-5478_ryanmkurtz_libs' 2025-03-12 12:58:34 -04:00
Ryan Kurtz
3f9f79b49f GP-5478: Cleaning up library loading code 2025-03-12 06:28:54 -04:00
d-millar
7ed42228a0 GP-0: memview mods 2025-03-11 16:40:01 -04:00
ghidragon
0b0b330bac GP-5326 created edit structure field action and dialog. 2025-03-11 16:13:24 -04:00
Ryan Kurtz
f183b758a0 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-3-11-25' 2025-03-11 14:31:37 -04:00
dragonmacher
04f1cca0ab Test fixes 2025-03-11 14:27:00 -04:00
Ryan Kurtz
515fd01489 GP-0: Upping Gradle wrapper to 8.1 2025-03-11 13:32:55 -04:00
Ryan Kurtz
19b6b17a23 GP-5429: More Mach-O reexport progress bar improvements 2025-03-11 13:31:32 -04:00
Ryan Kurtz
636f28dbdc Merge remote-tracking branch 'origin/GP-5462_dev747368_missing_gotype_subst' 2025-03-11 06:54:43 -04:00
Ryan Kurtz
f0542ccd6c Merge remote-tracking branch 'origin/patch' 2025-03-11 06:53:37 -04:00
Ryan Kurtz
a15e86832a Merge remote-tracking branch
'origin/GP-5461_ghidra007_RTTIScriptHandleMultipleVftableSymbolsAtSameAddr'
into patch (#7876)
2025-03-11 06:48:26 -04:00
dragonmacher
ef7c79f0c0 Updated the help window to not preserve the previous location on a new
request for the same page
2025-03-10 19:01:48 -04:00
d-millar
17d6f49bd7 GP-4611: not a perfect solution, but better 2025-03-10 17:42:09 -04:00
ghidorahrex
7413204896 GP-5469: Added additional arm VMRS/VMSR instruction variants 2025-03-10 16:16:04 +00:00
Ryan Kurtz
73d29e3488 Merge remote-tracking branch
'origin/GP-5468-dragonmacher-renderer-font-warning-fix' (Closes #7886)
2025-03-10 11:45:52 -04:00
Ryan Kurtz
117989eeda Merge remote-tracking branch 'origin/GP-1-dragonmacher-help-toc-sort-fix' 2025-03-10 11:44:45 -04:00
dragonmacher
88dc8a65bc GP-5468 - Updated the cell renderer setFont() warning to only show once 2025-03-08 16:51:09 -05:00
dragonmacher
0a30e924dd Updated the help build to detect re-used sort group values 2025-03-07 22:55:00 -05:00
カイダ
2b7663d7e5 Detect more rust binaries
Some rust binaries do not contain the `rustc` or `RUST_BACKTRACE` strings. Also detect `RUST_MIN_STACK` which is in these binaries.
2025-03-08 12:37:18 +09:00
ghidra007
e2b60a52f9 GP-5461 updated RecoverClassesFromRTTI script to correctly handle case
where some vftable addresses have more than one valid vftable symbol.
2025-03-07 21:33:16 +00:00
dev747368
e72b17b0db GP-5462 add some missing gotype name substitutions 2025-03-07 21:18:53 +00:00
Ryan Kurtz
7b9183b2db Merge remote-tracking branch 'origin/GP-1-dragonmacher-escape-window-fix' 2025-03-07 15:29:27 -05:00
Ryan Kurtz
0c56a9070c Merge remote-tracking branch 'origin/GP-4037_ghidragon_show_offcut_comments_in_listing--SQUASHED' 2025-03-07 15:19:59 -05:00
dragonmacher
0bb48934e8 Fixed escape key binding collision with closing windows by only enabling
the action when there is a selection
2025-03-07 12:55:53 -05:00
ghidragon
36b12ad8fe GP-4037 Changes the various listing comment fields (PRE, POST, EOL, PLATE) to also display offcut comments, colored red 2025-03-07 12:25:49 -05:00
Ryan Kurtz
b22c84a3be Merge remote-tracking branch 'origin/GP-2432_dev747368_golang_apisnapshot' 2025-03-07 11:58:13 -05:00
dev747368
36c6c8ef77 GP-2432 golang api snapshot, generics, closures, gcwritebarrier
Apply golang runtime function signatures from info stored in json api
snapshot files.

The api snapshot files are created by a custom go helper program that
uses the go compiler parser to parse the go toolchain source tree and
writes the discovered function and type info into a json file.

The go-api-parser helper program is based off of work contributed by
github user monoidic via issue #6367.

Updates generic functions to take a generic dictionary RTTI
parameter (mostly to allow correct assignment of other parameters).

Updates closure functions to take a closure context parameter.  Closure
contexts are passed via a register that is not involved in normal
parameter passing.

Tweaks the signature of gcWriteBarrier functions so that they don't mess
up decompilation of functions that use them.
2025-03-07 16:44:48 +00:00
Ryan Kurtz
2896551d68 Merge remote-tracking branch 'origin/GP-5457_dev747368_fix_gnunote_conflict' 2025-03-07 05:54:49 -05:00
dev747368
017cef88cd GP-5457 fix error when marking up gnu note items during import
was trying to markup the same gnu note via section name and pt_note
2025-03-06 19:48:57 +00:00
Ryan Kurtz
7055edf3fa Merge branch 'GP-5458_ryanmkurtz_GhidraProject-exceptions' (#7536) 2025-03-06 12:39:18 -05:00
Ryan Kurtz
1990d2ed4b GP-5458: GhidraProject and DefaultProjectManager methods for opening
projects now throw more granular exceptions
2025-03-06 12:37:30 -05:00
Ryan Kurtz
5361a47df2 Merge remote-tracking branch 'origin/patch' 2025-03-06 12:07:16 -05:00
Ryan Kurtz
b2d3c28ca7 Merge remote-tracking branch
'origin/GP-4648_ghidorahrex_PR-6531_Sleigh-InSPECtor_aarch32_vselgt'
into patch (Closes #6531)
2025-03-06 12:02:13 -05:00
Ryan Kurtz
5a8c2fbfa6 Merge branch 'GP-5444_ryanmkurtz_pyghidra-lock' into patch
(Closes #7536)
2025-03-06 12:00:09 -05:00
Ryan Kurtz
abb65d1b8c GP-5444: PyGhidra open_program() now handles locked projects better 2025-03-06 11:58:12 -05:00
Ryan Kurtz
b88a82dae1 Merge remote-tracking branch 'origin/GP-0_ghidragon_fixing_encoded_string_test' 2025-03-06 11:36:42 -05:00
ghidragon
260375351d GP-0 fixed bug introduced when adding accessible name 2025-03-06 11:34:58 -05:00
Ryan Kurtz
df57cf3351 Merge branch 'GP-0_ryanmkurtz_PR-6204_antoniovazquezblanco_pic' 2025-03-06 11:32:36 -05:00
Ryan Kurtz
40fecbc8dc Merge remote-tracking branch 'origin/GP-0_d-millar_test_fixes_250306' 2025-03-06 10:19:39 -05:00
d-millar
72bf384d7b GP-0: test fix 2025-03-06 15:14:35 +00:00
Ryan Kurtz
5b6c26ad05 Merge remote-tracking branch 'origin/GP-5227_Dan_splitConnectorHelps--SQUASHED' 2025-03-06 09:27:14 -05:00
Ryan Kurtz
ec743e0280 Merge remote-tracking branch
'origin/GP-5346-dragonmacher-decompiler-function-color-bug'
(Closes #7453)
2025-03-06 09:25:37 -05:00
Ryan Kurtz
7ebcb3fa88 Merge remote-tracking branch 'origin/GP-5434_ghidragon_fixed_datatype_tree_node_tooltip_cache--SQUASHED' 2025-03-06 09:23:54 -05:00
Ryan Kurtz
95782ad486 GP-5429: DyldCacheExtractLoader and MachoFileSetExtractLoader no longer
try to handle reexports
2025-03-06 09:20:49 -05:00
ghidragon
75d5db56a3 GP-5434 fixed data type tree node tooltip cache being stale. 2025-03-05 18:39:37 -05:00
Dan
9cf438bccd GP-5227: Split launchers help apart. 2025-03-05 20:17:43 +00:00
Ryan Kurtz
ff90737bdc Merge remote-tracking branch 'origin/GP-5452_d-millar_rr--SQUASHED'
(Closes #3133)
2025-03-05 10:37:17 -05:00
Ryan Kurtz
a0c5e18fcc Merge remote-tracking branch 'origin/GP-5265_Dan_moveScheduleDisplay--SQUASHED' 2025-03-05 10:34:19 -05:00
Ryan Kurtz
99eaf163ca Merge remote-tracking branch
'origin/GP-5414-dragonmacher-decompiler-hl-fix--SQUASHED' (Closes #7527)
2025-03-05 10:32:29 -05:00
Ryan Kurtz
7bbbc20cdf Merge remote-tracking branch 'origin/GP-4393_ghidragon_add_hover_to_show_symbol_source--SQUASHED' 2025-03-05 10:25:28 -05:00
Ryan Kurtz
6a8724a984 Merge remote-tracking branch 'origin/patch' 2025-03-05 10:24:32 -05:00
Ryan Kurtz
57784ead36 Merge remote-tracking branch 'origin/GP-5411_emteere_PPCpltThunk' into patch 2025-03-05 10:18:52 -05:00
d-millar
44c2a6dd26 GP-3133: per review
GP-3133: docs
GP-3133: basic methods
GP-3133: first pass
2025-03-05 10:11:35 -05:00
Dan
273dfba1ac GP-5265: Move schedule display from Threads to Listing tabs 2025-03-05 15:07:14 +00:00
Ryan Kurtz
22f733c19e Merge remote-tracking branch
'origin/GP-5451_ghidra007_removedOldGccRTTIAnalysisScript'
(Closes #7871)
2025-03-05 10:02:42 -05:00
Ryan Kurtz
825b6754f1 GP-0: Improving Mach-O loader progress messages (#7863) 2025-03-05 09:48:19 -05:00
dragonmacher
f078e5fe62 GP-5346 - Decompiler - Fixed sporadic function color bug that caused bad
function colors to oscillate
2025-03-04 18:06:51 -05:00
dragonmacher
99659967e2 GP-5414 - Decompiler - Updated highlighting to ignore syntax tokens 2025-03-04 17:26:33 -05:00
ghidragon
2a1a158578 GP-4393 add hover to show symbol source type 2025-03-04 16:17:03 -05:00
ghidra2
c809166c33 Make BSim install by default for public release. 2025-03-04 19:29:12 +00:00
ghidra007
2e26a0db35 GP-5451 removed old GCCRTTIAnalysisScript because
RecoverClassesFromRTTIScript has the latest Gcc class recovery
mechanisms in it.
2025-03-04 19:26:26 +00:00
Ryan Kurtz
802586c6fb Merge remote-tracking branch 'origin/GP-5408_ghizard_Rework_hierarchical_class_layout_and_vxt_understanding--SQUASHED' 2025-03-04 14:01:01 -05:00
Ryan Kurtz
75288d7d32 Merge remote-tracking branch 'origin/GP-5407_d-millar_TTD_putmem_state--SQUASHED' 2025-03-04 13:57:06 -05:00
ghizard
380a0dbe69 GP-5408 - C++ and PDB - rework hierarchical class layout and VxTable understanding 2025-03-04 13:50:28 -05:00
Ryan Kurtz
6d4f6e0854 Merge branch 'GP-0_ryanmkurtz_PR-7877_bmacphee_dyld-addend-mask-fix' 2025-03-04 13:15:51 -05:00
Ryan Kurtz
6d7f8a0b5e GP-0: Certify 2025-03-04 13:14:36 -05:00
Ryan Kurtz
4b82dad771 Merge remote-tracking branch 'origin/GP-5193_Dan_cleanLegacyGuiTables--SQUASHED' 2025-03-04 13:07:20 -05:00
Ryan Kurtz
d0fa5865c0 Merge remote-tracking branch 'origin/patch' 2025-03-04 13:06:23 -05:00
Ryan Kurtz
aa0753dbef Merge branch
'GP-5449_ryanmkurtz_PR-7868_Lehona_tricore_fix_relocation_24REL' into
patch (Closes #7868)
2025-03-04 13:04:03 -05:00
Ryan Kurtz
4a8b802178 GP-5449: Certify 2025-03-04 13:03:10 -05:00
d-millar
a2e42f5fe2 GP-5407: from review
GP-5407: from review
GP-5407: rebase
GP-5407: minor fix
GP-5407: new launcherGP-5407: new launcherGP-5407: working (?) open traceGP-5407: modules sort of worksGP-5407: mostly sane (threads+modules)GP-5407: start on methodsGP-5407: refresh fixGP-5407: update on refreshGP-5407: need a better fix for displaysGP-5407: backwards methodsGP-5407: add actionGP-5407: add actionGP-5407: working back buttonGP-5407: experimentingGP-5407: events workingGP-5407: clearer optionsGP-5407: minorGP-5407: actions->methods (step_ext)GP-5407: iconsGP-5407: iconsGP-5407: icons pt.2GP-5407: fix for KMEM/UMEMGP-5407: deprecate pyttdGP-5407: deprecate pyttdGP-5407: launchers updateGP-5407: ??
2025-03-04 13:02:21 -05:00
Dan
a1ff800559 GP-5193: Delete Legacy UI table panels. 2025-03-04 18:02:13 +00:00
lmulert@emproof.de
334eecbd16 Fix tricore relocation 24REL handling 2025-03-04 12:58:16 -05:00
Brad MacPhee
fdc3dd080a
DyldChainedImport: fix offset mask bug
fix name_offset extraction to support values stored in the high 32 bits that are larger than 2G (highest bit set)

this bug may not occur in practice, but is easy to prevent by using a long literal for the masking, rather than integer
2025-03-04 13:39:37 -04:00
Ryan Kurtz
4cf5d25bc8 Merge remote-tracking branch 'origin/GP-4555_GhidraKraken_DialogNames' 2025-03-04 12:21:45 -05:00
Ryan Kurtz
87a7caa90c Merge remote-tracking branch 'origin/GP-5430_ghidra007_ImageRuntimeFunctionEntryChange--SQUASHED' 2025-03-04 12:20:09 -05:00
Ryan Kurtz
1e18516eb5 Merge remote-tracking branch
'origin/GP-5440_ghidragon_fixing_nav_history_when_repeating_mem_search'
(Closes #7445)
2025-03-04 12:18:34 -05:00
Ryan Kurtz
92258b5b1b Merge remote-tracking branch 'origin/GP-2040_Dan_cleanAsyncUtils--SQUASHED' 2025-03-04 12:14:22 -05:00
Dan
922c4d0186 GP-2040: Remove garbage from AsyncUtils. 2025-03-04 17:09:06 +00:00
ghidra007
a19d6ab459 GP-5430 Updated the PE ImageRuntimeFunctionEntry structures to make EndAddress a Dword since it is really the address after the end of the given function and was causing bad references and code to be created. 2025-03-04 16:49:31 +00:00
Ryan Kurtz
66ac37b368 Merge branch 'GP-0_ryanmkurtz_PR-7875_XeR_memory-map' 2025-03-04 10:33:46 -05:00
Ryan Kurtz
45552147ec Merge remote-tracking branch
'origin/GP-5402_James_aarch64_fp_comparisons--SQUASHED' into patch
(Closes #7479, Closes #7855)
2025-03-04 10:10:09 -05:00
Ryan Kurtz
9515da9b19 Merge remote-tracking branch 'origin/GP-5441_ryanmkurtz_dyld-archs'
(#7863)
2025-03-04 10:03:33 -05:00
Ryan Kurtz
66d3a0d7c1 Merge remote-tracking branch 'origin/GP-5429_ryanmkurtz_reexports'
(Closes #7537)
2025-03-04 09:56:52 -05:00
Ryan Kurtz
9cca167f77 Merge remote-tracking branch 'origin/GP-5425_Dan_fixRefreshToggleInModelView--SQUASHED' 2025-03-04 09:55:00 -05:00
James
1bcc69aece GP-5402 aarch64 floating point comparisons and NAN 2025-03-04 09:20:45 -05:00
Dan
a94b0493c9 GP-5425: Encapsulate object-discovery policy, sort REFRESH, incorporate schema into specificity 2025-03-04 14:15:07 +00:00
XeR
c7336e8d19 Memory Map: ensure columns exist on initialization
The Memory Map plugin configures the maximum and minimum size of some of
the columns.

This initialization does not take into account that a user is able to
hide columns, which results in a null pointer exception.

This commit checks that these objects are not null before configuring
them.

Fixes: f4b89fd26c ("GP-4984 - Fixed row selection while using the filter; updated columns to be resizable")
2025-03-04 12:40:05 -01:00
Ryan Kurtz
17910774cd GP-5429: Support for Mach-O LC_REEXPORT_DYLIB 2025-03-04 06:25:58 -05:00
emteere
208f6f3ed1 GP-5411 Added plt thunk patterns, pre-fill of edit thunk GUI, loosened
thunk address calculation for more complicated thunks
2025-03-03 22:37:45 +00:00
GhidraKraken
6121818cd3 GP-4555 set accessible names for components 2025-03-03 15:24:58 -05:00
Ryan Kurtz
9890a88911 GP-5441: Don't try to load libraries from dyld_shared_cache files of
wrong architecture...waste of memory
2025-03-03 13:55:58 -05:00
ghidragon
bc2f0c135e GP-5440 fixed action Repeat Memory Search (F3) to update navigation
history
2025-03-03 13:34:20 -05:00
Ryan Kurtz
136a944796 Merge remote-tracking branch 'origin/GP-2148_ghidragon_change_byteviewer_to_center_when_goto_is_offscreen' 2025-03-03 13:10:29 -05:00
Ryan Kurtz
3c76ab787a Merge remote-tracking branch 'origin/GP-5379_Dan_fixKeyReuse--SQUASHED'
(Closes #7497)
2025-03-03 13:08:01 -05:00
Ryan Kurtz
e08184f5db Merge remote-tracking branch 'origin/patch' 2025-03-03 13:07:03 -05:00
Ryan Kurtz
c2533aaf6e Merge remote-tracking branch 'origin/GP-5394_Dan_fixWatchDeref' into patch 2025-03-03 13:05:07 -05:00
Ryan Kurtz
32a287aab8 Merge remote-tracking branch 'origin/GP-5416_Dan_terminalScrollingOnSelect' into patch 2025-03-03 13:01:35 -05:00
Ryan Kurtz
73810bb7b9 Merge remote-tracking branch 'origin/GP-4915_Dan_fixPlotColumnIssues--SQUASHED' into patch 2025-03-03 13:00:08 -05:00
Ryan Kurtz
973a0ea1c3 Merge remote-tracking branch 'origin/GP-5383_Dan_watchesUpdateOnRegChange' into patch 2025-03-03 12:58:33 -05:00
Dan
789a9fa4b7 GP-5379: Require snap parameter in object getters/setters. Lots of fallout. 2025-03-03 17:29:24 +00:00
Dan
2aedd75059 GP-4915: Scan view columns, not model columns, to detect Plot removal. 2025-03-03 17:09:42 +00:00
ghidragon
49d9afdbfb GP-2148 changed Byteviewer to center cursor on screen when jumping to
offscreen location to be consistent with listing
2025-03-03 11:57:42 -05:00
Ryan Kurtz
3d7089d391 Merge remote-tracking branch
'origin/GP-5310_ghidragon_search_and_replace--SQUASHED'
2025-03-03 06:23:24 -05:00
Ryan Kurtz
7475ff424c Merge remote-tracking branch
'origin/GP-5428_ghidragon_scripts_menu--SQUASHED' (#7521)
2025-03-03 06:18:56 -05:00
ghidragon
9a973787dc GP-5428 - Scripts without menu paths are put into default menu when added to tool 2025-02-28 20:09:57 -05:00
ghidragon
6fb115358a GP-5310 Created global search and replace feature 2025-02-28 20:08:40 -05:00
Ryan Kurtz
f1dcb64e22 Merge remote-tracking branch 'origin/patch' 2025-02-28 16:38:51 -05:00
Ryan Kurtz
3ed75673dd Merge remote-tracking branch 'origin/GP-5422_ghidra007_RTTIUtil_fixReplaceTickIssue' into patch 2025-02-28 16:35:59 -05:00
Dan
891d7a5d78 GP-5383: Include register spaces in Watch update on RESTORED event. 2025-02-28 21:03:27 +00:00
Dan
6c28d25214 GP-5394: Fix issue evaluating watches when no thread (on previous coords) 2025-02-28 20:46:10 +00:00
Dan
183b862e14 GP-5416: Fix annoying Terminal scrolling when selecting. 2025-02-28 19:45:14 +00:00
Ryan Kurtz
d0bd4e3184 Merge remote-tracking branch 'origin/patch' 2025-02-28 13:52:28 -05:00
Ryan Kurtz
7e3468a17e Merge remote-tracking branch 'origin/GP-5419_Dan_fixDocsRePybag' into patch 2025-02-28 13:38:56 -05:00
Dan
67bca91abb GP-5419: Fix installation guide re/ pybag version required. 2025-02-28 17:58:40 +00:00
Ryan Kurtz
507d5cfbea Merge remote-tracking branch 'origin/patch' 2025-02-28 11:05:29 -05:00
Ryan Kurtz
3b421a4f42 Merge remote-tracking branch 'origin/GP-5431_ghidra1_BitfieldEditorNPE'
into patch (Closes #7865)
2025-02-28 11:02:00 -05:00
ghidra1
be2381e5cb Corrected BitFieldEditorPanel NPE when getActionContext invoked with
null event.
2025-02-28 08:55:15 -05:00
Ryan Kurtz
58e19e947c Merge remote-tracking branch
'origin/GP-5424_ghidracadabra_PR-6601_Sleigh-InSPECtor_x86_pushf_popf'
(Closes #6601)
2025-02-27 14:00:58 -05:00
James
74066cdf78 GP-5424 updated x86 version numbers 2025-02-26 20:29:50 +00:00
Sleigh-InSPECtor
6e8ef8deb1 x86: PUSHF/POPF address size fixes (64-bit mode) 2025-02-26 20:18:13 +00:00
ghidra007
9bc59fa383 GP-5422 fix RTTIAnalyzer replace tick after just removed issue 2025-02-26 18:48:10 +00:00
Ryan Kurtz
9a7a06f5f6 Merge remote-tracking branch
'origin/GP-5191_James_x86_fpu_ip_updates--SQUASHED' (Closes #7205,
Closes #7508)
2025-02-26 12:47:39 -05:00
Ryan Kurtz
56867a2696 Merge remote-tracking branch 'origin/GP-5388_James_bsim_feature_visualizer_option_improvement--SQUASHED' 2025-02-26 12:45:51 -05:00
Ryan Kurtz
496ad864d6 Merge remote-tracking branch 'origin/GP-1-dragonmacher-frustration-disable' 2025-02-26 12:44:44 -05:00
Ryan Kurtz
836a01ac11 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-2-26-25' 2025-02-26 12:43:56 -05:00
dragonmacher
b04ff770b3 Test fixes 2025-02-26 12:42:09 -05:00
dragonmacher
fc68df0927 Updated the Window menu actions to not show frustration 2025-02-25 14:35:52 -05:00
James
3d09c029cd GP-5388 use drop-down in bsim feature visualizer options 2025-02-25 12:46:51 -05:00
James
f8b0d83b16 GP-5191 x86 fpu ip updates 2025-02-25 12:19:27 -05:00
Ryan Kurtz
cc1228bdaa Merge remote-tracking branch 'origin/GP-1-dragonmacher-project-open-tree-fix--SQUASHED' 2025-02-25 11:57:44 -05:00
Ryan Kurtz
fbf4ecb188 Merge remote-tracking branch 'origin/patch' 2025-02-25 11:57:11 -05:00
Ryan Kurtz
f80934d684 Merge remote-tracking branch 'origin/GP-5406_ghidra1_ElfMipsDebugImport' into patch 2025-02-25 11:54:32 -05:00
ghidra1
8e09813393 GP-5406 Correct ELF import issue for MIPS debug file which fails on
.reginfo data read
2025-02-25 09:57:25 -05:00
Ryan Kurtz
22a4de14ea GP-0: OMF-51 improvements 2025-02-25 09:35:32 -05:00
dragonmacher
1d5da6dae1 Fixed open program dialog to not repeatedly load the root node 2025-02-25 09:14:56 -05:00
Ryan Kurtz
26d3c933e7 Merge remote-tracking branch 'origin/GP-1-dragonmacher-front-end-fix' 2025-02-25 07:12:15 -05:00
Ryan Kurtz
a60ef336ea Merge remote-tracking branch 'origin/patch' 2025-02-25 07:06:13 -05:00
Ryan Kurtz
f6671b7c21 Merge remote-tracking branch
'origin/GP-5412_ghidra1_StructureEditorTransactionError' into patch
(Closes #7853)
2025-02-25 07:00:56 -05:00
Ryan Kurtz
de95e7e4a9 Merge remote-tracking branch
'origin/GP-5413_ghidra1_x86ElfGotAllocError' into patch (Closes #7525)
2025-02-25 06:59:19 -05:00
dragonmacher
e767916357 Fixed the Close action to not close the Front End provider 2025-02-24 18:47:46 -05:00
ghidra1
4b4d2f00d1 GP-5413 Improve error handling for x86 ELF GOT allocation failure during
relocation processing.
2025-02-24 18:15:30 -05:00
ghidra1
0fc1805695 GP-5412 Corrected structure editor transaction error 2025-02-24 17:13:00 -05:00
Ryan Kurtz
93c19e3cc6 GP-5396: Fixing a recent regression in DyldChainedFixups.java 2025-02-24 05:49:10 -05:00
Ryan Kurtz
59194d4927 Merge remote-tracking branch 'origin/patch' 2025-02-21 14:21:16 -05:00
Ryan Kurtz
8213dbb71a Merge remote-tracking branch 'origin/GP-5404_compiler_spec_fixes' into patch 2025-02-21 14:18:46 -05:00
Ryan Kurtz
b1f1edb524 Merge remote-tracking branch 'origin/GP-5255_James_source_file_transform_file_chooser--SQUASHED' 2025-02-21 14:11:58 -05:00
Ryan Kurtz
43b0621e4a Merge remote-tracking branch
'origin/GP-5331_Dan_gdbSignErrors--SQUASHED' (Closes #6787)
2025-02-21 14:10:14 -05:00
d-millar
5e7af583cc GP-5404: sigh 2025-02-21 15:04:06 +00:00
James
aa68aec59d GP-5255 source file transform file chooser 2025-02-21 09:38:20 -05:00
Dan
7c983f7bb5 GP-5331: Gdb address signedness. 2025-02-20 19:36:36 +00:00
Ryan Kurtz
aaf910bd82 Merge remote-tracking branch 'origin/GP-5319_James_source_map_help_improvements--SQUASHED' 2025-02-20 13:11:08 -05:00
Ryan Kurtz
e2435030bc Merge branch 'GP-5396_ryanmkurtz_libobjc' 2025-02-20 13:10:51 -05:00
Ryan Kurtz
1a28788aec Merge remote-tracking branch 'origin/patch' 2025-02-20 13:10:25 -05:00
Ryan Kurtz
93c2a52653 Merge branch 'GP-0_ryanmkurtz_PR-7510_sethcg_fix-warning' 2025-02-20 13:10:05 -05:00
Ryan Kurtz
a28ef36998 GP-5396: The extracted dyld_shared_cache component loader now has
options to automatically add common components that contribute to better
analysis such as libobjc.dylib, constant data, text stubs, etc
2025-02-20 11:58:13 -05:00
James
752edc8084 GP-5319 source map help improvements 2025-02-20 11:03:17 -05:00
Ryan Kurtz
6cec02eb9f GP-0: Certify 2025-02-20 07:46:53 -05:00
ghidra1
97c8b3975c GP-5395 Corrected Memory Search region choice selection bug 2025-02-19 20:12:34 -05:00
Ryan Kurtz
0948dfbde4 Merge remote-tracking branch 'origin/GP-5099_ghizard_Continued_investigation_redesign_of_MsftVxtManager' 2025-02-19 11:29:39 -05:00
Ryan Kurtz
85ed9774c0 Merge remote-tracking branch 'origin/patch' 2025-02-19 11:28:28 -05:00
Ryan Kurtz
4829ecd670 Merge remote-tracking branch 'origin/GP-5389_ghidra007_addVmiCheck' into
patch (Closes #7516)
2025-02-19 11:21:32 -05:00
Ryan Kurtz
0855e61d74 Merge remote-tracking branch 'origin/patch' 2025-02-19 10:28:05 -05:00
Ryan Kurtz
0966be0995 Merge remote-tracking branch
'origin/GP-5386_ghidorahrex_ARM_thumb_strt_patch' into patch
(Closes #7514)
2025-02-19 10:17:34 -05:00
Ryan Kurtz
2e9f555aa9 Merge remote-tracking branch
'origin/GP-4649_ghidorahrex_PR-6542_Sleigh-InSPECtor_aarch32_vdup' into
patch (Closes #6542)
2025-02-19 10:12:35 -05:00
Ryan Kurtz
f23ae988bc Merge remote-tracking branch
'origin/GP-5314_Dan_liveMemHandlerBroke--SQUASHED' (Closes #7413)
2025-02-19 06:10:13 -05:00
ghidra1
558b785484 GP-0 Set next patch version to 11.3.2 2025-02-18 17:14:02 -05:00
ghidra007
1b6254547c GP-5389 added check in vmi structure creation so numBases is valid 2025-02-18 21:41:38 +00:00
ghidra1
405e6126c2 Merge remote-tracking branch 'origin/patch' 2025-02-18 15:14:53 -05:00
ghizard
eb5c9c88af GP-5099 - CPP and PDB - Continued work on redesigned VxtManager 2025-02-18 15:02:27 -05:00
Dan
bef0660e6a GP-5314: Destroy LiveMemoryHandler 2025-02-18 18:23:30 +00:00
sethcg
281ce0ab91 Fixed comments to pull request 2025-02-18 12:38:23 -05:00
ghidra1
5b017d065e GP-0 Updated Change History for 11.3.1 release 2025-02-18 12:03:45 -05:00
ghidra1
305d8a39ef Merge remote-tracking branch 'origin/GP-5353_James_DWARF_dw_lns_const_add_pc' into patch 2025-02-18 11:39:25 -05:00
ghidra1
1abb1c08df Merge remote-tracking branch 'origin/GP-5365_emteere_MIPS64PackedRelocationFix' into patch 2025-02-18 11:35:34 -05:00
ghidorahrex
a2af457dea GP-5386: Added missing ARM thumb strt instruction 2025-02-18 14:03:42 +00:00
Ryan Kurtz
c8937df382 Merge remote-tracking branch 'origin/GP-5375-dragonmacher-gtree-get-child--SQUASHED' 2025-02-18 07:15:29 -05:00
Ryan Kurtz
8a87b946d9 Merge remote-tracking branch 'origin/GP-5385_ghizard_PDB_U_Change_constructor_return_type' 2025-02-18 07:11:38 -05:00
Ryan Kurtz
92f748d50d Merge remote-tracking branch
'origin/GP-5384_ghidracadabra_PR-7388_gemesa_bsim-pg-arm64'
(Closes #7388, Closes #7387)
2025-02-18 07:08:56 -05:00
sethcg
c34988bbbd Fixed some references to generic types 2025-02-15 16:02:16 -05:00
dragonmacher
e868fdd344 GP-5375 - Added GTree.getChildren(String) to handle potential duplicate child nodes 2025-02-14 19:32:44 -05:00
ghizard
46cc9139f6 GP-5385 - PDB U - Change constructor return type 2025-02-14 15:55:33 -05:00
James
264d598653 GP-5353 dwarf line number fix 2025-02-14 20:52:50 +00:00
Andras Gemes
1c94f5145d BSim: Document PostgreSQL support on arm64 2025-02-14 17:55:30 +00:00
Ryan Kurtz
2eff37f655 Merge remote-tracking branch 'origin/patch' 2025-02-14 12:12:52 -05:00
Ryan Kurtz
a950ecd5f2 Merge remote-tracking branch 'origin/GP-1-dragonmacher-help-fix' 2025-02-14 11:49:24 -05:00
dragonmacher
2a2251c04c Fixed bad help location 2025-02-14 11:42:21 -05:00
ghidra1
7d3b5e17d9 GP-5374 Corrected ELF Import bug which failed to pin absolute symbols
and reported an Object Delete error
2025-02-14 11:11:14 -05:00
ghidra1
a8f446f603 Merge remote-tracking branch 'origin/patch' 2025-02-14 11:01:23 -05:00
ghidra1
77bd0c526e GP-0 Removed server related debug stacktraces 2025-02-14 11:00:12 -05:00
ghidra1
391101cf98 Merge remote-tracking branch 'origin/patch' 2025-02-14 09:35:05 -05:00
ghidra1
94f01f27ce GP-5362 Corrected logic error 2025-02-14 09:33:07 -05:00
Ryan Kurtz
f33e358cea Merge branch 'GP-0_ryanmkurtz_PR-7493_gtackett_OMF51_objectmarkup' 2025-02-14 06:52:26 -05:00
Ryan Kurtz
733e0650c1 GP-0: Review fixes 2025-02-14 06:51:58 -05:00
Ryan Kurtz
0048d2e307 Merge remote-tracking branch 'origin/patch' 2025-02-14 05:53:01 -05:00
Ryan Kurtz
61c15860f0 GP-5381: Fixed a bug that prevented Ghidra from remembering the
last-used JDK when the JAVA_HOME environment variable was set
(Closes #7503)
2025-02-14 05:49:39 -05:00
Ryan Kurtz
c186ac2f41 Merge remote-tracking branch 'origin/GP-5360_d-millar_bat_script_fixes'
(Closes #4977)
2025-02-13 14:52:03 -05:00
d-millar
55ea88ddb0 GP-5360: first pass - gdb working
GP-5360: working lldb.bat

GP-5360: allow empty listing for dbgeng

GP-5360: bat equivs

GP-5360: bat equivs

GP-5360: ssh adds for lldb

GP-5360: missed one

GP-5360: missed one

GP-5360: wow this sucks

GP-5360: post-review
2025-02-13 14:47:37 -05:00
Ryan Kurtz
f0a21fe60f Merge remote-tracking branch 'origin/patch' 2025-02-13 14:32:43 -05:00
Ryan Kurtz
e2d47f4c35 Merge remote-tracking branch
'origin/GP-5362_ghidra1_PasswordDialog--SQUASHED' into patch
(Closes #7454)
2025-02-13 14:28:52 -05:00
ghidra1
d0badde92b GP-5362 Correct password entry bug and refactor PasswordDialog/ClientAuthenticator 2025-02-13 14:11:30 -05:00
Ryan Kurtz
b7548c55cd Merge remote-tracking branch
'origin/GP-5286_ghidorahrex_PR-6470_Sleigh-InSPECtor_aa64_ldnr_regs'
(Closes #6470)
2025-02-13 14:06:10 -05:00
Ryan Kurtz
2b3b59af01 Merge remote-tracking branch 'origin/patch' 2025-02-13 14:02:32 -05:00
Ryan Kurtz
799abafca3 Merge remote-tracking branch 'origin/GP-0_d-millar_lldb_NPE' into patch
(Closes #7488, Closes #7489)
2025-02-13 13:59:14 -05:00
Ryan Kurtz
e0cdd6b829 GP-0: Generating javadoc for BSim (Closes #7490) 2025-02-13 13:50:44 -05:00
Ryan Kurtz
5353c46d7a Merge remote-tracking branch 'origin/GP-1-dragonmacher-component-provider-frustration-fix' 2025-02-13 09:40:26 -05:00
Ryan Kurtz
d46fcb6b9d Merge remote-tracking branch
'origin/GP-5342-dragonmacher-dt-actions--SQUASHED' (Closes #7408)
2025-02-13 09:38:16 -05:00
dragonmacher
408de9af75 GP-5342 - Updated some Data Types actions to be enabled with a selection containing folders 2025-02-12 19:58:01 -05:00
dragonmacher
e5988853aa Disabled frustration timeout when animation is disabled 2025-02-12 19:31:51 -05:00
gtackett
26365e9e25 Add content records (restoring files accidentally removed) 2025-02-12 17:19:58 -05:00
d-millar
7a5d3ce362 GP-0: fix for None error in lldb 2025-02-12 12:44:03 -05:00
Ryan Kurtz
4247ae7956 Merge remote-tracking branch 'origin/GP-5371_ryanmkurtz_macho-longs'
(#7436)
2025-02-12 12:23:28 -05:00
Ryan Kurtz
3398fbedd9 Merge remote-tracking branch 'origin/GP-5357_ryanmkurtz_dyld-fixups'
(#7289)
2025-02-12 12:21:05 -05:00
Ryan Kurtz
15cb055073 Merge remote-tracking branch 'origin/patch' 2025-02-12 12:20:07 -05:00
Ryan Kurtz
034c696512 GP-5372: PyGhidra now respects the application.settingsdir property set
in Ghidra's launch.properties (Closes #7481)
2025-02-12 12:16:41 -05:00
Ryan Kurtz
bf92745d25 GP-5371: MachoLoader now uses longs to model native uint32_t 2025-02-12 12:11:38 -05:00
Ryan Kurtz
c474967356 Improving the efficiency of fixing up dyld_shared_cache slide pointers 2025-02-12 09:17:14 -05:00
Ryan Kurtz
eaa8aeb0c8 Merge branch 'GP-5371_ryanmkurtz_PR-7436_nmggithub_macho-ints' 2025-02-12 06:23:17 -05:00
Ryan Kurtz
31ad7c033b GP-5371: Certify 2025-02-12 06:21:51 -05:00
Ryan Kurtz
2e857e1591 Merge remote-tracking branch 'origin/patch' 2025-02-11 13:54:55 -05:00
Ryan Kurtz
ce62f9ce7e Merge remote-tracking branch 'origin/GP-5368_ghidra1_MissingRepositoryAdmin' into patch 2025-02-11 13:51:01 -05:00
ghidra1
593d11d6b8 GP-5368 Allow repository instantiation without Admin user. Misc logging
cleanup.
2025-02-11 10:17:03 -05:00
Ryan Kurtz
db1b6860c9 Merge remote-tracking branch 'origin/patch' 2025-02-11 06:09:46 -05:00
Ryan Kurtz
3b54524d66 Merge remote-tracking branch
'origin/GP-5347_d-millar_lldb_bat_fix--SQUASHED' into patch
(#4977)
2025-02-11 06:04:47 -05:00
emteere
5bcfb5f02c GP-5365 Fixed MIPS 64-bit packed relocations 2025-02-10 22:38:46 +00:00
d-millar
98da75584e GP-5347: fix for spaces
GP-5347: fix for no args
GP-5347: typo
GP-5347: fix for lldb bat
2025-02-10 15:06:37 -05:00
Ryan Kurtz
7c74de60e6 Merge remote-tracking branch 'origin/GP-5354_James_function_tags_selection_action--SQUASHED' 2025-02-10 14:52:36 -05:00
James
1a47e8f41a GP-5354 added selection action to function tags window 2025-02-10 13:53:21 -05:00
Ryan Kurtz
0c3f714f50 Merge remote-tracking branch 'origin/GP-wkshp_d-millar_RB250207--SQUASHED' 2025-02-10 13:30:53 -05:00
Ryan Kurtz
7e04770b23 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-02-10-1' 2025-02-10 13:29:31 -05:00
d-millar
0fac9cc491 GP-wkshp: post-review
GP-wkshp: minor mod
GP-wkshp: post-rebase
GP-wkshp: rebase
GP-5290: first pass
GP-5290: fixes for abstract state; set sizeGP-5290: basically workingGP-5290: state updates in motionGP-5290: some cleanupGP-5290: mid-reviewGP-5290: lose the interfaceGP-wkshp: add opsGP-wkshp: trimGP-wkshp: first pass on exportGP-wkshp: error in writeRule?GP-wkshp: working version of source exportGP-wkshp: more tweaksGP-wkshp: unnecessary
2025-02-10 13:15:57 -05:00
Dan
19edc7028c GP-0: Fix MethodInvocation dialog tests. 2025-02-10 18:15:37 +00:00
Ryan Kurtz
f0afe9123e Merge remote-tracking branch 'origin/patch' 2025-02-10 08:40:42 -05:00
Ryan Kurtz
84e05008ae GP-5348: Fixed a PyGhidra issue that prevented accessing Java
getters/setters as properties on non-public classes (Closes #7450)
2025-02-10 08:35:22 -05:00
Ryan Kurtz
ad1c2afefa Merge remote-tracking branch 'origin/GP-5349_ryanmkurtz_dyld' (#7289) 2025-02-10 07:08:50 -05:00
Ян Ли
bfb5553fc0 RecoverClassesFromRTTIScript.java | Fix misspelling of the word
'analyzer' (Closes #7464)
2025-02-10 07:08:06 -05:00
Ryan Kurtz
3cda119889 GP-5349: Improvements to the DyldCacheFileSystem 2025-02-10 06:59:58 -05:00
Ryan Kurtz
69439da80a Merge remote-tracking branch 'origin/GP-5344-dragonmacher-front-end-tool-closing-fix' 2025-02-07 14:24:32 -05:00
Ryan Kurtz
55cc6fceaa Merge remote-tracking branch
'origin/GP-5332_dev747368_FSRL_backslash_paths' (Closes #7278)
2025-02-07 14:22:58 -05:00
Ryan Kurtz
684ed5ec6c Merge remote-tracking branch 'origin/patch' 2025-02-07 09:56:36 -05:00
Ryan Kurtz
cd15acddf7 Merge branch 'GP-5298_ryanmkurtz_pyghidra-bundles' into patch 2025-02-07 09:54:46 -05:00
Ryan Kurtz
d71dc292ca GP-5298: PyGhidra can now find modules that live in directories
specified by the Bundle Manager
2025-02-07 09:53:03 -05:00
Ryan Kurtz
23d6530aaa Merge remote-tracking branch 'origin/GP-0_dev747368_fix_dwarf_npe_when_missing_reginfo' 2025-02-07 08:17:43 -05:00
Ryan Kurtz
d63717fcae Merge remote-tracking branch 'origin/patch' 2025-02-07 08:17:18 -05:00
Ryan Kurtz
af57574996 Merge remote-tracking branch 'origin/GP-5345_ryanmkurtz_ghidra-stubs-readme' into patch 2025-02-07 07:32:00 -05:00
Ryan Kurtz
b965e693a0 GP-5345: New ghidra-stubs with README.md 2025-02-07 07:30:09 -05:00
dragonmacher
df439e9a49 GP-5344 - Prevent the Front End tool disappearing by not allowing
component provider actions to close the provider if it is the last one
in the window
2025-02-06 19:22:41 -05:00
dev747368
20739feef0 GP-5332 fix backslash handling in unix filenames, FSB browser
enhancements

Don't unnecessarily convert backslashes into fwd slashes for FSRLs.
Add "My Computer" location to FSB Browser (exercising other FSRL
handling issues)
Tweaked FSB icons for file system nodes in the tree and for each FSB
component window

Fixes issue #7278
2025-02-06 22:23:54 +00:00
Ryan Kurtz
738fe8bc4f Merge branch 'GP-0_ryanmkurtz_PR-7421_ds5678_pcodeop-tostring-segmentop' 2025-02-06 12:39:23 -05:00
Ryan Kurtz
3703852dd4 Merge remote-tracking branch
'origin/GP-5303-dragonmacher-edit-stack-enablement' (Closes #6970)
2025-02-06 11:55:57 -05:00
Ryan Kurtz
c760193537 Merge remote-tracking branch
'origin/GP-5341-dragonmacher-decompiler-bg-color-fix' (Closes #7431)
2025-02-06 11:53:21 -05:00
Ryan Kurtz
706b5db3ee Merge branch 'GP-0_ryanmkurtz_PR-7429_boppitybop_fid-rust-swift-demanglers' 2025-02-06 11:51:40 -05:00
Ryan Kurtz
9de99669a8 GP-0: Certify 2025-02-06 11:49:52 -05:00
Ryan Kurtz
6ef6a85c11 Merge remote-tracking branch
'origin/GP-3450_Dan_dbgStructHovers--SQUASHED' (#5337)
2025-02-06 08:44:54 -05:00
Ryan Kurtz
207d26146d Merge remote-tracking branch
'origin/GP-3771_Dan_unwindArmThumb--SQUASHED' (Closes #5658)
2025-02-06 08:43:02 -05:00
Ryan Kurtz
65d6c3b188 Merge remote-tracking branch 'origin/GP-4546_Dan_breakExpressionActions--SQUASHED' 2025-02-06 08:34:30 -05:00
Dan
871557c555 GP-3450: Heuristic for assignment statements, evaluating lhs. Docs. Test. (Fixes a hover issue noticed in #5337) 2025-02-06 13:21:08 +00:00
Dan
655082ecb5 GP-3771: Add mask to the unwind analyzer (Fixes unwind with ARM/THUMB) 2025-02-06 13:18:15 +00:00
Dan
fb9a7c62a2 GP-4546: Add 'Set breakpoint' multi-action to Breakpoints window. 2025-02-06 13:15:45 +00:00
Ryan Kurtz
ccae2f85ad Merge remote-tracking branch 'origin/patch' 2025-02-06 07:55:48 -05:00
ghidorahrex
115353d34c GP-5268: Implemented ARM NEON vld4 instruction 2025-02-06 07:49:28 -05:00
Ryan Kurtz
160b2658ae Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-2-4-25' into patch 2025-02-06 07:42:02 -05:00
Ryan Kurtz
28fd6a1222 Merge remote-tracking branch 'origin/GP-1-dragonmacher-dark-search-highlights' 2025-02-06 07:14:11 -05:00
Ryan Kurtz
e14fede14f Merge remote-tracking branch 'origin/GP-5183_ghintern_x86_x64_cspecs--SQUASHED' 2025-02-06 07:11:36 -05:00
Ryan Kurtz
969d1df6fc Merge remote-tracking branch
'origin/GP-5337-dragonmacher-table-fitler-bug' (Closes #7444)
2025-02-06 07:08:50 -05:00
Ryan Kurtz
443dd9b845 Merge remote-tracking branch 'origin/GP-5297-dragonmacher-search-text-fix' 2025-02-06 07:05:34 -05:00
dragonmacher
3717622c60 GP-5341 - Decompiler - Fixed background not painting fully for undefined
functions
2025-02-05 21:04:50 -05:00
dragonmacher
2e6e1022bc GP-5297 - Fixed a bug that prevented comment searching of annotations
for working correctly
2025-02-05 20:34:44 -05:00
ghidra1
cdfcc71255 Merge remote-tracking branch 'origin/patch' 2025-02-05 18:49:35 -05:00
ghidra1
99ed1003b5 GP-0 Updated version 2025-02-05 18:48:25 -05:00
ghidra1
e653e82c3e Merge remote-tracking branch 'origin/patch' 2025-02-05 18:44:54 -05:00
dev747368
d7ed3a1d35 GP-0 fix DWARF NPEs when missing regmapping info 2025-02-05 21:36:44 +00:00
ghidra1
1bccb8ac60 Revert "GP-5298: PyGhidra can now find modules that live in directories specified by the Bundle Manager"
This reverts commit c5d4444128.
2025-02-05 14:21:55 -05:00
ghidra1
e840596b39 GP-0 Updated ChangeHistory for 11.3 2025-02-05 13:40:34 -05:00
ghidra1
0a155c2af4 GP-5338 Improve error handling for TEBAnalyzer 2025-02-05 13:27:04 -05:00
ghidra1
2e2a5b0a92 GP-0 WhatsNew cleanup 2025-02-05 13:14:35 -05:00
dragonmacher
1f6d121cc6 GP-5303 - Updated the Edit Stack Frame action to be enabled anywhere in
the body of a function
2025-02-05 13:04:33 -05:00
Ryan Kurtz
5002de13f4 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-02-05 06:55:37 -05:00
dragonmacher
f36814243c Tweaked find highlight colors 2025-02-04 18:08:28 -05:00
dragonmacher
617e69c2f1 Test fixes 2025-02-04 17:27:38 -05:00
dragonmacher
9be78bcd02 GP-5337 - Table Filters - fixed a bug that prevented a filter using an
escaped glob character from matching items
2025-02-04 17:00:55 -05:00
ghintern
69dd166c3a GP-5183 Fixes to x86 and x64 cspecs 2025-02-04 21:37:27 +00:00
ghidra1
100ba5fd6a GP-0 Updated ChangeHistory for 11.3 release 2025-02-04 16:18:52 -05:00
ghidra1
4677540f53 Merge branch 'GP-0_11.3WhatsNew' into Ghidra_11.3 2025-02-04 15:35:33 -05:00
emteere
cc035b900e GP-0 updating WhatsNew for 11.3 2025-02-04 15:34:57 -05:00
Sleigh-InSPECtor
065ef72288 AArch32: fixed vdup
* 8byte vector duplication to 16byte performed bitwise AND (destructive) instead of OR of the 8byte shifted results, causing all 16byte vector duplications to be 0
* non-thumb constraints were used in a thumb instruction, added thumb specific constraints and separated them using TMode ctx field
2025-02-04 16:36:32 +00:00
Sleigh-InSPECtor
26acd697ac AArch32: fixed vselgt
* added 'and N == V' check missed in the vselcond "gt"
2025-02-04 16:33:04 +00:00
Ryan Kurtz
17419c57fe Merge remote-tracking branch 'origin/GP-5076_ghizard_base_class_names_and_categories' 2025-02-04 09:07:30 -05:00
Ryan Kurtz
5a3a8c36c8 Merge remote-tracking branch
'origin/GP-5316-dragonmacher-function-editor-key-binding--SQUASHED'
(#7241)
2025-02-03 17:14:37 -05:00
Ryan Kurtz
70d43e73d8 Merge remote-tracking branch 'origin/GP-5290_d-millar_angr--SQUASHED' 2025-02-03 16:11:13 -05:00
Ryan Kurtz
a3b4b48ff4 Merge remote-tracking branch
'origin/GP-5317-dragonmacher-tree-copy--SQUASHED' (Closes #7417)
2025-02-03 16:08:36 -05:00
dragonmacher
b04e6e58b6 GP-5317 - GTree - Added an action to allow users to copy the selected paths and preserve the indentation. Moved some help to the Docking module. 2025-02-03 15:44:07 -05:00
Ryan Kurtz
3773ca550b Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-02-03 15:31:52 -05:00
Ryan Kurtz
c5aa952ad2 Merge remote-tracking branch 'origin/GP-5335_HeritageRefinementBug' into
Ghidra_11.3 (Closes #7433, Closes #7435)
2025-02-03 15:25:06 -05:00
caheckman
29a443f198 GP-5335 Get rid of refine fencepost 2025-02-03 19:54:34 +00:00
Ryan Kurtz
60329c7698 GP-5241: Re-applying nativeProject.gradle to fix windows build 2025-02-03 14:45:25 -05:00
d-millar
efc18fad3b GP-5290: from review
GP-5290: lose the interface
GP-5290: mid-review
GP-5290: some cleanup
GP-5290: state updates in motion
GP-5290: basically working
GP-5290: fixes for abstract state; set size
GP-5290: first pass
2025-02-03 12:24:15 -05:00
ghizard
ed7cc31cfd GP-5076 change PDB class naming for bases and internal category and
significant change to tests
2025-02-03 11:44:29 -05:00
Ryan Kurtz
d23e67a088 GP-0: Cleaning up certain types of javadoc errors 2025-02-03 06:13:50 -05:00
Ryan Kurtz
6086ba9bfb Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-1-30-25' 2025-02-02 13:39:07 -05:00
Ryan Kurtz
2f61a6c88a Merge remote-tracking branch 'origin/GP-5323_ghizard_PDB_improve_vxtables_and_test_setup--SQUASHED' 2025-02-02 13:37:31 -05:00
Noah Gregory
dfd0652ec1 Start using long for symbol table offsets instead of int 2025-02-01 12:30:32 -05:00
ghidra1
5b818293dc Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-31 12:09:40 -05:00
ghidra1
f85277f767 Merge remote-tracking branch 'origin/GP-5315_ryanmkurtz_jpype152' into Ghidra_11.3 2025-01-31 12:08:57 -05:00
ghidra1
0a3d4a28d0 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-31 09:16:06 -05:00
ghidra1
de41dd16d2 Merge remote-tracking branch 'origin/GP-5241_Dan_removeAgentApplyFroms--SQUASHED' into Ghidra_11.3 2025-01-31 09:11:23 -05:00
ghidra1
2b175c867e Merge remote-tracking branch 'origin/GP-5329_ghidragon_bug_in_BSimMatches_window' into Ghidra_11.3 2025-01-31 08:59:41 -05:00
ghidragon
def22c5e19 GP-5329 fixed bug in LocalBsimQueryScript 2025-01-31 08:57:44 -05:00
Stanley He
41fc219469 FunctionID: Add Rust and Swift demanglers to headless Prescript 2025-01-31 15:08:27 +11:00
dragonmacher
2f5faafeb7 Test fixes 2025-01-30 18:56:27 -05:00
dragonmacher
9a80d532a3 GP-5316 - Function Editor - Updated the editor's table edit key binding to find the next editable cell 2025-01-30 17:30:37 -05:00
ghizard
c6a3300fe8 GP-5323 - PDB - improve vxtables and test set up 2025-01-30 15:38:28 -05:00
Ryan Kurtz
c693e963eb Merge remote-tracking branch 'origin/GP-4732_d-millar_remote_dbgeng_RB250130--SQUASHED' 2025-01-30 14:37:51 -05:00
Ryan Kurtz
6b0a707850 Merge remote-tracking branch
'origin/GP-5324_dev747368_bad_path_in_import' (Closes #7267)
2025-01-30 14:36:19 -05:00
d-millar
05ed589fa0 GP-4732: from the demo (lol)
GP-4732: frome review
GP-4732: working until we step
GP-4732: manifestGP-4732: works, except for resumeGP-4732: successGP-4732: frome review
2025-01-30 12:57:47 -05:00
Dan
258878ce4b GP-5241: Remove apply froms from debug agent projects. Delete unneeded gradle scripts. 2025-01-30 16:00:27 +00:00
Ryan Kurtz
738cbc6fac GP-5315: Upgrading to JPype 1.5.2 2025-01-30 06:35:01 -05:00
Ryan Kurtz
e0fd708d30 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-30 06:27:40 -05:00
Ryan Kurtz
1d57b129b3 GP-0: Fix for validating Python wheel Module.manifest IP 2025-01-30 06:24:01 -05:00
Ryan Kurtz
109fcd102c Merge remote-tracking branch 'origin/GP-0_James_improve_dwarf_source_line_exception_handling' into Ghidra_11.3 2025-01-30 05:59:07 -05:00
James
47468598dd GP-0 improved dwarf source line exception handling 2025-01-30 02:20:43 +00:00
dev747368
55901c83fe GP-5324 fix default path suggested during import
Fix suggested import path when double-clicking to start import (vs.
right click import action)
2025-01-29 21:19:31 +00:00
Ryan Kurtz
e158337a0f Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-29 13:57:42 -05:00
Ryan Kurtz
e0d247ca86 Merge remote-tracking branch 'origin/GP-0_ryanmkurtz_python-ip' into Ghidra_11.3 2025-01-29 13:36:56 -05:00
Ryan Kurtz
0d24ae38aa GP-0: Validating Python wheel Module.manifest IP 2025-01-29 13:09:04 -05:00
Ryan Kurtz
0dc9950550 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-29 12:23:11 -05:00
Ryan Kurtz
3c68902436 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-1-29-25' into Ghidra_11.3 2025-01-29 12:20:47 -05:00
Ryan Kurtz
1dfe0c241a GP-0: Fixing PyGhidra Module.manifest IP 2025-01-29 12:19:56 -05:00
dragonmacher
abca848c4a Test fixes for missing options help 2025-01-29 12:14:27 -05:00
Ryan Kurtz
cefe8fec6a Merge remote-tracking branch 'origin/GP-3870-dragonmacher-dt-filters'
(Closes #5734)
2025-01-29 06:29:03 -05:00
Ryan Kurtz
edf127ae6d Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-29 06:21:02 -05:00
Ryan Kurtz
3c86a0f3aa Merge remote-tracking branch 'origin/GP-5321_ryanmkurtz_pe--SQUASHED'
into Ghidra_11.3 (Closes #7411)
2025-01-29 06:17:36 -05:00
Ryan Kurtz
c5d4444128 GP-5298: PyGhidra can now find modules that live in directories
specified by the Bundle Manager
2025-01-29 06:17:02 -05:00
Ryan Kurtz
5452e14db4 GP-5321: Fixing PE debug coff symbol NPE 2025-01-29 06:00:09 -05:00
ghidra1
b8ac0c46b7 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-28 16:46:45 -05:00
ghidra1
d3234f76f6 GP-0 Test fix 2025-01-28 16:46:06 -05:00
ghidra1
25cda5d8a5 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-28 16:43:03 -05:00
ghidra1
f0f3cb22ef GP-0 Corrected test failures related to new Source listing field 2025-01-28 16:41:22 -05:00
dragonmacher
ba15d9368d GP-3870 - Data Types - Added more filterable types 2025-01-28 15:05:25 -05:00
Ryan Kurtz
537be9f060 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-28 11:51:51 -05:00
Ryan Kurtz
a6809a3529 GP-0: Updated What's New 2025-01-28 11:49:51 -05:00
Ryan Kurtz
9f1aac6886 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-28 09:33:43 -05:00
ghidorahrex
dddc9afa9c GP-0: Fixed x86 AVX512 OpMask operand spacing 2025-01-28 09:22:55 -05:00
Jeremy Pritts
e71b4381b4
Add missing switch case in PcodeOp.toString for SEGMENTOP 2025-01-28 03:56:22 -05:00
Ryan Kurtz
2ec84c2fb4 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-27 13:01:37 -05:00
dev747368
d7722f878b GP-5312 fix NPE when logging message about unsupported elf compression
(Closes #7403)
2025-01-27 12:59:11 -05:00
Ryan Kurtz
7b7fff095b Merge remote-tracking branch 'origin/GP-5313-dragonmacher-escape-fix-2'
into Ghidra_11.3 (#7241)
2025-01-27 12:57:06 -05:00
Ryan Kurtz
6b24c09ea5 Merge remote-tracking branch 'origin/GP-5300_James_source_map_integration_improvements--SQUASHED' into Ghidra_11.3 2025-01-27 12:54:44 -05:00
Ryan Kurtz
b1370e1368 Merge remote-tracking branch 'origin/GP-5047-dragonmacher-dt-preview-fix' 2025-01-27 12:51:13 -05:00
Ryan Kurtz
5e8f059b7e Merge remote-tracking branch 'origin/GP-0_Dan_fixMemEditorCleanup' 2025-01-27 12:48:21 -05:00
James
0f47f411f0 GP-5300 changes related to viewing source files 2025-01-27 12:43:53 -05:00
Dan
11a9541417 GP-0 (rel #7413): Clean up LiveMemoryHandler on tool closure. 2025-01-27 17:28:40 +00:00
Ryan Kurtz
21893b10f6 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-27 10:23:27 -05:00
Ryan Kurtz
749caaf524 GP-0: Upping gradle wrapper to 8.12.1 2025-01-27 10:19:48 -05:00
Ryan Kurtz
7468e5f5f4 GP-0: Fixing some javadoc 2025-01-27 10:03:23 -05:00
Ryan Kurtz
44fc352b9a Merge branch 'GP-0_ryanmkurtz_PR-7414_hippietrail_mirrors-apostrophe' 2025-01-27 06:33:07 -05:00
Ryan Kurtz
f8476cb82e GP-0: Certify 2025-01-27 06:31:07 -05:00
Ryan Kurtz
ffe3a46892 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-27 06:17:07 -05:00
Ryan Kurtz
8bc682537f Merge remote-tracking branch 'origin/GP-5025_CParser_HashtagError' into
Ghidra_11.3 (Closes #7001)
2025-01-27 06:05:00 -05:00
emteere
4ca5007bd0 GP-5025_emteere Tuned comparing of Enums and pathnames in GDT's 2025-01-26 18:28:20 +00:00
dragonmacher
4432329479 GP-5313 - Fixed the Escape key not working inside of cell editors when
it is also bound to a global action
2025-01-25 11:15:27 -05:00
hippietrail
41c69f58af "Mirror" seems to be a verb rather than the owner of the interface 2025-01-25 13:33:05 +08:00
dragonmacher
ed88e0feb5 GP-5047 - Updated the preview pane to correctly use html when first
shown
2025-01-24 19:11:12 -05:00
Ryan Kurtz
383c0ed20c Merge remote-tracking branch 'origin/GP-4151_ghidragon_fixing_wizard--SQUASHED' 2025-01-24 17:46:26 -05:00
Ryan Kurtz
d4249c470e Merge remote-tracking branch 'origin/GP-0-dragonmacher-screenshot-fix-1-24-25' 2025-01-24 17:45:42 -05:00
ghidragon
32bf68b8f3 GP-4151 fixing wizard pattern to better handle expensive checks between panels. 2025-01-24 17:31:03 -05:00
dragonmacher
7679fed7a2 Fix for screenshot user name 2025-01-24 17:28:46 -05:00
Ryan Kurtz
06a5691a0c Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-24 13:40:58 -05:00
Ryan Kurtz
1dfad28eee Merge remote-tracking branch 'origin/GP-5296_function_graph_layout_help--SQUASHED' into Ghidra_11.3 2025-01-24 13:35:57 -05:00
ghidragon
a9f8fc7c26 GP-5296 added help links for function graph layout actions 2025-01-24 11:31:19 -05:00
Ryan Kurtz
ff5ef9347e Merge branch 'GP-0_ryanmkurtz_PR-7399_gtackett_OMF51_objectmarkup'
(Closes #7399)
2025-01-24 06:04:45 -05:00
Ryan Kurtz
d08c215029 GP-0: Formatting 2025-01-24 06:03:47 -05:00
gtackett
047f006c55 Update Omf51RecordTypes.java
Added several more Keil-specific record formats and changed naming
scheme for Keil-specifics.
Update Omf51RecordTypes.java

Change "LibModName" to "LibModNames" (record is a sequence of module
names, not a single module name)
Update Omf51RecordFactory.java

Change "LibModName" to "LibModNames" (record is a sequence of module
names)
Update Omf51RecordTypes.java

Restored accidentally deleted "getRecordName", grouped all new record
types together.
Update Omf51RecordTypes.java

Make all the Keil-specific symbolic names start with "Keil"
Update Omf51RecordTypes.java

Fixed typo/accidental change of case.
2025-01-24 05:59:25 -05:00
Ryan Kurtz
278b6558bc Merge remote-tracking branch 'origin/GP-5256_ModelRuleExt' 2025-01-24 05:46:04 -05:00
Ryan Kurtz
a3a727272f Merge remote-tracking branch 'origin/GP-5307_ryanmkurtz_tlb' 2025-01-24 05:44:26 -05:00
Ryan Kurtz
cb9098e382 Merge remote-tracking branch 'origin/GP-5272-dragonmacher-comment-fix--SQUASHED' into Ghidra_11.3 2025-01-24 05:38:43 -05:00
dragonmacher
8b1829d663 GP-5272 - Added a check for Swing thread to CommentUtils to prevent issues in headless 2025-01-23 19:40:40 -05:00
caheckman
00f9789116 GP-5256 ExtraStack, sizes attribute, merge join sequence 2025-01-24 00:05:14 +00:00
emteere
4a321dda2a GP-5025 Fixing issue with <> in comments on an include line 2025-01-23 22:08:57 +00:00
ghidra1
acbda8b076 Merge remote-tracking branch 'origin/GP-2614_d-millar_warn_on_mismatch--SQUASHED' 2025-01-23 16:23:48 -05:00
ghidra1
92640122b6 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-23 16:19:44 -05:00
ghidra1
ef8c5b677d Merge remote-tracking branch 'origin/GP-5295_ghidra1_DecompilerHighCodeSymbolStorage' into Ghidra_11.3 2025-01-23 16:18:54 -05:00
d-millar
fdf1c04e2c GP-2614: from review
GP-2614: minor fix
2025-01-23 15:59:00 -05:00
Ryan Kurtz
ff290dcefc GP-5307: Looking for dbgmodel.tlb in dependencies directory 2025-01-23 13:47:24 -05:00
Ryan Kurtz
6d65367390 Merge remote-tracking branch 'origin/GP-5270_d-millar_eng_options--SQUASHED' 2025-01-23 11:57:35 -05:00
d-millar
0b13f8de50 GP-5270: post-review
GP-5720: engine options
GP-5720: engine options
2025-01-23 11:47:51 -05:00
Ryan Kurtz
f96731be7f Merge remote-tracking branch 'origin/GP-5285_Dan_testArmThumbSkip' 2025-01-23 11:31:14 -05:00
Ryan Kurtz
ac617a796b Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-01-23-25' 2025-01-23 10:46:55 -05:00
dragonmacher
d9b2861d0e Test fix 2025-01-23 10:43:33 -05:00
ghidorahrex
48ae03833e GP-5299: Fixed pop instruction macros 2025-01-23 14:58:46 +00:00
ghidra1
4d546d8be9 Merge branch 'Ghidra_11.3' 2025-01-23 09:09:21 -05:00
ghidra1
58c4489973 GP-0 corrected NPE regression in ProgramDB 2025-01-23 09:08:14 -05:00
emteere
553d7103b7 GP-5025 Fix for comment parsing and commenting out of #ifdefed out lines 2025-01-22 22:22:05 +00:00
emteere
40603ee962 GP-5025 Throw error when parsing #error during Cparsing, various bug
fixes including comment parsing, cparser/preprocessing parse error
switch, and L'\n' wide char parsing in pre-processor
2025-01-22 22:21:59 +00:00
Ryan Kurtz
7a37920a21 Merge remote-tracking branch 'origin/GP-5274_ghizard_DefaultCompositeMember_improve_align_add_nopack_option--SQUASHED' 2025-01-22 13:54:35 -05:00
Ryan Kurtz
56960ff779 Merge remote-tracking branch
'origin/GP-5294_d-millar_fix_for_latest_pybag--SQUASHED' (Closes #7397)
2025-01-22 13:53:05 -05:00
Ryan Kurtz
f1f8827878 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-22 13:51:58 -05:00
ghizard
47eeb8b256 GP-5274 - PDB DefaultCompositeMember - improve alignment, add nopack option 2025-01-22 13:39:05 -05:00
Ryan Kurtz
0844ff6cca Merge remote-tracking branch 'origin/GP-4660_ghidorahrex_avx_512_writemask_fix' into Ghidra_11.3 2025-01-22 13:29:59 -05:00
ghidorahrex
0d65798f10 GP-4660: Added writemask pcode for most AVX-512 instructions 2025-01-22 18:28:25 +00:00
d-millar
670b2841ae GP-5294: better still
GP-5294: latest pybag uses py-win32more
2025-01-22 13:28:20 -05:00
Ryan Kurtz
c49f60366b Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-22 13:21:54 -05:00
Ryan Kurtz
afe96c0309 Merge remote-tracking branch 'origin/GP-5205_ghidra1_ProgramUserDataIssues' into Ghidra_11.3 2025-01-22 13:17:46 -05:00
Ryan Kurtz
d27a9c0bd0 Merge remote-tracking branch
'origin/GP-5288_Dan_PR-7195_plucia-mitre_patch-4' into Ghidra_11.3
(Closes #7195)
2025-01-22 13:16:04 -05:00
Ryan Kurtz
2e0843ef76 Merge remote-tracking branch 'origin/GP-5292_PDB_U_source_lines_AddressOutOfBoundsException--SQUASHED' into Ghidra_11.3 2025-01-22 12:05:05 -05:00
ghidra1
f68246ec17 GP-5295 Refactor HighCodeSymbol instantiation for consistency and
correct use of improperly sized VariableStorage
2025-01-22 11:58:51 -05:00
ghizard
879925a5c4 gp-5292 - PDB U - Source Lines - AddressOutOfBoundsException 2025-01-22 11:52:41 -05:00
Dan
836272b909 GP-5285: Add test showing it's not a problem in new stuff. 2025-01-22 16:08:48 +00:00
Ryan Kurtz
9aa638f887 GP-0: Updating What's New 2025-01-22 11:05:16 -05:00
Ryan Kurtz
4db0ccc8ec Merge remote-tracking branch
'origin/GP-3858-dragonmacher-console-find--SQUASHED'
(Closes #2567, #7136)
2025-01-22 09:09:08 -05:00
Dan
b6b609cfac GP-5288: Refactor, format/organize, and certify.
Closes #7195
2025-01-22 13:55:26 +00:00
Peter Lucia
69292c546f Fix assembling instructions with unknown/don't care context bits
Without this change, if unspecified context bits are provided to the assembler they are defaulted to 0 and the resulting context is used to filter for valid assembly instructions. After this change unspecified bits are kept as unspecified through the assembly process possibly providing more valid assembly results.
2025-01-22 13:55:26 +00:00
Ryan Kurtz
65a284a604 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-22 08:51:58 -05:00
Ryan Kurtz
9d848017cc Merge remote-tracking branch
'origin/GP-5289-dragonmacher-column-filter-dialog-fix-2' into
Ghidra_11.3 (Closes #7175)
2025-01-22 08:47:14 -05:00
Ryan Kurtz
da2067c3f7 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-01-22-1' into Ghidra_11.3 2025-01-22 08:45:24 -05:00
Dan
15c0ff7099 GP-0: (lldb) Remove duplicative refresh_breakpoints and its test. 2025-01-22 13:14:20 +00:00
dragonmacher
2208c6ef86 GP-3858 - Console Find - Added a find feature the the Console providers 2025-01-21 16:43:07 -05:00
Ryan Kurtz
ddc5b6d330 Merge branch 'GP-5293_ryanmkurtz_omf-strings' 2025-01-21 13:23:24 -05:00
Ryan Kurtz
0f3f6095d3 GP-5293: Using pascal strings in OMF 2025-01-21 13:22:40 -05:00
Ryan Kurtz
421cb0a691 Merge remote-tracking branch
'origin/GP-5267_ghidracadabra_PR-6520_Sleigh-InSPECtor_x86_sspd'
(Closes #6520)
2025-01-21 13:13:54 -05:00
Ryan Kurtz
f94a76e875 Merge branch 'GP-5291_ryanmkurtz_dyld' (Closes #7396) 2025-01-21 13:12:22 -05:00
Ryan Kurtz
2fc7ffc474 GP-5291: Adding getter methods for fields in DyldCacheHeader. Parsing
new "tpro mapping" fields.
2025-01-21 13:10:39 -05:00
Ryan Kurtz
34e38c3d48 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-21 10:18:58 -05:00
d-millar
f5354381cf GP-0: fix for post-5271 errors 2025-01-21 10:16:08 -05:00
Ryan Kurtz
b1f5cd452a Merge branch 'GP-0_ryanmkurtz_PR-7394_hippietrail_input-spelling' 2025-01-21 07:25:02 -05:00
Ryan Kurtz
b73cdad6fe GP-0: Certify 2025-01-21 07:23:40 -05:00
Ryan Kurtz
df992d04a1 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-21 07:13:18 -05:00
Ryan Kurtz
ef103c8754 Merge remote-tracking branch
'origin/GP-5181_ghidorahrex_ARM_VFPv2_missing_fix' into Ghidra_11.3
(Closes #7259)
2025-01-21 07:10:05 -05:00
hippietrail
138133c95e correct past & continuous forms of "to input" 2025-01-20 23:12:12 +08:00
ghidra1
f21608b4bd GP-5205 corrected ProgramUserData issues related to language version
changes and incompatibily.
2025-01-17 16:49:13 -05:00
dragonmacher
5375b6ea3a GP-5289 - Fixed dispose bug in column filter dialog 2025-01-17 16:27:45 -05:00
Ryan Kurtz
bb4853e414 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-17 14:00:26 -05:00
Ryan Kurtz
0084e66f27 Merge remote-tracking branch 'origin/GP-5279_ghintern_programtree_npe--SQUASHED' into Ghidra_11.3 2025-01-17 13:56:17 -05:00
James
c7be8e9629 GP-5267 updated language version 2025-01-17 18:21:07 +00:00
Sleigh-InSPECtor
1574864072 x86: Fix overlap issue with INCSS/RDSSP 2025-01-17 18:13:59 +00:00
ghintern
683b7054f5 GP-5279: Fix null pointer exception in program tree save/restore 2025-01-17 16:18:42 +00:00
Ryan Kurtz
c5d7728ed3 Merge branch 'GP-5282_ryanmkurtz_make-postgres--SQUASHED' (Closes #7287) 2025-01-17 10:30:47 -05:00
Ryan Kurtz
483dee2889 GP-5282: Adding linux_arm_64 and mac_arm_64 support to make-postgres.sh 2025-01-17 10:30:09 -05:00
Ryan Kurtz
5ca27e36c9 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-17 08:16:33 -05:00
Ryan Kurtz
067ba3e19d Merge remote-tracking branch 'origin/GP-5271_Dan_fixTraceRmiMethodSelection--SQUASHED' into Ghidra_11.3 2025-01-17 08:13:48 -05:00
Dan
2a41c8fe6b GP-5271: Fix break/watchpoints with lldb. Many framework changes. 2025-01-17 07:58:01 -05:00
ghidorahrex
e6b326700c GP-4731: Fixed decode for mrs 2025-01-16 20:13:39 +00:00
Ryan Kurtz
d4db37b425 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-16 09:24:14 -05:00
Ryan Kurtz
a0d038303f GP-0: What's New updates 2025-01-16 09:22:51 -05:00
Ryan Kurtz
8a716001ea Merge remote-tracking branch 'origin/GP-5257_ryanmkurtz_gradle-warnings' 2025-01-16 09:01:26 -05:00
Ryan Kurtz
6b148e2cf9 Merge remote-tracking branch 'origin/GP-5238_d-millar_ctadl_mods--SQUASHED' 2025-01-16 06:11:42 -05:00
Ryan Kurtz
cb71c97740 Merge remote-tracking branch 'origin/GP-5203_d-millar_deepfreeze' 2025-01-16 06:10:35 -05:00
Ryan Kurtz
466ba95857 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-16 06:00:06 -05:00
Ryan Kurtz
624be69a75 Merge branch 'GP-5266_Dan_fixLocationTracking' into Ghidra_11.3 2025-01-16 05:55:22 -05:00
Dan
5d71f073f4 GP-5266: Only track on user click or address change. 2025-01-16 05:54:53 -05:00
Ryan Kurtz
2a628178b3 Merge remote-tracking branch 'origin/GP-5263_Dan_updateDebuggerTutorial--SQUASHED' into Ghidra_11.3 2025-01-16 05:52:24 -05:00
d-millar
dc1b9ae900 GP-5238: from review
GP-5238: adding a sanity check
GP-5238: allow switching between frames
GP-5238: comments
GP-5238: fix for hv matches
GP-5238: chooser for cutsom query
GP-5238: delta working?
GP-5238: first pass at delta
GP-5238: oops
GP-5238: key bindings
GP-5238: better options + docs
2025-01-15 16:59:51 -05:00
Dan
dc4b0692a9 GP-5263: Update Debugger GhidraClass 2025-01-15 11:47:36 -05:00
d-millar
6cf1f71204 GP-5203: strip DF refs 2025-01-15 02:10:52 +00:00
Ryan Kurtz
73b74cced5 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-14 14:01:51 -05:00
d-millar
3bfcb8695f GP-5261: missing imageOpt 2025-01-14 13:59:39 -05:00
Ryan Kurtz
2589aae3a4 Merge remote-tracking branch 'origin/GP-5262_AutoKilledByCall' 2025-01-14 13:33:34 -05:00
Ryan Kurtz
247e8eada5 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-14 13:32:45 -05:00
Ryan Kurtz
8c56eb6d00 GP-0: JPype 1.5.1 windows issue workaround 2025-01-14 13:31:20 -05:00
Ryan Kurtz
2d10fa1be2 Merge remote-tracking branch
'origin/GP-5252_James_BSimFeatureVisualizer_NPE' into Ghidra_11.3
(Closes #7311)
2025-01-14 13:26:21 -05:00
caheckman
eba4fc7803 GP-5262 Adjustments to auto killbycall attribute 2025-01-14 16:49:36 +00:00
James
a99d2113f0 GP-5252 corrected NPE in BSimFeatureVisualizer 2025-01-14 14:38:59 +00:00
Ryan Kurtz
0b670e1a25 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-14 09:25:48 -05:00
Ryan Kurtz
f9a6b575de GP-0: importing typing into PyGhidraBasics.py 2025-01-14 09:17:56 -05:00
Ryan Kurtz
9eedabdbe4 GP-0: Fixing test 2025-01-14 08:04:15 -05:00
Ryan Kurtz
79de6c6bf9 GP-0: Adding Troubleshooting section to DevGuide 2025-01-14 07:46:43 -05:00
Ryan Kurtz
4c532fa90b Merge remote-tracking branch
'origin/GP-5258-dragonmacher-symbol-tree-filter-bug--SQUASHED'
(Closes #7365)
2025-01-14 05:56:44 -05:00
dragonmacher
9ae412a0b3 GP-5258 - Fixed a Symbol Tree bug that caused an empty tree when showing the tree with a filter applied 2025-01-13 16:41:36 -05:00
Ryan Kurtz
2138250644 Merge remote-tracking branch 'origin/GP-5257_ryanmkurtz_gradle-warnings' 2025-01-13 16:00:05 -05:00
Ryan Kurtz
44fb13b292 GP-5257: Fixing Gradle warnings 2025-01-13 13:52:50 -05:00
Ryan Kurtz
1a693c40b9 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-13 13:40:51 -05:00
dragonmacher
31e926fd44 Fixed NPE in byte viewer when switching themes 2025-01-13 13:34:42 -05:00
Ryan Kurtz
a41fbeda2f GP-5259: Removing FileBytesProvider check from
AbstractLibrarySupportLoader
2025-01-13 13:15:51 -05:00
Ryan Kurtz
eaa2a5c6b3 Merge remote-tracking branch 'origin/GP-0_d-millar_test_failures_pt2' 2025-01-13 05:45:37 -05:00
d-millar
c4c88e71be GP-0: drgn test failures revisited 2025-01-11 16:47:55 +00:00
Ryan Kurtz
a6256817d4 Merge remote-tracking branch 'origin/GP-5240_SplitPieceLate'
(Closes #7277)
2025-01-10 18:01:58 -05:00
Ryan Kurtz
0f569fbf57 Merge remote-tracking branch 'origin/GP-0_d-millar_drgn_test_failures' 2025-01-10 15:54:05 -05:00
d-millar
fe71611803 GP-0: from review 2025-01-10 20:50:09 +00:00
d-millar
4fd092bb73 GP-0: drgn test failures 2025-01-10 19:20:55 +00:00
ghidra1
74d7fa50ef Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 12:34:13 -05:00
ghidra1
2f8217af10 Merge remote-tracking branch 'origin/GP-4913_GP-5198_ghidra1_FunctionEditor--SQUASHED' into Ghidra_11.3 2025-01-10 12:32:43 -05:00
ghidra1
b8afbf7d8b GP-4913 / GP-5198 Correct Function StorageEditor issues 2025-01-10 12:31:29 -05:00
Ryan Kurtz
7a288b3b8c Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 11:24:29 -05:00
dragonmacher
ae35e4f899 GP-0-dragonmacher-test-fixes-1-19-25 2025-01-10 11:19:29 -05:00
Ryan Kurtz
a56c9b3ec6 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 11:03:06 -05:00
Andras Gemes
984653ec9d GP-5250: BSim: Replace updaterepo with generateupdates in docs
(Closes #7293)
2025-01-10 10:59:16 -05:00
Ryan Kurtz
d87b514baa Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 09:49:55 -05:00
Ryan Kurtz
1e8f51bc0d GP-5249: Fixing CFStringAnalyzer check #7361 2025-01-10 09:45:04 -05:00
Ryan Kurtz
9ecfbd9199 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 08:41:37 -05:00
Dan
127aa62262 GP-0: Remove experimental JitLogLoader. 2025-01-10 08:32:21 -05:00
ghidra1
6583ef3f1a Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 08:17:49 -05:00
ghidra1
2c4882c16a Merge remote-tracking branch 'origin/GP-5248_dev747368_fix_ccname_issues' into Ghidra_11.3 2025-01-10 08:15:22 -05:00
Ryan Kurtz
fdd15b7635 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-10 08:05:06 -05:00
Ryan Kurtz
8771b870d0 GP-5249: Objective-C analyzers are now enabled for extracted dyld
components (#Closes #7361)
2025-01-10 08:01:52 -05:00
Ryan Kurtz
f5af708e91 GP-0: Initial What's New update and some markdown-to-html link
improvements
2025-01-10 07:08:12 -05:00
dev747368
05506d5210 GP-5248 fix calling convention checking and handling 2025-01-09 00:28:58 +00:00
Ryan Kurtz
0e95068223 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-08 19:10:00 -05:00
Ryan Kurtz
0d3451c0c0 GP-0: Fixing PyGhidra typo 2025-01-08 19:06:13 -05:00
dragonmacher
0d198a9944 GP-1: Fixed Escape action prompting when using a non-modal dialog in a
window
with a single component provider
2025-01-08 19:04:56 -05:00
caheckman
53d8d182e3 GP-5240 Simplify late expressions where a SUBPIECE is taken of a PIECE 2025-01-08 23:04:23 +00:00
Ryan Kurtz
502eea1c22 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-08 17:10:31 -05:00
Ryan Kurtz
52a1550eff Merge remote-tracking branch 'origin/GP-326_d-millar_how_to_add_a_debugger--SQUASHED' 2025-01-08 14:56:18 -05:00
d-millar
d5df1c16bb GP-326: never say die
GP-326: recompiling to htmnl
GP-326: recompiling to htmnl
GP-326: last?
GP-326: getting there
GP-326: roll along
GP-326: rolling along
GP-326: test fix
GP-326: miscellaneous post-review fixes
GP-326: complicated stuff
GP-326: more simple stuff
GP-326: navhead fix
GP-326: better docs
GP-326: html for md
GP-326: html for md
GP-326: tutorial edits
GP-326: tutorial edits
GP-326: re-arranging docs
GP-326: from review
GP-326: adding a debugger
GP-326: docs
GP-326: using TestResources - tests pass
GP-326: working tests
GP-326: most cmd/meth tests working
GP-326: cmd tests pass
GP-326: passes thru putmem
GP-326: one test running
GP-326: better startup logic
GP-326: first pass tests
GP-326: misc cleanup
GP-326: cleaner startup
GP-326: cleanup
GP-326: fixes for crash dump
GP-326: util cleanup
GP-326: objects cont.
GP-326: first pass at objects
GP-326: some cleanup
GP-326: regions
GP-326: sections
GP-326: modules
GP-326: alt launchers
GP-326: symbols
GP-326: memory
GP-326: stack frame - regs + locals
GP-326: frames
GP-326: threads
GP-326: better start sequence
GP-326: working launcher
GP-326: util.version
GP-326: arch
2025-01-08 13:16:34 -05:00
Dan
cbc614c4cd GP-0: Fix rare race condition causing NPE. 2025-01-08 12:35:39 -05:00
Ryan Kurtz
989eb74bf4 GP-0: Bumping master to 11.4 2025-01-07 20:30:58 -05:00
Ryan Kurtz
12551554c1 Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-07 20:29:12 -05:00
Ryan Kurtz
6c0336443d Merge remote-tracking branch 'origin/GP-5244_ghidra1_FileBytesProviderBugs' into Ghidra_11.3 2025-01-07 20:23:58 -05:00
Ryan Kurtz
8e7f0034e5 Merge remote-tracking branch 'origin/GP-5221_dwarf_debug_relative_paths--SQUASHED' into Ghidra_11.3 2025-01-07 20:20:19 -05:00
ghidra1
409efdfaee Merge remote-tracking branch 'origin/Ghidra_11.3' 2025-01-07 17:29:26 -05:00
ghidra1
199cd0202e GP-5244 Corrected FileBytesProvider bugs 2025-01-07 17:21:05 -05:00
ghidra1
01a4703198 GP-0 Corrected minor issue with BitFieldPlacementComponent 2025-01-07 16:28:25 -05:00
Ryan Kurtz
cfffcf0c13 GP-0: More PyGhidra doc updates 2025-01-06 17:47:26 -05:00
James
60a7d049b1 GP-5221 handle relative paths in dwarf source info 2025-01-06 16:54:41 -05:00
Ryan Kurtz
991a784571 Merge remote-tracking branch 'origin/GP-5239_Dan_updateDebuggerVersions' into Ghidra_11.3 2025-01-06 16:38:49 -05:00
Dan
b0998ae24c GP-5239: Update debug agent versions to 11.3 2025-01-06 16:32:58 -05:00
Ryan Kurtz
791789422a Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-01-06-2' 2025-01-06 13:23:46 -05:00
Dan
dc385fd398 GP-0: Fix tests (frame display. wrap-around check) 2025-01-06 13:11:34 -05:00
Ryan Kurtz
2af9fbc6a3 GP-0: Fixing typo in pyghidra_launcher.py 2025-01-06 12:30:32 -05:00
Ryan Kurtz
895e10871f Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-01-06-1' 2025-01-06 12:05:32 -05:00
Dan
ea95c146b5 GP-0: Fix some tests (mock.slaspec, register count) 2025-01-06 12:03:24 -05:00
Ryan Kurtz
f6e70377da Merge remote-tracking branch
'origin/GP-5237_ghidragon_handle_remove_quotes_from_auto_comment_that_start_with_equals_chars'
(Closes #7352)
2025-01-06 11:53:28 -05:00
ghidragon
83cd217e31 GP-5237 extended feature that strips quotes from string transferables to
also look for strings that start with '= "' for autocomment strings
2025-01-06 11:47:39 -05:00
Ryan Kurtz
acf5ac688a Merge remote-tracking branch 'origin/GP-0_Dan_fixJavadocs-2025-01-06-1' 2025-01-06 10:10:38 -05:00
Dan
afa673fed0 GP-0: Fix javadoc warnings. 2025-01-06 10:08:48 -05:00
Ryan Kurtz
51a236b36d GP-0: Test fix 2025-01-05 18:51:11 -05:00
Ryan Kurtz
993b3ba1f6 GP-5236: "gradle prepdev" no longer sets up venv. Use "gradle
prepPyGhidra" instead.
2025-01-05 17:12:28 -05:00
Ryan Kurtz
c9ad0ebf6c GP-0: Fixing test build 2025-01-05 16:37:18 -05:00
Ryan Kurtz
cfda6bada0 Merge remote-tracking branch 'origin/GP-0_Dan_fixNPEsOnTargetService' 2025-01-03 20:05:37 -05:00
Ryan Kurtz
9be3282393 Merge remote-tracking branch 'origin/GP-5228_James_show_num_omitted_entries--SQUASHED' 2025-01-03 19:59:27 -05:00
Ryan Kurtz
7feba4ae82 Merge remote-tracking branch 'origin/GP-5232_Dan_fixGdbRegsOnWindows64' 2025-01-03 19:58:19 -05:00
Ryan Kurtz
b856444282 Merge remote-tracking branch 'origin/GP-5230_Dan_fixGdbRegEndian' 2025-01-03 19:57:22 -05:00
Ryan Kurtz
11ac891e9c Merge remote-tracking branch 'origin/GP-5229_Dan_fixTreeRegValUpdate' 2025-01-03 19:56:11 -05:00
James
55c8503540 GP-5228 show number of omitted source map entries in listing field 2025-01-03 16:43:55 -05:00
Dan
84e9578e67 GP-0: Fix NPEs when closing the Debugger tool. 2025-01-03 15:58:43 -05:00
Dan
df98c894c9 GP-5232: Fix register display for gdb with win-x64 targets. 2025-01-03 15:39:38 -05:00
Dan
e41c749032 GP-5230: Fix gdb register endian. Delete removed keys. 2025-01-03 14:39:57 -05:00
Dan
b5d8885567 GP-5229: Add failing test. Fix tree attribute update. 2025-01-03 13:43:34 -05:00
Ryan Kurtz
5e390abb1a Merge remote-tracking branch 'origin/GP-5161_ghidra1_GhidraServerCME--SQUASHED' 2025-01-03 13:32:43 -05:00
Ryan Kurtz
1831a891a9 GP-0: Excluding unneeded guava transitive dependencies.
They were ending up in the Ghidra Server classpath.frag and producing
warnings.
2025-01-03 13:31:49 -05:00
ghidra1
5f338723b6 GP-5161 Corrected Ghidra Server CME, document updates, and launch script improvements to control Java home determination. 2025-01-03 13:19:43 -05:00
Ryan Kurtz
dad6d75aa0 Merge remote-tracking branch 'origin/GP-5213_Dan_fixGdbEditRegisters--SQUASHED' 2025-01-03 12:58:06 -05:00
Dan
e0ccc4883b GP-5213: Fix editing registers presented as primitives. 2025-01-03 12:55:06 -05:00
Ryan Kurtz
18ef5ceea3 Merge remote-tracking branch 'origin/GP-0_ghidragon_fixing_junit_failures_related_to_AddressEvaluator' 2025-01-03 11:38:31 -05:00
ghidragon
1da94523bf GP-0 fixing junits related to AddressEvaluator changes 2025-01-03 11:36:12 -05:00
Ryan Kurtz
0a32202e89 Merge remote-tracking branch 'origin/GP-0_Dan_updateDevGuideSince-GP-1978' 2025-01-03 11:03:19 -05:00
Dan
7fa605cb22 GP-0: Update DevGuide.md since GP-1978 2025-01-03 10:54:27 -05:00
Ryan Kurtz
70b05bc4a9 Merge remote-tracking branch 'origin/GP-4643_Dan_jitPcodeEmu-RB-2025-01-03--SQUASHED' 2025-01-03 10:32:48 -05:00
Dan
a8fae1fe5b GP-4643: Add a JIT-accelerated p-code emulator (API/scripting only) 2025-01-03 10:27:38 -05:00
Ryan Kurtz
a1f243ebba GP-0: Some README.md and DevGuide.md updates for PyGhidra and VSCode 2025-01-03 09:03:23 -05:00
Ryan Kurtz
20285e267d GP-5226: Fixing Gradle 8.12 build issue. Gradle wrapper now uses Gradle
8.12.
2025-01-02 16:28:02 -05:00
Ryan Kurtz
2fe077cbf1 Merge remote-tracking branch 'origin/GP-5220b_Dan_updateDex2JarAndAsm--SQUASHED' 2025-01-02 16:06:37 -05:00
Dan
586ae8f706 GP-5220: Update to dex2jar 2.4.24 and asm-9.7.1 2025-01-02 16:05:42 -05:00
Ryan Kurtz
d5e1f76999 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2025-01-02-1' 2025-01-02 14:10:56 -05:00
Dan
1094be1463 GP-0: Fix tests. 2025-01-02 14:08:43 -05:00
Ryan Kurtz
f4614d9d2d GP-0: Updating Python supported version references 2025-01-02 14:04:01 -05:00
Ryan Kurtz
66ace1a8a8 Merge branch 'GP-0_ryanmkurtz_PR-7324_xiaoyinl_python-ver' 2025-01-02 04:42:14 -05:00
Ryan Kurtz
d65fd1f9f9 Merge remote-tracking branch 'origin/GP-5225_dev747368_fix_fail_to_close_file.zip' 2025-01-02 03:57:38 -05:00
Ryan Kurtz
98170e5b62 Merge remote-tracking branch 'origin/5223_dragonmacher_PR-7312_gemesa_bsim-visualizer-dark-mode' 2025-01-02 03:54:24 -05:00
Ryan Kurtz
cf1476ecd6 Merge remote-tracking branch 'origin/GP-1-dragonmacher-fixed-flatlaf-table-header-hover-painting' 2025-01-02 03:52:52 -05:00
Ryan Kurtz
ac61667afb Merge remote-tracking branch 'origin/GP-5217_James_source_map_vscode_script--SQUASHED' 2025-01-02 03:51:33 -05:00
Ryan Kurtz
5b4b0558ab Merge remote-tracking branch 'origin/GP-4196_dev747368_golang_sourcefile' 2025-01-02 03:49:59 -05:00
Ryan Kurtz
aeb3f04ac3 Merge remote-tracking branch 'origin/GP-5218_ghizard_PDB_source_lines_task_monitor' 2025-01-02 03:48:50 -05:00
Ryan Kurtz
be7e589bbd Merge remote-tracking branch 'origin/GP-5219_ghizard_CPP_PDB_improve_uniqueness_mech_for_ClassFieldAttributes' 2025-01-02 03:47:35 -05:00
Ryan Kurtz
4475cedf18 Merge remote-tracking branch 'origin/GP-5196_ghidragon_address_expression_and_symbol_names_in_address_input--SQUASHED' 2025-01-02 03:45:41 -05:00
dev747368
01984fa136 GP-5225 fix "FAIL TO CLOSE file.zip" warning 2024-12-31 21:49:22 +00:00
ghidragon
b1d257150c GP-5196 Adding support for expressions and symbol names in address fields 2024-12-31 16:00:39 -05:00
ghidra1
067ddfe2e0 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2024-12-31-1' 2024-12-31 12:55:18 -05:00
Dan
84a7abb3ff GP-0: Test fixes. 2024-12-31 10:34:15 -05:00
ghizard
d7f43f0854 GP-5219 - C++/PDB improve uniqueness mechanism for ClassFieldAttributes 2024-12-30 19:56:40 -05:00
dragonmacher
4a6b15137f Fixed FlatLaf table header painting on hover 2024-12-30 16:08:27 -05:00
ghidra1
860c754484 Merge remote-tracking branch 'origin/GP-0_Dan_testFixes-2024-12-30-1' 2024-12-30 13:30:13 -05:00
Dan
7e8392843f GP-0: Test fixes 2024-12-30 12:37:07 -05:00
James
22f51ed5af GP-5217 added OpenSourceFileAtLineInVSCodeScript and OpenSourceFileAtLineInEclipseScript 2024-12-30 09:26:00 -05:00
ghizard
f38bfdd9ce GP-5218 Add task monitor to PDB U source lines importation 2024-12-29 12:58:33 -05:00
xiaoyinl
4856f59fbf
Update supported Python versions in README
Support for Python 3.13 is added in 7c4d91f568, but README.md was not updated.
2024-12-28 21:03:06 +08:00
ghidragon
1b27a76de2 Merge remote-tracking branch 'origin/GP-0-dragonmacher-help-fixes-12-27-24' 2024-12-27 18:50:29 -05:00
dev747368
b630c4010c GP-4196 add golang source file info 2024-12-27 22:22:00 +00:00
dragonmacher
a57b481cb4 Fixed bad help links 2024-12-27 16:31:01 -05:00
ghidra1
59ef363880 GP-5216 Corrected FunctionDefinitionDataType.setCallingConvention bug 2024-12-27 16:20:10 -05:00
Ryan Kurtz
a968e6701e Merge remote-tracking branch 'origin/GP-0_dev747368_fix_fs_lookup_namecomp_null_case' 2024-12-27 12:29:36 -05:00
dev747368
03bafd3426 GP-0 fix fs.lookup when namecomparator is null 2024-12-27 17:21:25 +00:00
Ryan Kurtz
2c9f7fcacf Merge remote-tracking branch 'origin/GP-5208_dev747368_use_filename_compare_for_lookups--SQUASHED' 2024-12-27 11:16:01 -05:00
dev747368
0b1398c5a8 GP-5208 improve library name lookups
Expose the nameComparator feature in Gfilesystems to allow
faster lookups of libraries (especially on windows where
isDirectory is 10x slower)
2024-12-27 10:37:35 -05:00
Ryan Kurtz
475179df37 Merge remote-tracking branch 'origin/GP-4870_dev747368_golang_1.23--SQUASHED' 2024-12-27 06:07:08 -05:00
dev747368
2860c29383 GP-4870 add support for golang 1.23
Also fix namespace issue for interface, slices, ptrs, arrays, etc.Remove GoFuncID enum as it mutates between versionsFix stack storage logic for DWARF variables.
2024-12-26 18:26:48 -05:00
Ryan Kurtz
15db47cab8 Merge remote-tracking branch 'origin/GP-5210_ryanmkurtz_jython' 2024-12-26 13:02:30 -05:00
Ryan Kurtz
898dce3527 GP-5210: Upgrading Jython to 2.7.4 2024-12-26 12:57:39 -05:00
dragonmacher
14527b015e Test fixes 2024-12-23 11:37:01 -05:00
Ryan Kurtz
76e4ac55c5 Merge remote-tracking branch 'origin/GP-5215_d-millar_dbgmodel_reg_update' 2024-12-23 05:58:16 -05:00
ghidra1
dacc9b226d GP-5216 Correct BSim signature apply bug 2024-12-21 09:32:49 -05:00
ghidra1
d3e34f97cc GP-5216 GenericCallingConvention fix 2024-12-21 08:56:31 -05:00
ghidra1
87666d830b Merge remote-tracking branch 'origin/GP-5216_ghidra1_BSimApplySignature'
(Closes #7310)
2024-12-20 18:43:34 -05:00
ghidra1
5925d3eb06 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-12-20-24' 2024-12-20 18:41:04 -05:00
ghidra1
747edbfc67 Merge remote-tracking branch 'origin/GP-1830_ghidra1_BSim_GSON' 2024-12-20 18:37:50 -05:00
ghidra1
ff2dab8b15 Merge remote-tracking branch 'origin/GP-5212_ghidra1_PostgresqlUpdate'
into patch (Closes #7084, Closes #6115)
2024-12-20 18:22:57 -05:00
ghidra1
787ac96f96 Merge remote-tracking branch 'origin/GP-1830_ghidra1_BSim_GSON' 2024-12-20 18:12:56 -05:00
ghidra1
593fd98e0d GP-1830 BSim migration to gson use. Corrected various bugs with BSim
elasticsearch use.
2024-12-20 17:58:49 -05:00
ghidra1
16eda3729a GP-5216 Correct calling convention name checks and BSim apply signature 2024-12-20 17:51:09 -05:00
d-millar
6ea0f5722e GP-5215: update RegView 2024-12-20 16:06:22 -05:00
dragonmacher
2bd15c1d9c Test fixes 2024-12-20 16:03:31 -05:00
Ryan Kurtz
237d0445b5 Merge remote-tracking branch 'origin/GP-5200_Dan_fixRegsTableUpdate' 2024-12-20 15:28:46 -05:00
Ryan Kurtz
b93aaac3a3 Merge remote-tracking branch
'origin/GP-5180_Dan_fixAutoReadInFFV--SQUASHED' (#7176)
2024-12-20 15:26:07 -05:00
Ryan Kurtz
473c16f1cb Merge remote-tracking branch 'origin/GP-5003_improveTerminalFonts--SQUASHED' 2024-12-20 15:21:29 -05:00
Andras Gemes
7bda056d64
BSim: Rework feature visualizer colors (dark theme) 2024-12-20 20:53:53 +01:00
Dan
71548dd8aa GP-5180: Fix auto memory read without regions (Force Full View) 2024-12-20 14:25:11 -05:00
Dan
0fde0dcbfe GP-5003: Add terminal font size actions. Improve configurability. 2024-12-20 14:23:40 -05:00
Dan
fa05ba710e GP-5200: Ensure regs table refreshed on obj-restored. 2024-12-20 13:57:46 -05:00
Ryan Kurtz
66a43cd6ed GP-5018: Some updated PyGhidra docs 2024-12-20 13:33:57 -05:00
Ryan Kurtz
7fbf64ea70 Merge remote-tracking branch 'origin/GP-5209_d-millar_lldb_kdp' 2024-12-20 11:43:35 -05:00
Ryan Kurtz
21e4331858 Merge remote-tracking branch 'origin/GP-4190_James_SourceFileTablePlugin--SQUASHED' 2024-12-20 11:42:07 -05:00
James
113943048e GP-4190 sourcefiletable plugin and path transformer 2024-12-20 11:34:40 -05:00
ghidra1
7cc781a59c GP-5212 Updated to postgresql server 15.10 and JDBC driver 42.7.3 2024-12-20 11:19:24 -05:00
Ryan Kurtz
f4f076c3a9 Merge branch 'GP-0_ryanmkurtz_PR-7307_gemesa_bsim-docs-category' 2024-12-20 10:39:09 -05:00
Ryan Kurtz
57400d8243 Merge branch 'GP-5138_ryanmkurtz_ghidradev' 2024-12-20 09:41:10 -05:00
Andras Gemes
125aa5a3cb
BSim: Add missing verb to docs 2024-12-20 15:40:20 +01:00
Ryan Kurtz
31ee251a5c GP-5138: GhidraDev/PyDev/PyGhidra integration 2024-12-20 09:34:41 -05:00
d-millar
13e6017dfc GP-5209: help edits 2024-12-20 14:00:58 +00:00
Ryan Kurtz
37ed090c3f Merge remote-tracking branch 'origin/GP-1-dragonmacher-action-owner-fix' 2024-12-20 08:42:56 -05:00
Ryan Kurtz
6fc6c51e2a Merge remote-tracking branch 'origin/GP-1-dragonmacher-table-service-accessibility' 2024-12-20 08:42:34 -05:00
Ryan Kurtz
20be68e315 Merge remote-tracking branch 'origin/GP-1-dragonmacher-context-bug-fix' 2024-12-20 08:42:12 -05:00
Ryan Kurtz
238c7f8ea4 Merge remote-tracking branch 'origin/GP-5005_Dan_endianOption' 2024-12-20 08:40:48 -05:00
d-millar
1785f4e121 GP-5209: kernel-mode 2024-12-19 22:16:12 +00:00
dragonmacher
b22574ea9c Fixes action owner usage 2024-12-19 16:15:45 -05:00
Dan
dd1a4e08ea GP-5005: WIP: Add OPT_ENDIAN to gdb launchers. 2024-12-19 15:40:17 -05:00
Ryan Kurtz
7c4d91f568 Merge remote-tracking branch 'origin/GP-5021_ryanmkurtz_python313'
(Closes #7141)
2024-12-19 13:28:13 -05:00
Ryan Kurtz
c0b542b672 Merge remote-tracking branch 'origin/GP-4968_ghizard_PDBUniversal_source_lines_final' 2024-12-19 13:19:25 -05:00
Ryan Kurtz
4d3b541d31 Merge remote-tracking branch 'origin/patch' 2024-12-19 13:18:28 -05:00
Ryan Kurtz
f67da58336 Merge remote-tracking branch 'origin/GP-5207_ghidra1_BSimElasticBugs' into patch 2024-12-19 11:15:11 -05:00
Ryan Kurtz
f7299e944d Merge remote-tracking branch 'origin/GP-0_Dan_fixDummyProc' 2024-12-19 10:48:21 -05:00
Dan
6f79a6f1db GP-0: Fix DummyProc (DebuggerTests) 2024-12-19 10:42:46 -05:00
Ryan Kurtz
8bb8886deb Merge remote-tracking branch 'origin/GP-0_Dan_fixTestConfig' 2024-12-19 10:21:01 -05:00
Dan
3a2bb64b0f GP-0: Fix DebuggerIntegrationTest/build.gradle. Tests still need work. 2024-12-19 10:13:10 -05:00
ghizard
a19571e718 GP-4968 - PDB U source lines 2024-12-19 10:11:27 -05:00
ghidra1
30a77f9aa4 GP-5207 Corrected various bugs related to BSim Elasticsearch 2024-12-19 09:39:54 -05:00
Ryan Kurtz
141e71600d Merge remote-tracking branch
'origin/GP-5115-dragonmacher-table-filter-toggle--SQUASHED' (#7136)
2024-12-19 06:34:35 -05:00
Ryan Kurtz
31964a182e GP-1978: Fixing build 2024-12-19 06:33:48 -05:00
dragonmacher
e2da1609d9 GP-5115 - Trees/Tables - Added actions to focus the filter and toggle filter visibility 2024-12-18 20:18:15 -05:00
dragonmacher
7aa170faf0 Table Service accessibility update 2024-12-18 19:59:44 -05:00
dragonmacher
9dae78e859 Fixed Call Tree Plugin action appearing in odd places 2024-12-18 18:03:30 -05:00
Ryan Kurtz
a8abf12ede Merge remote-tracking branch
'origin/GP-5027_update_flatlaf_to_latest_version--SQUASHED'
2024-12-18 14:22:42 -05:00
Ryan Kurtz
555f9a85ef Merge remote-tracking branch 'origin/GP-1978_Dan_torchFrameworkDebugging-pt3--SQUASHED' 2024-12-18 14:14:43 -05:00
Ryan Kurtz
a1550766f2 GP-0: Fixing pyghidra_launcher.py issue with Python 3.9 2024-12-18 14:13:04 -05:00
Dan
f5a93c3072 GP-1978: Delete Framework-Debugging. Merge needed parts into
TraceModeling.
2024-12-18 14:05:38 -05:00
ghidragon
54bd9374c9 GP-5097 updated flatlaf jar to 3.5.4 2024-12-18 13:07:09 -05:00
Ryan Kurtz
8dd0ea698a Merge remote-tracking branch 'origin/GP-5202_ryanmkurtz_last-import'
(Closes #7266)
2024-12-18 06:04:19 -05:00
Ryan Kurtz
8a170df554 Merge remote-tracking branch 'origin/GP-5184_PtrsubUndoLoop'
(Closes #7212)
2024-12-17 12:57:54 -05:00
Ryan Kurtz
1c902bc29c Merge remote-tracking branch 'origin/GP-0_corrected_diff_apply_failures' 2024-12-17 12:53:45 -05:00
James
18b1d9e6c6 GP-0 corrected additional diff apply failures 2024-12-17 17:52:27 +00:00
James
5a156112a0 GP-0 corrected diff apply failures 2024-12-17 17:12:06 +00:00
Ryan Kurtz
ae32625613 GP-5202: Saving last filesystem import location when opened via File ->
Import File
2024-12-17 12:11:10 -05:00
Ryan Kurtz
f0641fd72a Merge remote-tracking branch 'origin/GP-5185_d-millar_exdi--SQUASHED' 2024-12-17 11:39:03 -05:00
d-millar
84a0108256 GP-5185: from the review
GP-5185: don't revert
GP-5185: ModelQuery fixes
GP-5185: fix for ModelQuery
GP-5185: threads
GP-5185: attempt at threads
GP-5815: main containers working
GP-5185 certified
GP-5815: new logic ala Volatility
GP-5185: better print
GP-5185: first pass
2024-12-17 11:35:34 -05:00
Ryan Kurtz
4c7d6cc3d2 Merge remote-tracking branch 'origin/GP-5160_ghintern_coff_align--SQUASHED' 2024-12-17 11:34:54 -05:00
Ryan Kurtz
154893000e Merge remote-tracking branch
'origin/GP-5199_d-millar_IMAGE_DEBUG_MISC--SQUASHED' (Closes #7285)
2024-12-17 11:33:26 -05:00
Ryan Kurtz
9f8a08cb09 Merge remote-tracking branch 'origin/GP-5195_d-millar_missing_stack' 2024-12-17 11:31:15 -05:00
Ryan Kurtz
734af3018b Merge remote-tracking branch 'origin/GP-5169_d-millar_regs_in_frames--SQUASHED' 2024-12-17 11:29:39 -05:00
d-millar
c2224aa538 GP-5199: per review
GP-5199: forgot a bit
GP-5199: fix for 0 length
2024-12-17 11:25:55 -05:00
d-millar
e1f1eb7774 GP-5169: minor edit
GP-5169: stack requires regs update
GP-5169: first pass dbgeng
GP-5169: fix for gdb
GP-5169: fix for lldb
2024-12-17 09:24:59 -05:00
Ryan Kurtz
1800de429c GP-5021: Python 3.13 support 2024-12-17 08:58:47 -05:00
caheckman
21a6a276b2 GP-5184_PtrsubUndoFix 2024-12-17 00:17:23 +00:00
Ryan Kurtz
a414919073 Merge remote-tracking branch 'origin/GP-3883_James_add_source_map_manager_v2' 2024-12-16 19:00:47 -05:00
Ryan Kurtz
0d490ef98d Merge remote-tracking branch 'origin/GP-1_fixed_issue_exposed_by_change_in_GP-4820' 2024-12-16 15:33:16 -05:00
ghidragon
367450f212 GP-1 fix bug exposed by change in GP-4820. 2024-12-16 13:35:05 -05:00
ghintern
83f4da2437 GP-5160: Handle section alignment flags in COFF header 2024-12-16 16:41:26 +00:00
Ryan Kurtz
8bbc1d0540 Merge branch 'GP-0_ryanmkurtz_PR-7288_gemesa_bsim-docs-install-reqs' 2024-12-16 09:10:50 -05:00
Ryan Kurtz
1909c7208b Merge remote-tracking branch 'origin/GP-0_Dan_fixAnonymousWarning' 2024-12-16 09:03:04 -05:00
Andras Gemes
b69e487654
BSim: Clarify install dependencies for PostgreSQL server 2024-12-16 11:34:27 +01:00
Dan
2c571117c4 GP-0: Fix complaint about anonymous listener. 2024-12-13 14:42:30 -05:00
James
9aeeaa4397 GP-3883 added source file manager 2024-12-13 18:51:34 +00:00
d-millar
451f9de6b9 GP-5195: missing stack error 2024-12-13 13:30:34 -05:00
Ryan Kurtz
420dd7ce0c GP-0: Fixing build 2024-12-13 08:09:25 -05:00
Ryan Kurtz
6ce87eaf58 Merge remote-tracking branch 'origin/GP-5159-dragonmacher-filter-regex-fix' 2024-12-13 06:04:53 -05:00
Ryan Kurtz
fba7ce0093 Merge remote-tracking branch 'origin/GP-5116_James_function_call_tree_improvements' 2024-12-13 06:03:31 -05:00
dragonmacher
7a3a5027c0 GP-5116 - Function Call Trees Improvements (see below):
Updated menu actions in the tool to show the name of the function to be
opened
Added an icon for non-call references
Added a filter to hide non-call references
Fixed a bug causing Filter Duplicates to sometimes not work
2024-12-12 16:19:25 -05:00
James
f634a75c9c GP-5116 function call tree improvements 2024-12-12 16:18:07 -05:00
ghidra1
e07aa499ea Merge remote-tracking branch 'origin/GP-5167_ghidra1_BSimUsername--SQUASHED' 2024-12-12 14:17:53 -05:00
ghidra1
867fdeaa1f GP-5167 Updated BSimServerInfo to support DB user info and conveying via URL. Updated elastic and postgresql URL for bsim commands to allow include of user info. Renamed Error to BSImError to avoid naming conflict. 2024-12-12 14:15:22 -05:00
Ryan Kurtz
228ab6c744 Merge remote-tracking branch 'origin/GP-5188_ghidragon_improving_edge_routing_in_some_edge_cases--SQUASHED' 2024-12-12 12:50:23 -05:00
Ryan Kurtz
ce07193094 Merge remote-tracking branch 'origin/GP-1978_Dan_torchFrameworkDebugging-pt2--SQUASHED' 2024-12-12 12:02:34 -05:00
Ryan Kurtz
ad24bcf823 GP-3443: Removing redundant dependency 2024-12-12 11:58:33 -05:00
Dan
5813548a84 GP-1978: Port tests to TraceRmi and delete more stuff. 2024-12-12 11:43:47 -05:00
Ryan Kurtz
b0fc700655 Merge remote-tracking branch 'origin/GP-3443_d-millar_CTADL_from_master_1204--SQUASHED' 2024-12-12 11:20:30 -05:00
Ryan Kurtz
a27de445c4 Merge remote-tracking branch 'origin/GP-5170_ghidragon_fix_BSim_actions_to_be_disabled_when_no_program_open' 2024-12-12 11:19:12 -05:00
ghidragon
d65c285a18 Tweaked edge routing 2024-12-12 11:18:10 -05:00
Ryan Kurtz
3fa0b50eb4 Merge remote-tracking branch 'origin/GP-5036_ghidragon_copy_special_for_data--SQUASHED' 2024-12-12 11:17:41 -05:00
ghidragon
b7cf578cd5 GP-5036 added new 'copy special' options. One to copy just data and one to copy de-referenced pointer data 2024-12-11 18:50:45 -05:00
ghidragon
937518f110 GP-5170 fixing BSim action enablement for when no program is open 2024-12-11 17:24:09 -05:00
d-millar
4b641143ec GP-3443: couple more
GP-3443: clean-up & comment
GP-3443: more help edits; fix for QueryResult error
GP-3443: actions refactor
GP-3443: record fix + html fixes
GP-3443: misc
GP-3443: fixes for help
GP-3443: more post-review
GP-3443: refactor on queries + other stuff
GP-3443: test improvement
GP-3443: post-review more easy
GP-3443: post-review easy fixes
GP-3443: imports
GP-3443: formatting fixes
GP-3443: better test
GP-3443: more test improvemnts
GP-3443: fix for fields, more test stuff
GP-3443: prelims for testing
GP-3443: more work on edge cases
GP-3443: fix for locals fixed
GP-3443: fix for locals
GP-3443: by symbol fix
GP-3443: by symbol fix
GP-3443: minor ergonomics
GP-3443: simpler query
GP-3443: fix for structs
GP-3443: fix for clear
GP-3443: thunks working
GP-3443: more deps
GP-3443: dependencies fix
GP-3443: gates
GP-3443: imports organized
GP-3443: oops
GP-3443: oops
GP-3443: pretty substantial refactor
GP-3443: marks now location-specific
GP-3443: better clear
GP-3443: fairly major logic change
GP-3443: (better) functioning plugin
GP-3443: better docs
GP-3443: script
GP-3443: script
GP-3443: bueno
GP-3443: manual rebase
2024-12-11 14:50:56 -05:00
ghidra1
dadfc465df GP-0 Corrected MarkerTest failure 2024-12-11 12:08:16 -05:00
Ryan Kurtz
f2c1827272 Merge remote-tracking branch 'origin/GP-4820_ghidragon_allow_bookmarks_on_interior_data' 2024-12-11 06:20:14 -05:00
Ryan Kurtz
d76e22ec6b Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-12-6-24-2' 2024-12-11 06:18:58 -05:00
dragonmacher
2f5416ab45 GP-5159 - Fixed a bug when entering regex characters into a tree filter
field
2024-12-10 17:26:23 -05:00
ghidragon
4f25ad1cef GP-4820 Changed to allow bookmarks to be placed on interior data. 2024-12-10 16:16:23 -05:00
Ryan Kurtz
97aadfa05a GP-0: Improving bounds check in DebugDirectory.java (Closes #7271) 2024-12-10 12:26:18 -05:00
Ryan Kurtz
ed2bc8c717 Merge remote-tracking branch 'origin/GP-5189_VarargsFilterRange' 2024-12-10 11:58:39 -05:00
Ryan Kurtz
9de359f627 Merge remote-tracking branch 'origin/GP-5179_ryanmkurtz_pyghidra_launcher' 2024-12-10 11:58:19 -05:00
Ryan Kurtz
de98b5eccb Merge remote-tracking branch 'origin/GP-0_ghidragon_fixing_tests_related_to_clear_with_options_change' 2024-12-10 11:57:59 -05:00
caheckman
e3aa064061 GP-5189 Add range attributes to VarargsFilter 2024-12-10 16:39:22 +00:00
ghidragon
14a1164f4a GP-0 fixed tests related to clear with options change 2024-12-10 11:38:58 -05:00
Ryan Kurtz
6443e97b64 GP-5179: Improvements to pyghidra_launcher.py
* Specifying supported Python versions in application.properties
so other things can get access to it (similar to how we do it for Java
and Gradle supported versions)

* Only try to launch PyGhidra with a supported version of Python
2024-12-10 11:11:19 -05:00
Ryan Kurtz
60468b0fe2 GP-5085: Another updated color for resolved external functions 2024-12-10 06:07:03 -05:00
Ryan Kurtz
ec59e407bf Merge branch 'GP-5182_ryanmkurtz_swift-int' (Closes #6784) 2024-12-09 17:00:36 -05:00
Ryan Kurtz
e1e54a4d89 GP-5182: The builtin int type in Swift binaries has been changed from 8
bytes to 4 bytes. The Swift Demangler now demangles the Swift.Int type
to __int64 (or __int32) to avoid conflicts with non-Swift structures and
functions that may be found in the program.
2024-12-09 16:58:19 -05:00
Ryan Kurtz
4f98283937 Merge remote-tracking branch 'origin/GP-5187_ghidra1_DBHandleIsChanged'
(#7258)
2024-12-09 15:50:50 -05:00
ghidra1
d0ee271570 GP-5187 Change DBHandle.isChanged() to use cached state 2024-12-09 14:56:03 -05:00
Ryan Kurtz
18aa9a48f8 Merge remote-tracking branch
'origin/GP-5085_ghidravision_DecompilerColorExternalFunctions--SQUASHED'
(Closes #7053)
2024-12-09 06:36:02 -05:00
Ryan Kurtz
5027a75e78 Merge remote-tracking branch
'origin/GP-5084_ghidragon_clear_instructions_or_data_individually--SQUASHED'
(Closes #7082)
2024-12-09 06:17:07 -05:00
Ryan Kurtz
e7a879e63f Merge remote-tracking branch 'origin/GP-4996_function_graph_option_to_choose_corner_for_satellite--SQUASHED' 2024-12-09 06:14:52 -05:00
befoulad
0c43ccb360 wrap stack limit instruction decoders in ifdef block 2024-12-08 18:52:24 +00:00
befoulad
bb39e4398b define stack limit registers for armv8-m 2024-12-08 18:49:34 +00:00
Behrang
68171d3302
Merge branch 'NationalSecurityAgency:master' into armv8-splimit 2024-12-08 13:11:17 +00:00
ghidragon
d31c78cd9d GP-5084 Adding ability to choose which corner the function graph satellite appears in. 2024-12-06 18:42:28 -05:00
ghidragon
3cc34cf6a9 GP-5084 Adding ability to clear just instructions or data when using clear with options 2024-12-06 15:08:26 -05:00
dragonmacher
5307e45f63 Test fixes 2024-12-06 14:57:42 -05:00
dragonmacher
21903dbbde GP-5085 - Updated the color for resolved external functions 2024-12-06 14:15:25 -05:00
ghidorahrex
f83d1142c0 GP-5181: Fixed missing ARM VFPv2 instructions 2024-12-06 16:51:23 +00:00
Ryan Kurtz
57df41297f Merge remote-tracking branch 'origin/patch' 2024-12-06 11:45:38 -05:00
Ryan Kurtz
c405ce78e5 Merge remote-tracking branch 'origin/GP-5121_Dan_flushSaveableTracePropertyMap' into patch 2024-12-06 11:40:26 -05:00
Ryan Kurtz
12fbb20b25 Merge remote-tracking branch
'origin/GP-5146_ghidra007_RTTIAnalysis_anon_namespace_change_fix--SQUASHED'
into patch (Closes #3213)
2024-12-06 11:36:26 -05:00
ghidra007
8892384b71 GP-5146 fixed rttiUtil issue resulting from previous pdb anon fix. Main fix was to remove incorrect pdb secondary symbols causing rtti script to blow up. Also updated to remove known functions from other class possible const/dest lists. Also updated to remove ticks from pdb rtti instead of just removing the symbols and recreating. This fixed the missing _forParent symbols so also updated script to handle for parent case now that it is getting them. 2024-12-06 15:59:20 +00:00
Ryan Kurtz
56b1bbbc99 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-12-6-24' 2024-12-06 10:49:07 -05:00
dragonmacher
3da22ee12a Test fixes 2024-12-06 10:47:46 -05:00
ghidravision
6ed50fa085 GP-5085 Functionality for unifying the color of external function names across the listing and decompiler views. 2024-12-06 14:31:06 +00:00
Ryan Kurtz
4f79536a50 Merge remote-tracking branch 'origin/GP-4886_ghidra1_UnassignedStorageForDefaultDatatype' 2024-12-06 07:45:28 -05:00
Ryan Kurtz
5aec99616a Merge remote-tracking branch
'origin/GP-5129_ghidracadabra_PR-7102_gemesa_bsim-ctl-status'
(Closes #7102)
2024-12-06 07:44:08 -05:00
Ryan Kurtz
fa836b1242 Merge remote-tracking branch 'origin/GP-2957_DivideExtended' 2024-12-06 07:42:39 -05:00
Ryan Kurtz
a9b4d6c7cf Merge remote-tracking branch 'origin/GP-5175-dragonmacher-escape-fix'
(Closes #7241)
2024-12-06 07:41:27 -05:00
Ryan Kurtz
c767ec9ed9 Merge branch 'GP-0_ryanmkurtz_PR-7255_hippietrail_typo' 2024-12-06 06:20:20 -05:00
Andrew Dunbar
ab99fd1168
typo/grammar
Supported operator are->Supported operators are
2024-12-06 12:32:05 +07:00
dragonmacher
64cdd130b3 GP-5175 - Turned a local action into a global action (the action that
closes the window when only one provider remains)
2024-12-05 16:20:34 -05:00
Ryan Kurtz
03eae7abbd Merge remote-tracking branch
'origin/GP-5174_dev747368_pdb_altfilenames--SQUASHED' (Closes #7200)
2024-12-05 13:16:01 -05:00
dev747368
5761470937 GP-5174 look for pdb files based on program's filename
Add feature to 'Program's Import Location' to look for pdb files that
have been renamed to match the binary's name.
2024-12-05 13:14:31 -05:00
Ryan Kurtz
d071daad2f Merge remote-tracking branch 'origin/GP-5176_ryanmkurtz_hover-decimal'
(Closes #7239)
2024-12-05 13:14:03 -05:00
Ryan Kurtz
6985bf90f0 Merge remote-tracking branch 'origin/GP-0_fixed_function_graph_test_dependency' 2024-12-05 12:08:13 -05:00
Ryan Kurtz
b02dddda35 GP-0: Changing python search order to prefer newer versions over system
defaults since those tend to be incomplete. Printing python executable
path in build.
2024-12-05 12:07:44 -05:00
ghidragon
8b65401772 GP-0 fixed test dependency 2024-12-05 12:05:16 -05:00
Ryan Kurtz
69ee044f29 GP-5176: Hovering on addresses in the Listing now show offsets in both
decimal and hexadecimal
2024-12-05 11:49:49 -05:00
Ryan Kurtz
c5b753e881 Merge remote-tracking branch 'origin/GP-5151-dragonmacher-diff-exception--SQUASHED' 2024-12-05 10:47:10 -05:00
Ryan Kurtz
e1121cf284 Merge branch 'GP-0_ryanmkurtz_PR-7251_squk_pdb' 2024-12-05 09:23:24 -05:00
Ryan Kurtz
90afe08e9c GP-0: Certify and tweak 2024-12-05 08:53:36 -05:00
Ryan Kurtz
293f5bdb0a Merge remote-tracking branch 'origin/GP-1978_Dan_torchFrameworkDebugging-pt1--SQUASHED' 2024-12-05 08:37:25 -05:00
Dan
0ab040816a GP-1978: Delete Deprecated plugins, GADP 2024-12-05 08:29:10 -05:00
Ryan Kurtz
586a526b1a GP-0: Fixing javadoc error 2024-12-05 07:00:39 -05:00
Ryan Kurtz
233b05e2b9 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-12-4-24-2' 2024-12-05 06:07:34 -05:00
Christian Nieves
2428fcc3e1
Fix potential IndexOutOfBoundsException in PDB parsing 2024-12-04 19:30:55 -06:00
caheckman
8847d2a6b9 GP-2957 Sub-flow through INT_DIV and INT_REM 2024-12-05 00:00:47 +00:00
dragonmacher
33b9315c18 Test fixes 2024-12-04 18:18:30 -05:00
Ryan Kurtz
051a0b3405 Merge remote-tracking branch
'origin/GP-4988_ghidragon_flowchart_graph_layout--SQUASHED'
(Closes #1406)
2024-12-04 13:17:22 -05:00
Ryan Kurtz
6af8107f04 Merge remote-tracking branch 'origin/patch' 2024-12-04 13:15:37 -05:00
Ryan Kurtz
86f8c3d598 Merge remote-tracking branch 'origin/GP-5103_ghidragon_fixed_entropy_legend_lables_to_be_visible_in_all_themes' into patch 2024-12-04 13:13:23 -05:00
ghidragon
9bf8e72182 GP-5103 fixed entropy legend labels to be visible in all themes 2024-12-04 13:07:05 -05:00
ghidragon
0a5a2ce9d8 GP-4988 Created flow chart function graph layout 2024-12-04 12:11:36 -05:00
Ryan Kurtz
6c98c4cadf Merge remote-tracking branch 'origin/patch' 2024-12-04 11:28:41 -05:00
Ryan Kurtz
18fb37c9fe Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-12-4-24' into patch 2024-12-04 11:26:46 -05:00
Ryan Kurtz
6d4ebc0f0c Merge remote-tracking branch 'origin/GP-1-dragonmacher-added-missing-listing-color' 2024-12-04 11:24:12 -05:00
dragonmacher
272a64ade1 Test fixes 2024-12-04 11:17:58 -05:00
Ryan Kurtz
2bfe93fc2d Merge remote-tracking branch 'origin/GP-5171_ryanmkurtz_pypredef' 2024-12-04 11:10:58 -05:00
Ryan Kurtz
93f58cbb26 Merge remote-tracking branch
'origin/GP-5028_ryanmkurtz_change-history-markdown--SQUASHED'
2024-12-04 11:07:26 -05:00
Ryan Kurtz
ce1e6bccdc Merge remote-tracking branch
'origin/GP-5164_Dan_addRegionManually--SQUASHED' (#7176)
2024-12-04 11:03:46 -05:00
Ryan Kurtz
b7e03c669a Merge remote-tracking branch 'origin/GP-5134_reworkLoadEmulatorFromPrograms--SQUASHED' 2024-12-04 11:01:41 -05:00
Ryan Kurtz
8cfb6dd9c7 Merge remote-tracking branch
'origin/GP-5051_Dan_qemuSysVsQemuUser--SQUASHED' (Closes #7095)
2024-12-04 10:59:49 -05:00
Ryan Kurtz
bc8a083351 GP-5028: Convert ChangeHistory to Markdown 2024-12-04 10:57:56 -05:00
Dan
cfc4adbef6 GP-5134: Don't require user to set 'Load Emulator'. 2024-12-04 08:45:34 -05:00
Dan
7dd417b6be GP-5051: Distinct qemu-system launcher. 2024-12-04 08:43:26 -05:00
Dan
c3419572ae GP-5164: Fix DebuggerAddRegionDialog. 2024-12-04 08:41:55 -05:00
Ryan Kurtz
56d6af4531 GP-5171: Generating pypredef files for PyDev. Fixing PyDev
errors/warnings in PyGhidra.
2024-12-04 08:05:33 -05:00
Ryan Kurtz
e66bbc5231 Merge remote-tracking branch 'origin/patch' 2024-12-04 06:12:53 -05:00
Ryan Kurtz
6a057a39eb GP-0: Fixing typo in ChangeHistory.html "Notable API Changes" title 2024-12-04 06:10:06 -05:00
dragonmacher
12295af961 GP-5151 - Fixed Diff exception by making the diff task modal 2024-12-03 15:57:10 -05:00
dragonmacher
3d140a2815 Added color to the Listing Display options 2024-12-03 15:31:45 -05:00
Ryan Kurtz
16388dc261 Merge remote-tracking branch 'origin/patch' 2024-12-03 10:15:21 -05:00
Ryan Kurtz
a46ae2440b Merge remote-tracking branch
'origin/GP-5102_Dan_fixProgramModuleIndexer--SQUASHED' into patch
(Closes #7153)
2024-12-03 10:12:00 -05:00
Ryan Kurtz
40b7c07103 Merge remote-tracking branch 'origin/GP-5154_ARM_AARCH64_coff_relocations--SQUASHED' 2024-12-03 10:03:45 -05:00
Ryan Kurtz
480fd0c5f5 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-12-3-24' 2024-12-03 10:02:43 -05:00
dragonmacher
180668de0d Test fixes 2024-12-03 09:56:09 -05:00
ghidra1
d5884aa520 Merge remote-tracking branch 'origin/GP-3625_ghidra1_FileDataTypeManagerCreation--SQUASHED' into patch 2024-12-03 09:45:58 -05:00
ghidra1
c23354b78d GP-3625 Added simplified FileDataTypeManager factory methods and cleanup of CParser utilities. 2024-12-03 09:43:24 -05:00
Dan
2aebbfa6ef GP-5102: Fix NPE when TraceModule.getBase() is null during mapping. 2024-12-03 09:40:17 -05:00
Ryan Kurtz
edf9353999 GP-0: Skip unnammed structs in IDA XML exporter (Closes #7211) 2024-12-03 09:12:31 -05:00
Ryan Kurtz
152bc30d6c Merge branch 'GP-0_ryanmkurtz_PR-7231_gemesa_headless-docs' 2024-12-03 08:56:03 -05:00
James
cf16db25b4 GP-5154 added arm and aarch64 coff relocations 2024-12-03 08:49:07 -05:00
Ryan Kurtz
941cebf74d Merge remote-tracking branch 'origin/GP-5148_ryanmkurtz_vscode--SQUASHED' 2024-12-03 07:03:53 -05:00
Ryan Kurtz
478d3e6331 GP-5148: More polished Visual Studio Code integration 2024-12-03 07:03:13 -05:00
Ryan Kurtz
69a17e3a52 Merge remote-tracking branch 'origin/GP-5104_James_getCallingFunctions_fixes--SQUASHED' 2024-12-03 06:14:47 -05:00
Ryan Kurtz
8bab322aa8 Merge remote-tracking branch
'origin/GP-5163_Dan_autoReadStackPages--SQUASHED' (#7176)
2024-12-03 06:13:23 -05:00
Ryan Kurtz
e5a8b9a79e Merge remote-tracking branch 'origin/GP-5157-dragonmacher-unify-unresolved-ref-color--SQUASHED' 2024-12-03 06:10:21 -05:00
dragonmacher
779ef887e0 GP-5157 - Listing Colors - Combined color usage for functions so that they are displayed the same in different parts of the Listing 2024-12-02 19:32:45 -05:00
Dan
2f86a780f0 GP-5121: Fix unflushed buffer in Saveable TracePropertyMap 2024-12-02 12:09:11 -05:00
Dan
83a9feedbe GP-5163: Read stack at $sp-1 for 2, for negative stack growth. 2024-12-02 09:44:28 -05:00
James
dadfaae8c9 GP-5104 get calling/called functions fixes 2024-12-02 08:39:14 -05:00
Ryan Kurtz
954ff4e124 Merge remote-tracking branch 'origin/GP-1-dragonmacher-placheholder-is-showing-fix' 2024-12-02 06:27:12 -05:00
Ryan Kurtz
05f26a8976 Merge remote-tracking branch 'origin/GP-5158_ConditionalCompare' 2024-12-02 06:26:05 -05:00
Ryan Kurtz
ef69020087 Merge remote-tracking branch 'origin/GP-5149-dragonmacher-toggle-provider-fix--SQUASHED' 2024-12-02 06:23:21 -05:00
Ryan Kurtz
35a47cf69b Merge remote-tracking branch 'origin/GP-5141_d-millar_SARIF_CME--SQUASHED' 2024-12-02 06:21:28 -05:00
Ryan Kurtz
5b7b12e7d0 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-11-29-24' 2024-11-30 19:05:20 -05:00
dragonmacher
6beca1b4c0 Test fixes 2024-11-29 11:41:36 -05:00
Andras Gemes
cd04acdc2b
Base: Sync headless analyzer docs 2024-11-28 15:55:34 +01:00
d-millar
e42ce5ddec GP-5141: simpler options logic
GP-5141: leftover log logic
GP-5141: better program tree logic
GP-5141: fix for logging
GP-5141: fix for logging
GP-5141: more fixes
GP-5141: post-review
GP-5141: CME fix
GP-5141: CME fix
2024-11-27 19:49:36 -05:00
dragonmacher
dbca3b35cd GP-5149 - Fix for toggling visibility of component providers 2024-11-27 16:32:12 -05:00
caheckman
2511498fcf GP-5158 Conditional comparisons in AARCH64 2024-11-27 19:48:35 +00:00
Ryan Kurtz
ba10a7e99f Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-11-26-24' 2024-11-27 06:04:13 -05:00
dragonmacher
0ad14b25c8 Fixed the sometimes incorrect use of ComponentPlaceholder.isShowing() 2024-11-26 17:26:33 -05:00
dragonmacher
47500148ce Test fixes 2024-11-26 14:26:05 -05:00
Ryan Kurtz
6e9340b4b8 Merge remote-tracking branch 'origin/GP-5151-dragonmacher-diff-exception' 2024-11-26 13:52:19 -05:00
Ryan Kurtz
b17f459538 Merge remote-tracking branch 'origin/GP-5155-dragonmacher-diff-missing-parameters--SQUASHED' 2024-11-26 12:58:05 -05:00
Ryan Kurtz
6a818106fd GP-0: Fixing PyGhidra build dependency 2024-11-26 11:37:39 -05:00
Ryan Kurtz
2bebb96f77 Merge branch 'GP-0_ryanmkurtz_PR-7225_hippietrail_the-the' 2024-11-26 09:05:43 -05:00
Ryan Kurtz
9b77447764 GP-0: Certify 2024-11-26 08:54:23 -05:00
Ryan Kurtz
cc15fdf691 GP-0: ghidra_builtins stubs no longer hides the python set type
(Closes #7222)
2024-11-26 08:38:32 -05:00
Ryan Kurtz
d30694c961 Merge branch 'GP-0_ryanmkurtz_PR-7226_gemesa_fid-report-format' 2024-11-26 06:20:20 -05:00
Ryan Kurtz
c6febe6851 GP-0: Certify 2024-11-26 06:19:50 -05:00
Andras Gemes
cfcc7a1ba8
Function ID: Fix report format 2024-11-26 10:26:37 +01:00
hippietrail
13598df8db many doubled words in comments etc, plus some nearby typos 2024-11-26 13:18:05 +07:00
dragonmacher
d829344b2d GP-5155 - Fixed a diff bug that caused parameters of functions to go missing 2024-11-25 16:43:16 -05:00
Ryan Kurtz
d079ca4a1e Merge branch 'GP-0_ryanmkurtz_PR-7220_chuangjinglu_typos' 2024-11-25 11:31:39 -05:00
Ryan Kurtz
7f01f558a3 GP-0: More fixes, and certify 2024-11-25 11:30:22 -05:00
Ryan Kurtz
28abe190e2 Merge branch 'GP-0_ryanmkurtz_PR-7214_hippietrail_binaryloader-messages' 2024-11-25 11:24:13 -05:00
Ryan Kurtz
9c17ba276c GP-0: Certify 2024-11-25 11:16:27 -05:00
Ryan Kurtz
db1a8856e8 Merge remote-tracking branch 'origin/GP-1-dragonmacher-dialog-close-action-fix--SQUASHED' 2024-11-25 11:10:55 -05:00
Ryan Kurtz
46ceac4f5c Merge remote-tracking branch 'origin/GP-5152-dragonmacher-diff-resize-bug' 2024-11-25 11:09:22 -05:00
Ryan Kurtz
883cc9c4db GP-0: Test fixes 2024-11-25 07:47:43 -05:00
chuangjinglu
149e03c847 chore: remove redundant word in comment
Signed-off-by: chuangjinglu <chuangjinglu@outlook.com>
2024-11-25 11:16:20 +08:00
Andrew Dunbar
23ae8364b1
make error messages match logic
The logic in two places checks against `< 0` whose opposite is `>= 0` but the error text said "... must be greater than 0"

I changed it to "greater than or equal to 0" to match the style of the second error but personally I prefer the more succinct "... must be at least"
2024-11-23 11:05:54 +07:00
dragonmacher
739b28f1ad Fix for shared global dialog escape action to appear in options without a dialog having been created 2024-11-22 19:28:30 -05:00
Ryan Kurtz
2333ab6111 Merge branch 'GP-0_ryanmkurtz_PR-7213_kaibolay_crc32-hex' 2024-11-22 13:03:53 -05:00
Ryan Kurtz
3b4d4f9ed0 GP-0: Certify 2024-11-22 13:03:28 -05:00
Ryan Kurtz
9a4da4e729 GP-0: Fixing cycle group tests and help 2024-11-22 12:47:32 -05:00
Ryan Kurtz
b95350f725 GP-4919: Fixing exception that could occur if LoadSpec wasn't found for
some reason (#7185)
2024-11-22 10:59:40 -05:00
Ryan Kurtz
760f2a28c2 GP-0: Added longdouble to FloatCycleGroup (Closes #7192) 2024-11-22 10:37:32 -05:00
Ryan Kurtz
c00d6e0034 Merge remote-tracking branch 'origin/patch' 2024-11-22 10:33:17 -05:00
Ryan Kurtz
26b7540681 Merge remote-tracking branch 'origin/GP-5150_emteere_CParserMissingCallConvertion' into patch 2024-11-22 10:30:49 -05:00
Ryan Kurtz
e7e8d533be GP-5153: The MS Common Object File Format (COFF) loader now recognizes
AARCH64 binaries
2024-11-22 10:29:25 -05:00
Kai Bolay
15358c6cdd
Output crc32 in hex 2024-11-22 08:31:55 -05:00
dragonmacher
498e98110a GP-5151 - Diff - Fixed exception when closing second program while diff
is running
2024-11-21 20:24:49 -05:00
dragonmacher
81eaa9120d GP-5152 - Diff - fixed divider resize bug seen with long program names 2024-11-21 20:11:46 -05:00
emteere
ebb19c6382 GP-5150 added __vectorcall, __rustcall, __pascal calling conventions to
CParser.
2024-11-21 21:04:12 +00:00
ghidra1
8520dbb9e0 GP-4886 Test fix 2024-11-21 15:52:22 -05:00
ghidra1
e5edde62fa GP-4886 Updated javadocs 2024-11-21 15:52:20 -05:00
ghidra1
b203afe700 GP-4886 Corrected speculative param storage determination 2024-11-21 15:52:18 -05:00
ghidra1
c3052c0c83 GP-4886 Test fixes 2024-11-21 15:52:16 -05:00
ghidra1
f3eabcfb18 GP-4886 Fix stack analysis and return storage allocation. 2024-11-21 15:52:13 -05:00
caheckman
faacb6b6d8 Move UNASSIGNED check into LocalSymbolMap 2024-11-21 15:52:11 -05:00
ghidra1
7128a2adbd GP-4886 Do not assign storage for DEFAULT/unassigned datatype and create
undefined-typedef instead of DWORD-typedef as a default named type when
demangling.
2024-11-21 15:52:08 -05:00
ghidra1
7ec765c854 GP-0 Include JPype1-1.5.0.tar.gz in distribution 2024-11-21 15:50:08 -05:00
Ryan Kurtz
7dd38f2d95 Merge remote-tracking branch 'origin/GP-0_d-millar_test_failure_fix' 2024-11-21 11:02:02 -05:00
d-millar
b44ff6e230 GP-0: fix for test failures 2024-11-21 14:39:21 +00:00
ghidra1
1dad9f85c0 GP-0 Corrected test failures 2024-11-20 21:20:08 -05:00
Ryan Kurtz
f6dfa0964a Merge remote-tracking branch 'origin/GP-5144_ghidracadabra_PR-6307_sad-dev_LocRange' 2024-11-20 10:54:37 -05:00
ghidra1
ac58d20693 GP-0 Corrected test failures and fixed cspec encoding bug 2024-11-20 10:04:56 -05:00
Ryan Kurtz
22ddbc3f4b Merge remote-tracking branch 'origin/GP-5137_dev747368_delete_duplicate_processor_list_plugin' 2024-11-20 06:15:14 -05:00
Ryan Kurtz
55b2016b16 Merge remote-tracking branch 'origin/GP-5136_ghidra1_SarifStructureComponents' 2024-11-20 06:13:59 -05:00
Ryan Kurtz
4d96514f1b Merge remote-tracking branch 'origin/GP-1-dragonmacher-go-to-bug-fix' 2024-11-20 06:12:50 -05:00
ghidra1
79b008d7e4 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-11-19-24' 2024-11-19 18:53:52 -05:00
dragonmacher
ac22ed69f2 Test fixes 2024-11-19 18:07:54 -05:00
dragonmacher
68bb1e182a Fixed Go To for functions with default names so that a table of choices
is not shown
2024-11-19 15:09:12 -05:00
James
d29f0c748e GP-5144 pr 6307 2024-11-19 19:52:03 +00:00
sad-dev
08b54178a0 Edit copy pasted function description 2024-11-19 19:30:33 +00:00
sad-dev
1f06e090d2 Add helper method PcodeSyntaxTree.locRange(Address min, Address max) 2024-11-19 19:30:33 +00:00
sad-dev
d96ae1a284 Fix VarnodeBank.locRange(AddressSpace) not returning negative addresses 2024-11-19 19:30:33 +00:00
Ryan Kurtz
9421ec0ab0 Merge remote-tracking branch 'origin/GP-4885-dragonmacher-gnu-demangler-keep-raw-demangled--SQUASHED' 2024-11-19 13:11:55 -05:00
Ryan Kurtz
650c5d8756 Merge remote-tracking branch 'origin/GP-1-dragonmacher-focus-fix' 2024-11-19 12:47:54 -05:00
Ryan Kurtz
58e48456de Merge remote-tracking branch 'origin/GP-1-dragonmacher-dialog-escape-bug' 2024-11-19 12:47:36 -05:00
Ryan Kurtz
a7351baba4 Merge remote-tracking branch 'origin/GP-4202_James_msp430_cspec_improvements--SQUASHED' 2024-11-19 12:43:45 -05:00
Ryan Kurtz
329f8b4a19 Merge remote-tracking branch 'origin/patch' 2024-11-19 12:41:27 -05:00
Ryan Kurtz
fc7b0ef327 Merge remote-tracking branch 'origin/GP-0_d-millar_accidental_reversion_in_GP-4686' into patch 2024-11-19 12:37:29 -05:00
d-millar
454d57d754 GP-0: reversion for GP-4686 2024-11-19 12:21:39 -05:00
James
8abe4d76f0 GP-4202 msp430 cspec improvements 2024-11-19 09:57:12 -05:00
dragonmacher
8f08f2730d GP-4885 - Gnu Demangler - Save the raw demangled string 2024-11-19 09:21:42 -05:00
dragonmacher
b67fab8b51 Fix for Escape action not working for some dialogs 2024-11-18 18:45:17 -05:00
ghidra1
058ecb5eef GP-0 Revert GP-4886 change pending further review and rework 2024-11-18 11:43:17 -05:00
Ryan Kurtz
81432f75c7 GP-5132: PyGhidra launchers for VSCode (message for previous 'init' commit) 2024-11-18 11:05:12 -05:00
Ryan Kurtz
69d6495b60 init 2024-11-18 11:00:47 -05:00
dev747368
dc17dcd639 GP-5137 delete duplicate / unneeded processorlist plugin 2024-11-18 15:23:42 +00:00
Ryan Kurtz
4cbc94d960 Merge remote-tracking branch 'origin/GP-2470_EnumVariants' (#2581) 2024-11-18 06:26:59 -05:00
Ryan Kurtz
b12d39ee3f Merge remote-tracking branch 'origin/GP-5127_MultiSlotAlignment' 2024-11-18 06:22:59 -05:00
Ryan Kurtz
294f81dfc2 Merge remote-tracking branch 'origin/patch' 2024-11-18 06:20:49 -05:00
Ryan Kurtz
0411db7e88 Merge remote-tracking branch 'origin/GP-5130_HeapSequenceIndex' into patch 2024-11-18 06:18:32 -05:00
Ryan Kurtz
600c02703a Merge remote-tracking branch 'origin/GP-0_d-millar_fix_for_5120' (#7176) 2024-11-18 06:11:58 -05:00
dragonmacher
7712224ff1 Fixed focus issue that caused new dialogs to sometimes have focus taken
away
2024-11-15 20:52:34 -05:00
ghidra1
2390546961 GP-5136 Changed SARIF export to only include defined-components when
outputing a structure definition
2024-11-15 16:18:46 -05:00
caheckman
55a026b3ba GP-2470 Support for partial enums 2024-11-15 20:54:17 +00:00
caheckman
ab7684a230 GP-5127 Alignment fix for MultiSlotAssign 2024-11-15 20:31:06 +00:00
d-millar
eced291c6e GP-0: broken in 5120 2024-11-15 20:27:17 +00:00
Andras Gemes
e3d56736e4 BSim: Add status subcommand to bsim_ctl 2024-11-15 20:01:41 +00:00
caheckman
306e15a33d GP-5130 Negative offsets in HeapSequence 2024-11-15 19:09:46 +00:00
Ryan Kurtz
c9a51029bb Merge remote-tracking branch
'origin/GP-5120_d-millar_inferior_thread--SQUASHED' (Closes #7176)
2024-11-15 13:34:13 -05:00
Ryan Kurtz
a7c192c58e Merge remote-tracking branch
'origin/GP-5119_d-millar_possible_putreg_errors' (Closes #7174)
2024-11-15 13:32:52 -05:00
Ryan Kurtz
b536b99e60 Merge remote-tracking branch
'origin/GP-5105_d-millar_better_labels--SQUASHED' (Closes #7167)
2024-11-15 13:30:35 -05:00
Ryan Kurtz
83d38b8368 Merge remote-tracking branch 'origin/GP-4886_ghidra1_UnassignedStorageForDefaultDatatype' 2024-11-15 13:24:39 -05:00
Ryan Kurtz
a9c2c6efc7 Merge remote-tracking branch
'origin/GP-5135_dragonmacher_PR-7193_gemesa_listing-highlight-color'
(Closes #7193)
2024-11-15 13:23:07 -05:00
Ryan Kurtz
f7b21f5ea3 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-11-15-24' 2024-11-15 13:19:28 -05:00
dragonmacher
2ac3fe7b1b test fixes 2024-11-15 13:09:38 -05:00
Andras Gemes
bd9959730f Gui: Rework listing highlighter colors (dark theme) 2024-11-15 12:50:38 -05:00
d-millar
6be0884f18 GP-5120: single pattern for regions
GP-5120: single pattern for regions
GP-5120: mismatched errors
GP-5120: fix for inferior_thread is None
2024-11-15 11:54:05 -05:00
d-millar
8e6d269b8e GP-5105: same for ttd
GP-5105: better labeling
2024-11-15 11:53:45 -05:00
ghidorahrex
96c1ec0970 GP-5131: Fixed MIPS16e instruction delayslot relative addressing 2024-11-15 16:14:12 +00:00
Ryan Kurtz
3fb7d914f5 Merge remote-tracking branch
'origin/GP-5114-dragonmacher-escape-action--SQUASHED' (#7136)
2024-11-15 10:00:45 -05:00
Ryan Kurtz
1df4527dd3 GP-5133: Improvements to how we use python type stubs 2024-11-15 09:57:50 -05:00
dragonmacher
aaf23cf096 GP-5114 - Updated component providers to close on Escape when they are the only provider in a window 2024-11-14 17:32:01 -05:00
ghidra1
32c39f3518 Merge remote-tracking branch 'origin/patch' 2024-11-14 15:40:14 -05:00
ghidra1
81c687d06b Merge branch 'GP-5123_ghidra1_CheckoutVersionUpdate' into patch 2024-11-14 15:28:41 -05:00
ghidra1
86517c6ac3 GP-5123 Corrected versioning update bug. Checked-out version recorded
on server was not properly updated.
2024-11-14 15:28:14 -05:00
Ryan Kurtz
897708362b GP-0: Fixing TOC in GhidraDev README 2024-11-14 12:18:21 -05:00
Ryan Kurtz
6f0279d281 GP-0: Upping gradle wrapper version to 8.11. 2024-11-14 11:34:01 -05:00
Ryan Kurtz
e78d1d146c Merge branch 'GP-0_ryanmkurtz_PR-7181_hippietrail_copyedit-nov12' 2024-11-14 08:35:24 -05:00
Ryan Kurtz
9685ce6e95 GP-0: Extra XML fix and certify 2024-11-14 08:33:23 -05:00
Ryan Kurtz
6badb12f9b GP-0: New section in GhidraDev README about installing plugin from
online update site
2024-11-14 08:22:19 -05:00
Ryan Kurtz
ecb9bc2893 Merge remote-tracking branch
'origin/GP-3492-dragonmacher-file-chooser-editable-field--SQUASHED'
(Closes #5291, Closes #7150)
2024-11-14 06:45:50 -05:00
Ryan Kurtz
95c63ec84d Merge remote-tracking branch 'origin/GP-5125_ryanmkurtz_ghidradev'
(Closes #7047)
2024-11-14 06:42:15 -05:00
Ryan Kurtz
33f09a3501 Merge remote-tracking branch 'origin/GP-1-dragonmacher-fixed-icon-location' 2024-11-14 06:13:18 -05:00
dragonmacher
e56c279b7b GP-3492 - File Chooser - Allow users to edit the path field 2024-11-13 17:27:49 -05:00
ghidra1
d5f4d3b9bc Merge remote-tracking branch
'origin/GP-5037_ghidra1_PDBCompositePadding--SQUASHED' (Closes #1030)
2024-11-13 16:07:40 -05:00
ghidra1
d3d298373c GP-5037 Improved PDB composite reconstruction. Adding support for alignment padding injection. 2024-11-13 16:04:08 -05:00
dragonmacher
3e6d1e9b72 moved icon to the correct module 2024-11-13 16:00:23 -05:00
ghidra1
fed00570ac Merge remote-tracking branch 'origin/patch' 2024-11-13 15:46:30 -05:00
ghidra1
95016eb143 Merge remote-tracking branch 'origin/GP-5124_ghidra1_UserAgreement' into patch 2024-11-13 15:17:33 -05:00
ghidra1
46f8b3e16f Merge branch 'GP-5126_ghidra1_ProgramChangeBarsUpdate' into patch 2024-11-13 15:15:32 -05:00
ghidra1
0879068a26 GP-5124 Avoid duplication of UserAgreement within source tree 2024-11-13 14:59:49 -05:00
ghidra1
a270e339fa GP-5126 Corrected Program Change Bar update issues 2024-11-13 12:46:05 -05:00
Ryan Kurtz
d9f465f461 GP-5125: Fixed an issue with the GhidraDev Eclipse plugin's "Import
Ghidra Module Source" feature that prevented the module's extension
points from being discovered by Ghidra when launched with the project's
run/debug configuration.
2024-11-13 12:16:51 -05:00
Ryan Kurtz
2928750c96 Merge remote-tracking branch
'origin/GP-5097-dragonmacher-select-language-double-click--SQUASHED'
(Closes #7135)
2024-11-13 08:48:31 -05:00
Ryan Kurtz
d2ad11b1eb Merge remote-tracking branch
'origin/GP-5108-dragonmacher-dark-theme-color' (Closes #7134)
2024-11-13 08:46:52 -05:00
Ryan Kurtz
4680ea2123 Merge remote-tracking branch
'origin/GP-5118-dragonmacher-file-chooser-downloads-button'
(Closes #7121)
2024-11-13 08:45:07 -05:00
Ryan Kurtz
1c3ef56e95 Merge remote-tracking branch
'origin/GP-5117-dragonmacher-provider-window-open-close' (#7136)
2024-11-13 08:43:30 -05:00
Ryan Kurtz
bbbd1c677a Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-11-12-24' 2024-11-13 07:31:27 -05:00
dragonmacher
b7dec5e363 GP-5097 - Updated the Importer to allow users to double-click a language to pick it 2024-11-12 16:11:40 -05:00
dragonmacher
4df6f7e7c7 Test fixes 2024-11-12 14:10:11 -05:00
Ryan Kurtz
7e0a96e477 Merge remote-tracking branch
'origin/GP-5029_ghidracadabra_PR-7087_gemesa_bsim-runcmd-stderr'
2024-11-12 11:36:52 -05:00
Ryan Kurtz
ce7f3ec0b4 Merge remote-tracking branch 'origin/GP-5107_ghidracadabra_PR-7106_gemesa_bsim-ctl-changeauth-pki' 2024-11-12 10:14:37 -05:00
Ryan Kurtz
bd362f1b5c Merge remote-tracking branch 'origin/GP-5109_ghizard_add_MDMang_and_MicrosoftDemangler_demangleType_tests' 2024-11-12 06:22:25 -05:00
Ryan Kurtz
dc2b2d34b8 Merge remote-tracking branch 'origin/GP-5039_ghizard_PDB_move_redesigned_VxtManager_to_master--SQUASHED' 2024-11-12 06:22:03 -05:00
Ryan Kurtz
39f388f896 GP-0: Remove deprecated jcenter() as a repository 2024-11-12 05:58:02 -05:00
hippietrail
9c261e5c94 3 typos/grammar fixes 2024-11-12 17:09:47 +07:00
d-millar
54cd023fc9 GP-5119: get_register_by_index can fail 2024-11-11 21:37:43 +00:00
dragonmacher
ef5036fe47 GP-5117 - Updated the action to show a provider to be a toggle action,
hiding the provider if already visible
2024-11-08 18:28:45 -05:00
dragonmacher
5e29463bd7 GP-5118 - File Chooser - Add Downloads button 2024-11-08 18:10:14 -05:00
hippietrail
13664c3c11 add a "Downloads" folder button to "Select File to Import" file chooser 2024-11-08 17:46:59 -05:00
ghizard
a8623b7202 GP-5039 - PDB CPP - Move redesigned but neutered VxtManager to master 2024-11-08 15:30:05 -05:00
ghizard
74292aa77e GP-5109 - MDMang and MicrosoftDemangler - add demangleType tests 2024-11-08 11:52:04 -05:00
ghidra1
b80cfdff3f Merge remote-tracking branch 'origin/GP-0_ghizard_master_fix_rtti_tests_due_to_GP-5101_bug' 2024-11-08 11:32:04 -05:00
ghizard
392bd9fcc8 GP-0 - fix bug introduced into MicrosoftDemangler by GP-5101 2024-11-08 11:15:19 -05:00
dragonmacher
a8e2b521f2 GP-5108 - Updated Flat Dark table inactive selection color 2024-11-07 18:37:27 -05:00
James
afed1f9aa9 GP-5106 clarify bsim help 2024-11-07 20:27:19 +00:00
Ryan Kurtz
07d7358970 Merge remote-tracking branch 'origin/GP-5106_ghidracadabra_PR-7083_gemesa_bsim-ctl-cmd' 2024-11-07 14:27:03 -05:00
Ryan Kurtz
3f485449e8 Merge remote-tracking branch 'origin/GP-5049-dragonmacher-hyperlink-comp-activation--SQUASHED' 2024-11-07 14:23:50 -05:00
Ryan Kurtz
404fbdb7dc Merge remote-tracking branch 'origin/GP-5101_ghizard_MDMang_vxts_with_anon_ns--SQUASHED' 2024-11-07 14:22:06 -05:00
ghizard
9c942026b5 GP-5101 - MDMang - Properly process anon NS in vxtables owner and parentage; start work on OutputOptions, as needed for anon NS 2024-11-07 13:48:38 -05:00
James
1e0df782b5 GP-5029 added space 2024-11-07 18:08:29 +00:00
dragonmacher
8a6145e2df GP-5049 - Refactor of hyperlink component to support accessibility 2024-11-07 12:31:55 -05:00
Ryan Kurtz
ad86d2d65a Merge remote-tracking branch 'origin/GP-4853_dev747368_datatype_select_nodups' 2024-11-07 11:47:11 -05:00
dev747368
acff065919 GP-4853 remove duplicate data types from data type picker list
If a data type is replicated across multiple data type managers,
suppress the instances that are not in the primary dtm.
2024-11-07 16:24:48 +00:00
Ryan Kurtz
c4caa083c1 Merge remote-tracking branch 'origin/patch' 2024-11-07 11:14:26 -05:00
Ryan Kurtz
f94180e04e Merge remote-tracking branch 'origin/GP-5094_James_endianness_in_variable_storage' into patch 2024-11-07 11:11:17 -05:00
Ryan Kurtz
30ef757d81 Merge branch 'GP-0_ryanmkurtz_PR-7151_hippietrail_margin-bars'
(Closes #7151)
2024-11-07 06:35:32 -05:00
Ryan Kurtz
d09c75e4ac Merge remote-tracking branch 'origin/GP-0_Dan_disableJdiTests' 2024-11-06 11:07:56 -05:00
Dan
b323bd136e GP-0: Turn 'em off :( 2024-11-06 10:04:02 -05:00
Ryan Kurtz
8c5a35ef41 Merge remote-tracking branch 'origin/patch' 2024-11-06 08:36:08 -05:00
dev747368
64bf857963 GP-5096 try to fix core dump caused by 7zip library
Race condition where accessing a 7z file element while the archive is
being closed in a separate thread.
2024-11-06 08:33:51 -05:00
Ryan Kurtz
6be65afa75 Merge remote-tracking branch 'origin/patch' 2024-11-06 08:23:59 -05:00
Ryan Kurtz
9e711f1a46 GP-0: Updating patch to 11.2.2 2024-11-06 08:21:52 -05:00
Ryan Kurtz
f3569cbb12 Merge remote-tracking branch
'origin/GP-5072_ghizard_PDB_more_progress_on_older_versions'
(Closes #7100)
2024-11-06 08:05:37 -05:00
ghidra1
710e2a8ba3 Merge remote-tracking branch 'origin/patch' 2024-11-05 20:35:19 -05:00
Ryan Kurtz
d6f63af049 Merge branch 'GP-0_ryanmkurtz_PR-7131_hippietrail_duplicate-line' 2024-11-05 13:34:15 -05:00
Ryan Kurtz
718366abd1 GP-0: Certify 2024-11-05 13:32:18 -05:00
Andrew Dunbar
74a032e0ed remove redundant duplicated line of code
this line was there twice. 2nd will have no effect. probably cut and paste error?
```
    sizeCombo.setMaximumRowCount(9);
```
2024-11-05 22:16:13 +07:00
Ryan Kurtz
89198b3bf9 Merge branch 'GP-0_ryanmkurtz_PR-7152_hippietrail_two-spellos' 2024-11-05 08:45:31 -05:00
Ryan Kurtz
6f7acdc65c GP-0: Certify 2024-11-05 08:44:22 -05:00
Ryan Kurtz
91c532f6dd Merge remote-tracking branch 'origin/GP-5093_ryanmkurtz_whatsnew--SQUASHED' 2024-11-05 08:31:34 -05:00
Ryan Kurtz
7f515c5e0e GP-5093: Converting 'What's New' to Markdown 2024-11-05 08:30:54 -05:00
hippietrail
f531fc0513 misspellings of "choosen" and "preceed" 2024-11-05 19:36:00 +07:00
hippietrail
a23e57cddd margin bars are on the right, not the left; other suggested changes 2024-11-05 13:49:28 +07:00
ghidra1
ba63182010 GP-0 Set JVM ErrorFile path for jUnit tests 2024-11-04 16:25:46 -05:00
James
af48d4fe38 GP-5054 account for endianness in VariableStorage.checkVarnodes 2024-11-04 20:50:05 +00:00
Ryan Kurtz
befe67a637 GP-5078: Adding a little to modules' README 2024-11-04 11:27:05 -05:00
Ryan Kurtz
c702d7c66d Merge remote-tracking branch 'origin/GP-5083_d-millar_warn_def_lang' 2024-11-04 07:53:41 -05:00
Ryan Kurtz
b3e421a162 Merge remote-tracking branch
'origin/GP-5089_Dan_PR-7118_electricworry_issue-6662' (Closes #7118)
2024-11-04 07:50:33 -05:00
Ryan Kurtz
729b6737db Merge remote-tracking branch
'origin/GP-5034_d-millar_obscure_targets--SQUASHED' (Closes #6386)
2024-11-04 07:47:50 -05:00
Ryan Kurtz
dd282d3153 Merge remote-tracking branch 'origin/GP-5078_ryanmkurtz_modules' 2024-11-04 07:27:50 -05:00
ghizard
fb15252442 GP-5072 - PDB - Progress on fixing up the processing of older PDB
versions
2024-11-03 13:31:09 -05:00
Dan
2d5700251d GP-5089: Certify 2024-11-01 15:08:46 -04:00
ghidra1
b6540da30a Merge remote-tracking branch 'origin/patch' 2024-11-01 15:05:41 -04:00
Dan
f02c7c8b63 GP-5089: Fix section refresh for modules containing spaces. 2024-11-01 15:00:17 -04:00
d-millar
3b4fefe3ba GP-5034: post-review
GP-5034: oops
GP-5034: mods for android etc
GP-5034: running android debugger
GP-5034: running android debugger
GP-5034: start of dalvik changes
GP-5034: start of Dalvik changes
GP-5034: android-native launcher
GP-5034: added mips:3000
GP-5034: fix for arch error
2024-11-01 14:36:53 -04:00
Electric Worry
aeddb602d7 Fixes #6662: Add qemu-gdb option to get all section mappings for target. 2024-11-01 14:36:34 -04:00
Ryan Kurtz
ffaa97cbd9 Merge remote-tracking branch 'origin/GP-4906_Dan_optsImageTag--SQUASHED' 2024-10-31 13:50:23 -04:00
Dan
d5a25fa6a3 GP-4906: Implement @image-opt. Have local-gdb use it. Fix 'null'. 2024-10-31 12:29:44 -04:00
Ryan Kurtz
faf55a8de6 GP-5078: Improvements to Ghidra Module directory layout 2024-10-31 10:34:26 -04:00
d-millar
c06fc18cc2 GP-5083: print warnings 2024-10-31 14:19:48 +00:00
Ryan Kurtz
73224da27b Merge remote-tracking branch 'origin/GP-4894_JDI_tests_RB1029--SQUASHED' 2024-10-31 06:25:36 -04:00
Ryan Kurtz
ee5c436939 Merge remote-tracking branch 'origin/GP-5077_PR-6373_ekilmer_cpp-add-missing-index-check' 2024-10-31 06:19:00 -04:00
Ryan Kurtz
c8dc5015bd Merge remote-tracking branch 'origin/GP-5073_InliningRecursionBug'
(Closes #5824)
2024-10-31 06:15:19 -04:00
Ryan Kurtz
f8dc74b43e Merge remote-tracking branch 'origin/patch' 2024-10-31 06:03:45 -04:00
d-millar
cce33f772e GP-4894: Improve and better test Java debug connector. 2024-10-30 15:48:19 -04:00
caheckman
dde9fed837 GP-5073 Fix for inlining infinite loop 2024-10-30 17:29:01 +00:00
Ryan Kurtz
9f43760924 GP-0: Fixing PyGhidra "wheel" dependency issue 2024-10-30 08:48:38 -04:00
Ryan Kurtz
3bfe65facb Merge branch 'GP-0_ryanmkurtz_PR-7014_gemesa_fidb-create-empty-db' 2024-10-30 07:42:13 -04:00
Ryan Kurtz
6b2932ccbb GP-0: Certify 2024-10-30 07:38:49 -04:00
Ryan Kurtz
4906b5801d Merge branch 'GP-4816_ryanmkurtz_PR-7120_dc3-tsd_typestubs'
(Closes #7120)
2024-10-30 07:31:34 -04:00
DC3-TSD
0ab139eb79 typestub bug fixes 2024-10-30 07:20:01 -04:00
Ryan Kurtz
afa8676dea Merge branch 'GP-0_ryanmkurtz_PR-7125_hippietrail_filesystem-storage-copyedit' 2024-10-30 06:53:48 -04:00
Ryan Kurtz
3c5edba8ad Merge branch 'GP-0_ryanmkurtz_bsim-class-html' 2024-10-30 06:51:08 -04:00
Ryan Kurtz
13f3a70334 GP-0: Adding support for footnotes 2024-10-30 06:50:36 -04:00
hippietrail
d500c3a4ed couple of spellos and odd verb agreement etc 2024-10-30 16:33:27 +07:00
Eric Kilmer
fdde0743e0 decompiler-cpp: Add missing for-loop index variable check
Prevent indexing out of bounds
2024-10-29 23:31:34 +00:00
philpem
c86d9069c5
Update 6805.slaspec 2024-10-29 19:31:21 +00:00
philpem
e04e47a745
Update HCS_HC.sinc
Incorporate fixes from PR
2024-10-29 19:25:20 +00:00
Ryan Kurtz
66068da147 GP-0: BSim class HTML files are now generated during the build 2024-10-29 13:14:18 -04:00
Ryan Kurtz
aaa19420e9 Merge remote-tracking branch
'origin/GP-5040-dragonmacher-decompiler-hl-fix--SQUASHED' (Closes #7077)
2024-10-29 12:59:30 -04:00
Ryan Kurtz
1eec3a345a Merge remote-tracking branch
'origin/GP-4839-dragonmacher-decompiler-text-search--SQUASHED'
(Closes #6795)
2024-10-29 12:55:37 -04:00
Ryan Kurtz
d721a2d86d Merge branch 'GP-5019_ryanmkurtz_pyghidra-pep668' 2024-10-29 12:53:04 -04:00
Ryan Kurtz
f01fd83397 GP-5019: PyGhidra launches better on externally managed PEP 668 systems
(like ubuntu)
2024-10-29 12:52:39 -04:00
Ryan Kurtz
d026dd2316 Merge remote-tracking branch
'origin/GP-5052-dragonmacher-context-menu-update--SQUASHED'
(Closes #7021, Closes #566)
2024-10-29 12:49:29 -04:00
Ryan Kurtz
b1fcad4b1c Merge remote-tracking branch 'origin/GP-5071_dev747368_moar_fsb_icons' 2024-10-29 12:47:31 -04:00
Ryan Kurtz
24a5928c3c Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-10-29-24' 2024-10-29 11:29:31 -04:00
dragonmacher
fedb08c845 Test fixes 2024-10-29 11:11:31 -04:00
dev747368
6a246d4acb GP-5071 more FSB icons 2024-10-28 23:08:15 +00:00
dragonmacher
b62b8f680d GP-5052 - Moved some context menu actions into sub-menus 2024-10-28 18:10:06 -04:00
dragonmacher
7a4215c2a4 GP-5040 - Decompiler - Fixed a bug when renaming a token that caused highlights to persists 2024-10-28 17:57:21 -04:00
Ryan Kurtz
7bc15c87c1 Merge remote-tracking branch
'origin/GP-5069_dev747368_PR-7086_hippietrail_exe-icon' (Closes #7086)
2024-10-28 17:40:50 -04:00
dragonmacher
90eba4f9e0 review fixes; waiting for master update
GP-4839 - Decompiler Text Finder - Added the ability to search decompiled text
2024-10-28 17:39:11 -04:00
dev747368
44db4c9d92 GP-5069 PR #7086 update some fsb icons, fix NPE 2024-10-28 21:35:11 +00:00
Ryan Kurtz
38bf8c63c3 GP-0: Certify 2024-10-28 17:31:39 -04:00
Ryan Kurtz
a4fe327f7c Merge remote-tracking branch 'origin/patch' 2024-10-28 17:29:44 -04:00
Ryan Kurtz
7f1469a1cf Merge remote-tracking branch 'origin/GP-5038_RecursiveTypedef' 2024-10-28 17:21:51 -04:00
Ryan Kurtz
c62834222d Merge remote-tracking branch 'origin/GP-5006_OverrideHashCollisions'
(Closes #3694)
2024-10-28 17:20:16 -04:00
Ryan Kurtz
860915d129 Merge remote-tracking branch 'origin/GP-5031_dev747368 2024-10-28 17:14:50 -04:00
caheckman
2e09cf4ef3 GP-5038 Support for data-type recursion through typedef 2024-10-28 20:44:52 +00:00
dev747368
cdf309cfc7 GP-5031 PR #7070 followup, invert '.' dot logic, use ext for txt, jpg
Invert the file name extension convention from yes-leading-dot to
no-leading-dot, to match other classes that specify extensions.

Use the filename ext for the txt and image fsbfilehandlers.
2024-10-28 20:38:24 +00:00
Ryan Kurtz
6d5a5da013 Merge branch 'GP-0_ryanmkurtz_omf' 2024-10-28 15:26:00 -04:00
Ryan Kurtz
1c532069b1 Merge remote-tracking branch 'origin/GP-4877_dev747368_libretranslate_support' 2024-10-28 15:25:34 -04:00
Ryan Kurtz
6a18427e4c GP-0: Forcing OMF-51 headers to be little endian 2024-10-28 15:24:56 -04:00
dev747368
5738a6c2df GP-4877 add LibreTranslate string translation service provider
This allows the user to translate strings in a program using an external
LibreTranslate server.
2024-10-28 17:48:12 +00:00
Ryan Kurtz
df050c0556 Merge branch 'GP-0_ryanmkurtz_PR-7112_hippietrail_decendent' 2024-10-28 13:43:30 -04:00
Ryan Kurtz
24cdf2d01e GP-0: Certify 2024-10-28 13:40:52 -04:00
hippietrail
d28b139933 correct decendant/decendent/descendent in identifiers, errors, and comments 2024-10-28 23:48:28 +07:00
Ryan Kurtz
9d641ed2da GP-0: Upping MAX_NODES_BEFORE_ORGANIZING from 40 to 100 to prevent
grouping of Symbol Tree Imports
2024-10-28 11:44:30 -04:00
Ryan Kurtz
9e589a451a Merge remote-tracking branch 'origin/GP-2418-dragonmacher-instruction-search-add-button--SQUASHED' 2024-10-28 10:51:21 -04:00
Ryan Kurtz
df911be883 Merge remote-tracking branch 'origin/GP-1-dragonmacher-table-refactor' 2024-10-28 10:19:13 -04:00
Andras Gemes
84ebbd6259
BSim: Add DN_OPTION to fix bsim_ctl changeauth for PKI authentication 2024-10-26 11:20:27 +02:00
dragonmacher
5d58d61506 Minor refactor of table address retrieval and some options constants 2024-10-25 18:23:02 -04:00
Ryan Kurtz
7ddd8665b7 Merge remote-tracking branch 'origin/patch' 2024-10-25 15:08:44 -04:00
dragonmacher
8d9cd1be41 GP-2418 - Added a button to add instructions to the current table 2024-10-25 15:04:59 -04:00
Ryan Kurtz
f22ad073cf Merge branch 'GP-0_ryanmkurtz_PR-7090_hippietrail_dylib' 2024-10-25 14:55:28 -04:00
Ryan Kurtz
fbbb875a9f GP-0: Converting GhidraSleighEditor docs to Markdown 2024-10-25 11:09:37 -04:00
Ryan Kurtz
6a7bdfe105 Merge remote-tracking branch 'origin/patch' 2024-10-25 07:36:39 -04:00
Andrew Dunbar
deaaadd7d7
add macOS macho-o dynamic library file extension .dylib to file dialog filter
The `LOADABLE_FILES_FILTER` `ExtensionFileFilter` contains well-known file extensions of loadable code files such as `.exe`, `.dll`, `.o`, etc but was missing `.dylib` used for dynamic libraries in Mach-O format on macOS
2024-10-25 09:57:20 +07:00
Ryan Kurtz
aff12cd6e0 Merge branch 'GP-0_ryanmkurtz_InstallationGuide' 2024-10-24 13:30:09 -04:00
Ryan Kurtz
3de9f99883 GP-0: Converting InstallationGuide.html to Markdown 2024-10-24 13:26:52 -04:00
Ryan Kurtz
141f96efcc Merge branch 'GP-0_ryanmkurtz_PR-7080_hippietrail_grammar' 2024-10-24 11:42:10 -04:00
hippietrail
39ca415df1 add oxygen icons for .exe / .dll / .dylib plus a few others 2024-10-24 20:18:42 +07:00
Andras Gemes
d74764ebf5
BSim: Enable stderr display on console in runCommand() 2024-10-24 12:47:01 +02:00
Ryan Kurtz
e476b20476 Merge remote-tracking branch 'origin/patch' 2024-10-24 06:08:33 -04:00
Andras Gemes
7fc33dd979
BSim: Fix incomplete commands in DatabaseConfiguration.html 2024-10-23 19:48:37 +02:00
Andrew Dunbar
9e4a79805e
English copyedit
The meaning ... are fairly straightforward -> The meanings ... are fairly straightforward
2024-10-23 13:33:18 +07:00
Ryan Kurtz
99ab4a6ec9 Merge remote-tracking branch 'origin/patch' 2024-10-22 13:50:31 -04:00
Ryan Kurtz
64b70d8ef7 Merge branch 'GP-0_ryanmkurtz_PR-7076_gemesa_bsim-osdir' 2024-10-22 07:04:11 -04:00
Andras Gemes
0da8256967
BSim: Fix paths in DatabaseConfiguration.html 2024-10-21 20:11:45 +02:00
hippietrail
87c5523a06 Let FileSystem extensions set filetype icons in filesystem browser 2024-10-19 00:09:59 +08:00
Ryan Kurtz
3809a7695d Merge remote-tracking branch 'origin/GP-5016_d-millar_initial_state' 2024-10-17 12:40:25 -04:00
Ryan Kurtz
3107df79b5 Merge remote-tracking branch 'origin/GP-3821-dragonmacher-open-program-dialog' 2024-10-17 10:59:28 -04:00
Ryan Kurtz
64e9b2bff5 Merge remote-tracking branch 'origin/patch' 2024-10-17 10:53:45 -04:00
Ryan Kurtz
990479f79b Merge remote-tracking branch 'origin/GP-4987_ryanmkurtz_gradle-markdown' 2024-10-17 06:00:19 -04:00
Ryan Kurtz
35910a36de Merge remote-tracking branch 'origin/GP-1-dragonmacher-ui-border-bug' 2024-10-17 05:58:39 -04:00
Ryan Kurtz
cf3d559760 Merge branch 'GP-0_ryanmkurtz_PR-7057_gtackett_omf51' (Closes #7057) 2024-10-17 05:56:37 -04:00
Ryan Kurtz
ac6bf97877 GP-0: Certify/Format 2024-10-17 05:55:33 -04:00
philpem
67bfea173f
Update HCS_HC.sinc
Fixes https://github.com/NationalSecurityAgency/ghidra/issues/7064 for 68HC05
2024-10-17 01:24:10 +01:00
philpem
270e6867db
Update 6805.slaspec
Fix for https://github.com/NationalSecurityAgency/ghidra/issues/7064 (incorrect handling of X-indexed JMP and JSR)
2024-10-17 00:10:26 +01:00
dragonmacher
52f0367961 GP-3821 - Updated the Open Program dialog to select the current program 2024-10-16 13:55:55 -04:00
Ryan Kurtz
de7c3eaee2 Merge branch 'GP-0_ryanmkurtz_PR-7059_gemesa_askscript-property-typo' 2024-10-16 12:27:51 -04:00
d-millar
73ce6cf068 GP-5016: upping the number of states 2024-10-16 16:00:40 +00:00
Andras Gemes
c89a17c2ee
Base: Fix typo in AskScript.properties 2024-10-16 11:18:26 +02:00
dragonmacher
d53aa193f0 Fixed Structure Editor UI border bug when switching Look and Feel; fixed
help location inception
2024-10-15 18:40:19 -04:00
ghidra1
082cc1746e Merge remote-tracking branch 'origin/patch' 2024-10-15 17:37:36 -04:00
ghidra1
221259bc60 Merge branch 'GP-5013_ghidra1_DisassemblerRevision' 2024-10-15 17:34:10 -04:00
ghidra1
d5ae0f96e8 GP-5013 Rework disassembler to address special use cases 2024-10-15 17:32:52 -04:00
ghidra1
d97df93cd5 Merge branch 'GP-4967_Dan_emuFixes' 2024-10-15 17:30:39 -04:00
Dan
e8c28c2a84 GP-4967: Corrected issues related to emulator cached block instruction
re-use.
2024-10-15 17:27:49 -04:00
Ryan Kurtz
9d67b8c6ef Merge remote-tracking branch 'origin/GP-5014_ghizard_MDMang_add_tests_for_vxtable_parentage_coded_as_backref' 2024-10-15 13:48:58 -04:00
gtackett
c6d8991381
Update Omf51RecordTypes.java
Implements #7056
2024-10-15 11:08:48 -04:00
Ryan Kurtz
86632adc77 Merge branch 'GP-0_ryanmkurtz_PR-7046_asadbek064_fix-javadoc-DecompInterface-openProgram' 2024-10-15 07:53:32 -04:00
Ryan Kurtz
3558fe59a4 GP-0: Improving python build error reporting (Closes #7036) 2024-10-15 07:53:17 -04:00
ghizard
6ff6b26cb7 GP-5014 - MDMang - add tests for vxtable parentage coded as backref 2024-10-15 11:40:30 +00:00
Ryan Kurtz
ddf1efd486 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-10-12-24' 2024-10-15 07:24:29 -04:00
Asad
1d11f8f133 Fix outdated JavaDoc for DecompInterface.openProgram
The JavaDoc for the DecompInterface.openProgram method referenced an
obsolete second argument (language). Updated the documentation to
match the current method signature, which only takes a single
argument (program).

cc: @sheetjsdev
2024-10-13 17:47:24 -04:00
Andras Gemes
16f549aaa5
FunctionID: Add scripts for creating and attaching FID databases 2024-10-13 19:57:45 +02:00
dragonmacher
7cb190620c Test fixes 2024-10-12 15:17:07 -04:00
Ryan Kurtz
9877d30d94 Merge remote-tracking branch 'origin/GP-4998-dragonmacher-byte-viewer-font-fix' 2024-10-11 12:52:27 -04:00
Ryan Kurtz
86088f058b Merge remote-tracking branch 'origin/GP-4947-dragomacher-function-graph-toggle-action' 2024-10-11 12:50:57 -04:00
Ryan Kurtz
d069fbad2b Merge remote-tracking branch 'origin/GP-2228-dragonmacher-structured-editor-error-message' 2024-10-11 12:49:08 -04:00
Ryan Kurtz
d4a3e7d4bf GP-0: Fixing warning in GhidraScript.java 2024-10-11 08:55:20 -04:00
Ryan Kurtz
a3d606ad87 Merge remote-tracking branch
'origin/GP-5007-dragonmacher-backspace-for-key-binding--SQUASHED'
(Closes #6972)
2024-10-11 08:21:58 -04:00
Ryan Kurtz
7d5a514f25 GP-5010: GhidraScript.askFile() no longer throws an
IllegalArgumentException in headless mode when passing in a valid path
argument to a file that does not yet exist (Closes #7025)
2024-10-11 08:01:51 -04:00
Ryan Kurtz
1929645373 GP-0: Launch headless scripts in headless mode to avoid macOS Dock
activity (Closes #6859)
2024-10-11 07:13:39 -04:00
Ryan Kurtz
65450ac705 Merge remote-tracking branch 'origin/patch' 2024-10-11 06:35:06 -04:00
dragonmacher
f133c6c971 GP-4947 - Function Graph - Added an action to toggle between the Listing
and Function Graph views (ctrl-space)
2024-10-10 20:28:01 -04:00
dragonmacher
83d2cbcf31 GP-2228 - Added a status message when applying a favorite data type to a
non-contiguous selection is not allowed
2024-10-10 18:38:29 -04:00
dragonmacher
5a56718e4a GP-4998 - Fixed bug that cleared the Byte Viewer 'Address' column when
changing fonts
2024-10-10 17:52:19 -04:00
dragonmacher
44707fd7dc GP-5007 - Update key bindings to allow users to use Enter and Escape 2024-10-10 15:58:39 -04:00
Ryan Kurtz
065a845d4a Merge remote-tracking branch 'origin/GP-5008-dragonmacher-vt-exception'
(Closes #7028)
2024-10-10 14:09:40 -04:00
dragonmacher
9579d9e145 GP-5008 - Fixed exception seen in Version Tracking 2024-10-10 12:13:06 -04:00
Ryan Kurtz
f420df8693 Merge remote-tracking branch 'origin/patch' 2024-10-10 07:44:41 -04:00
Ryan Kurtz
81f93d3f23 Merge remote-tracking branch 'origin/GP-1-dragonmacher-help-fix' 2024-10-10 06:21:26 -04:00
caheckman
33646bbcdc Move UNASSIGNED check into LocalSymbolMap 2024-10-09 23:06:43 +00:00
dragonmacher
29fe2d8b17 Fix for help building on Windows 2024-10-09 16:06:10 -04:00
caheckman
5fa798429f GP-5006 Address hash collisions in DataTypeSymbol 2024-10-09 17:57:30 +00:00
Ryan Kurtz
9108198ba7 Merge remote-tracking branch 'origin/GP-4984-dragonmacher-memory-map-table-fix' 2024-10-09 11:27:02 -04:00
Ryan Kurtz
1a944fd96a Merge remote-tracking branch
'origin/GP-3145-dragonmacher-help-viewer-exception' (Closes #7010,
Closes #7016, Closes #6048)
2024-10-09 09:35:20 -04:00
Ryan Kurtz
f40d19d856 Merge remote-tracking branch 'origin/GP-4976_SendTypeRef' 2024-10-09 09:32:35 -04:00
Ryan Kurtz
3e067222be Merge remote-tracking branch 'origin/patch' 2024-10-09 09:27:14 -04:00
Ryan Kurtz
ce6bbe6236 GP-0: Fixing python build issue (Closes #7027) 2024-10-09 06:41:37 -04:00
caheckman
e80f52c22e GP-4976 Only send back <typeref> 2024-10-08 20:21:52 +00:00
Ryan Kurtz
cb5ab633de Merge branch 'GP-0_ryanmkurtz_PR-7023_plucia-mitre_vscode-formatter' 2024-10-08 12:03:29 -04:00
Ryan Kurtz
8efa9a181d Merge remote-tracking branch 'origin/patch' 2024-10-08 10:59:11 -04:00
Ryan Kurtz
fbd7ceac97 Merge branch 'GP-0_ryanmkurtz_python' 2024-10-08 09:58:52 -04:00
Ryan Kurtz
5f24502d0f GP-0: Python build improvements 2024-10-08 09:49:08 -04:00
Ryan Kurtz
4b14601927 Merge remote-tracking branch 'origin/GP-1-dragonmacher-search-enum-field-fix' 2024-10-08 06:30:34 -04:00
Ryan Kurtz
7f725922bb Merge remote-tracking branch 'origin/GP-1-dragonmacher-enum-action-help' 2024-10-08 06:30:11 -04:00
dragonmacher
3606b3364d GP-3145 - Squash some known unfixable exceptions ecountered when using
the Help Window
2024-10-07 18:30:23 -04:00
Peter Lucia
e6ed8da679
Update VSCodeProjectScript.java
Pre-populate VSCodeProject settings with Ghidra formatter preferences.
2024-10-07 17:28:53 -04:00
dragonmacher
5d499c990e Added a help entry for an action missing help 2024-10-07 16:42:23 -04:00
dragonmacher
1e0db13430 Fixed bug seen when searching for uses of an enum field 2024-10-07 15:10:18 -04:00
Ryan Kurtz
8e3aaf0304 Merge branch 'GP-0_ryanmkurtz_PR-7015_gemesa_fidb-list-domain-paths' 2024-10-07 14:04:30 -04:00
Ryan Kurtz
3686ab2253 GP-0: Certify 2024-10-07 14:03:37 -04:00
Ryan Kurtz
6805c6bc20 Merge remote-tracking branch 'origin/patch' 2024-10-07 11:21:29 -04:00
Ryan Kurtz
8fd1dffd72 Merge branch 'GP-0_ryanmkurtz_PR-7008_hippietrail_grammar' 2024-10-07 06:50:52 -04:00
Ryan Kurtz
b8369d242a Merge remote-tracking branch 'origin/GP-4973_ryanmkurtz_default-themes' 2024-10-07 06:30:36 -04:00
Andras Gemes
a26545f42c
FunctionID: Add description and category tag to ListDomainFiles.java 2024-10-06 18:37:10 +02:00
Andrew Dunbar
6a396af09e
minor English copyedit
The list ... are similar to ... -> The list ... is similar to ...
2024-10-05 11:40:55 +07:00
dragonmacher
f4b89fd26c GP-4984 - Fixed row selection while using the filter; updated columns to
be resizable
2024-10-04 16:24:22 -04:00
Ryan Kurtz
4ab69b08e5 Merge remote-tracking branch
'origin/GP-4993-dragonmacher-fast-scrolling-fix' (Closes #6952)
2024-10-04 12:59:41 -04:00
Ryan Kurtz
bd631d3ec4 GP-4973: Changing linux default theme from "Nimbus" to "Flat Light" 2024-10-04 12:55:51 -04:00
dragonmacher
6496d8ece2 GP-4993 - Fast scrolling fix for Flat Laf 2024-10-04 11:38:35 -04:00
Ryan Kurtz
7504acdb4a GP-4987: Generating HTML from Markdown 2024-10-04 11:13:44 -04:00
Ryan Kurtz
224ffee47a GP-0: Fixing script file permissions 2024-10-04 07:52:09 -04:00
Ryan Kurtz
0ed54b066d Merge remote-tracking branch 'origin/GP-4969-dragonmacher-component-provider-visible-method' 2024-10-04 07:41:49 -04:00
Ryan Kurtz
6315aa68df Merge remote-tracking branch 'origin/GP-4970-dragonmacher-help-fix' 2024-10-04 07:38:12 -04:00
Ryan Kurtz
d8446019f5 Merge remote-tracking branch 'origin/patch' 2024-10-04 07:37:30 -04:00
dragonmacher
98f849aa45 GP-4969 - Added a callback to know when a Component Provider is first
made displayable
2024-10-03 12:29:19 -04:00
Ryan Kurtz
5f4c1824e2 Merge branch 'GP-0_ryanmkurtz_PR-6979_hippietrail_sleigh-doc-fixes' 2024-10-03 11:25:54 -04:00
dragonmacher
81212432a3 GP-4970 - Fixed broken help TOC link that points to generated file 2024-10-03 09:49:29 -04:00
Ryan Kurtz
55aaef9b76 Merge branch 'GP-0_ryanmkurtz_PR-6998_hippietrail_typos' 2024-10-03 08:10:18 -04:00
Ryan Kurtz
3b11ac9ede Merge remote-tracking branch
'origin/GP-4982-dragonmacher-action-name-spelling' (Closes #6977)
2024-10-03 06:11:20 -04:00
Ryan Kurtz
0c9e060b17 Merge remote-tracking branch
'origin/GP-4983-dragonmacher-script-table-columns' (Closes #6918)
2024-10-03 06:09:59 -04:00
Andrew Dunbar
5afb5e290d
typos etc in GhidraFilesystemStorage.html 2024-10-03 16:31:02 +07:00
Ryan Kurtz
a8f5ee3e2f Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-10-2-24' 2024-10-02 13:03:58 -04:00
dragonmacher
cd93bb4abb Test fixes 2024-10-02 12:38:28 -04:00
dragonmacher
aba954845c GP-4983 - Updated the script table to have all resizable columns 2024-10-02 12:24:12 -04:00
dragonmacher
5913adbb42 GP-4982 - Fixed bad action name 2024-10-01 16:29:01 -04:00
Ryan Kurtz
23b75ec040 Merge remote-tracking branch 'origin/GP-4975_ghizard_PDB_allow_VxTable_mangled_symbols_to_be_primary' 2024-10-01 13:48:51 -04:00
Ryan Kurtz
3cc122cffa Merge remote-tracking branch 'origin/GP-4955_ryanmkurtz_elf--SQUASHED'
(Closes #6912)
2024-10-01 13:44:46 -04:00
Ryan Kurtz
9aba9d81be GP-4955: The ElfLoader imagebase option can now contain a leading 0x 2024-10-01 13:43:42 -04:00
Ryan Kurtz
5b4a391ae4 Merge remote-tracking branch 'origin/GP-4930_ghidragon_improving_goto' 2024-10-01 12:03:39 -04:00
ghidragon
0e0b0255f2 GP-4930 Improved GoTo dialog to support full and partial namespace paths with wildcard support 2024-10-01 11:52:32 -04:00
Ryan Kurtz
79f2d35d9b Merge branch 'GP-0_ryanmkurtz_PR-6978_hippietrail_typo' 2024-10-01 09:10:57 -04:00
Ryan Kurtz
792a32ba83 Merge remote-tracking branch 'origin/patch' 2024-10-01 08:53:15 -04:00
Ryan Kurtz
2c4635fa2a GP-4978: Converting GhidraDev README to markdown 2024-10-01 08:31:13 -04:00
ghizard
b776df4c7c GP-4975 - PDB - allow VxTable mangled symbol to be primary for Demangler 2024-09-30 21:42:44 +00:00
Ryan Kurtz
6d0081c69f Merge remote-tracking branch 'origin/patch' 2024-09-30 11:14:31 -04:00
Ryan Kurtz
472484902c GP-0: Fixing prepdev python dependency issue (Closes #6962) 2024-09-30 07:58:03 -04:00
Ryan Kurtz
71d378655e GP-4919: Improving Load Libraries results dialog for programs with no
libraries
2024-09-30 06:30:45 -04:00
Andrew Dunbar
b63b5aabba
attempt to clarify hard-to-read sentence 2024-09-30 18:39:29 +10:00
Andrew Dunbar
f69515f9bc
These flags are typically have -> These flags typically have 2024-09-30 18:17:49 +10:00
Andrew Dunbar
3847cdab52
GhidraSleighEditor docs stated wrong directory for build_README.txt
As confirmed [in this discussion](https://github.com/NationalSecurityAgency/ghidra/discussions/6961#discussioncomment-10774377), the `build_README.txt` file is not located in the `ghidra.xtext.sleigh.feature` directory but in the `ghidra.xtext.sleigh` directory.

This corrects the docs to give the correct directory for the build README.
2024-09-30 12:59:40 +07:00
Andrew Dunbar
cad1e86848
missing word in docs
When disassembling an instruction at a particular, the disassembler checks
->
When disassembling an instruction at a particular address, the disassembler checks
2024-09-30 12:47:32 +07:00
Ryan Kurtz
22f95a5eba Merge remote-tracking branch 'origin/GP-4725_ghizard_PDBUniversal_source_line_investigations--SQUASHED' 2024-09-27 11:12:42 -04:00
Ryan Kurtz
59f7b60a37 Merge remote-tracking branch 'origin/patch' 2024-09-27 06:36:40 -04:00
ghizard
91f82f9f90 GP-4725 - PDB work toward applying source lines information 2024-09-26 18:10:45 -04:00
ghidra1
c9016b7ebe Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-26 18:04:51 -04:00
Ryan Kurtz
8b5984da36 Merge remote-tracking branch 'origin/GP-4898_ghizard_demangler_intfc_and_swift_mods_and_tests--SQUASHED' 2024-09-26 14:03:44 -04:00
ghizard
c51f65c376 GP-4898 - more Demangler changes: interface, individual demanglers, tests 2024-09-26 13:58:46 -04:00
Ryan Kurtz
b78072c76f Merge remote-tracking branch
'origin/GP-4919_ryanmkurtz_loadlibs--SQUASHED' (Closes #396)
2024-09-26 12:30:59 -04:00
Ryan Kurtz
c5ebbe5c8d GP-4919: New 'Load Libraries' action that lets you load libraries after import 2024-09-26 12:28:54 -04:00
Ryan Kurtz
a1c6452798 Merge remote-tracking branch
'origin/GP-4962-dragonmacher-font-end-dispose-exception--SQUASHED'
(Closes #6937)
2024-09-26 06:04:57 -04:00
dragonmacher
5e5a8e3e6d Fixed exception closing the Front End 2024-09-25 15:17:11 -04:00
ghidra1
8d4e33cc50 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-25 14:13:01 -04:00
ghidra1
4e1532be14 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-25 13:44:40 -04:00
Ryan Kurtz
025cc9f702 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-25 09:16:57 -04:00
Ryan Kurtz
3e340f0a1b Merge remote-tracking branch 'origin/GP-4952_Dan_fixWatchesIntOr' 2024-09-24 14:17:49 -04:00
Ryan Kurtz
9e5c6fecf2 Merge remote-tracking branch 'origin/GP-1-dragonmacher-symbol-tree-exception-fix' 2024-09-23 17:28:16 -04:00
Ryan Kurtz
ff6988ad32 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-23 13:56:12 -04:00
Ryan Kurtz
9be248dae9 Merge branch 'GP-4898_ryanmkurtz_swift-demangler-fix' 2024-09-23 12:24:37 -04:00
Ryan Kurtz
ce2f8b94cf GP-4898: Fixes for the SwiftDemangler 2024-09-23 11:57:27 -04:00
Dan
447f6e6f01 GP-4952: Iterate in the correct direction. 2024-09-23 09:21:13 -04:00
dragonmacher
1862a7e559 Fixed a rare exception seen when the Symbol Tree is searching for a node
while its program is closed
2024-09-21 12:01:59 -04:00
Ryan Kurtz
fd1a448bf5 Merge remote-tracking branch 'origin/GP-1-dragonmacher-warning-message-fix' 2024-09-20 16:46:49 -04:00
dragonmacher
79179a8226 Fixed warning for recent font changes 2024-09-20 16:45:49 -04:00
Ryan Kurtz
8841a44bd0 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-20 16:41:52 -04:00
Ryan Kurtz
9951ddf199 Merge remote-tracking branch 'origin/GP-0-dragonmacher-test-fixes-9-20-24' 2024-09-20 16:32:50 -04:00
dragonmacher
6e047c9137 Test fixes 2024-09-20 16:25:47 -04:00
Ryan Kurtz
493d87cee0 Merge remote-tracking branch
'origin/GP-4873-dragonmacher-theming-font-tables--SQUASHED'
(Closes #6853)
2024-09-20 14:21:03 -04:00
dragonmacher
9a0cc8d547 GP-4873 - Updated tables to respond to font changes in real time; Added support for changing the monospaced font used by tables; Fixed tooltip in theme font table 2024-09-20 13:29:39 -04:00
Ryan Kurtz
5a981057a7 Merge remote-tracking branch 'origin/GP-0_ghizard_master_fix_GP-4898_tests_20240920' 2024-09-20 10:53:01 -04:00
ghizard
e19ddda820 GP-0 - fix GP-4898 tests 2024-09-20 14:51:35 +00:00
Ryan Kurtz
4b00fe17d5 Merge remote-tracking branch 'origin/GP-0_ghizard_master_fix_build_issue_with_due_to_GP-4898_20240920' 2024-09-20 08:04:38 -04:00
ghizard
247fa65287 GP-0 - fix build issue from GP-4898 2024-09-20 12:03:47 +00:00
Ryan Kurtz
c08736bf19 Merge remote-tracking branch 'origin/GP-4946_dev747368_gnudemangler_npe' 2024-09-20 07:15:08 -04:00
Ryan Kurtz
e9e74502b6 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-20 07:13:50 -04:00
ghidra1
57dbd2d37e Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-19 17:58:44 -04:00
dev747368
243fcec030 GP-4946 fix NPE 2024-09-19 21:16:37 +00:00
Ryan Kurtz
ce53fca3d3 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-19 13:38:55 -04:00
Ryan Kurtz
43fa27bc56 Merge remote-tracking branch 'origin/GP-1-dragonmacher-spelling-fix' 2024-09-19 10:50:58 -04:00
dragonmacher
a6b4328cc6 spelling fix 2024-09-19 10:48:03 -04:00
Ryan Kurtz
b641a822d3 Merge remote-tracking branch 'origin/GP-1-dragonmacher-table-column-visual--SQUASHED' 2024-09-19 10:32:14 -04:00
Ryan Kurtz
4cbd20b3df Merge remote-tracking branch
'origin/GP-4898_ghizard_MDMang_process_C_style_mangled_function_symbols--SQUASHED'
(Closes #1514)
2024-09-19 09:47:33 -04:00
ghizard
737ea4d31f GP-4898 - All Demanglers: added MangledContext; Microsoft MDMang: added
C-style mangling scheme and moved Demangler type hierarchies out of
MDMang
2024-09-19 12:26:30 +00:00
ghidra1
17c93909bb Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-18 16:16:30 -04:00
dragonmacher
76a1507e4c GP-1 - Created a visual aid for showing multiple sort columns 2024-09-18 15:32:08 -04:00
ghidra1
a85d15e11b Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-18 14:49:53 -04:00
Ryan Kurtz
1f8fd5d6ae Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-18 12:16:01 -04:00
ghidra1
bd4d110a51 GP-0 Correct PyGhidra installEditablePyGhidra build task to work offline 2024-09-17 13:31:42 -04:00
Ryan Kurtz
e7e62d0fe6 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-17 11:25:06 -04:00
Ryan Kurtz
8ffa9c24be Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-17 06:20:13 -04:00
Ryan Kurtz
2ee193293f Merge branch 'GP-0_ryanmkurtz_PR-6916_Ailuridae_fix-spelling-mistakes' 2024-09-16 15:00:50 -04:00
Ryan Kurtz
15b87a5e77 GP-0: Certify 2024-09-16 14:59:51 -04:00
Ryan Kurtz
7670733fd2 Merge remote-tracking branch 'origin/GP-4922-dragonmacher-highlight-stack-trace' 2024-09-16 14:52:17 -04:00
Ryan Kurtz
cdb48034ff Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-16 14:11:01 -04:00
Ryan Kurtz
5d5777e0af Merge remote-tracking branch 'origin/GP-4925_dev747368_PR-6823_roblabla_fix-xml-import-namespaces' 2024-09-16 12:40:49 -04:00
Ryan Kurtz
077ab676aa Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-16 12:37:32 -04:00
dragonmacher
26759777a9 GP-4922 - Fixed exception in creating highlights 2024-09-16 11:52:41 -04:00
Maurice Sotzny
d45820a850
Fix spelling mistakes 2024-09-14 11:09:31 +02:00
Ryan Kurtz
7148590e5c Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-13 13:50:25 -04:00
Ryan Kurtz
5b46133312 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-13 13:12:31 -04:00
Ryan Kurtz
3af17efcf6 Merge remote-tracking branch 'origin/GP-4911_ghidragon_remove_old_memory_search_code--SQUASHED' 2024-09-13 12:01:49 -04:00
Ryan Kurtz
2c0f43abf0 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-13 11:58:48 -04:00
ghidragon
5956b2d51f GP-4911 removed old memory search code 2024-09-13 11:17:51 -04:00
Ryan Kurtz
2d8c0fbdd8 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-13 10:29:50 -04:00
dev747368
1b26d26928 GP-4925 cert file from PR 2024-09-12 20:16:27 +00:00
Ryan Kurtz
0f5fc276d6 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-12 08:43:09 +00:00
Ryan Kurtz
2a7823b169 Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-11 11:43:19 -04:00
Ryan Kurtz
c378cc40a2 GP-4816: Not trying to create python virtual environment during prepdev
is python is not installed
2024-09-11 08:41:54 -04:00
Ryan Kurtz
b58a0c90b2 Merge remote-tracking branch 'origin/GP-4816_ryanmkurtz_PR-6900_dc3-tsd_python3' 2024-09-11 07:26:36 -04:00
Ryan Kurtz
4a8713162a GP-4816: Certify and other small fixes 2024-09-11 06:35:02 -04:00
Ryan Kurtz
593c12653d Merge remote-tracking branch 'origin/Ghidra_11.2' 2024-09-11 06:19:54 -04:00
Ryan Kurtz
60366a6287 GP-0: Upping master to 11.3 2024-09-10 05:57:21 -04:00
Ryan Kurtz
2a578c6936 Merge remote-tracking branch 'origin/GP-4760_d-millar_JDPA_revisited_RB20240909--SQUASHED' 2024-09-09 15:53:04 -04:00
Dan
6d39e7231c GP-4760: Implement TraceRmi for JPDA (Java/Dalvik targets) 2024-09-09 15:47:06 -04:00
Ryan Kurtz
5b81139197 Renaming Pyhidra to PyGhidra 2024-09-09 10:50:12 -04:00
DC3-TSD
92d0f1dacf Python3 support 2024-09-09 09:58:05 -04:00
ghidra1
38445e387b GP-4886 Do not assign storage for DEFAULT/unassigned datatype and create
undefined-typedef instead of DWORD-typedef as a default named type when
demangling.
2024-08-30 15:01:43 -04:00
roblabla
f0ec22e9b0 Fix wrong namespaces when using XML imports 2024-08-18 23:47:50 +02:00
Sleigh-InSPECtor
8473b248a1 AA64: fix ld<n>r registers 2024-04-30 15:43:55 +09:30
Vesa-Pekka Palmu
387c283e89 Github issue #5767 - 6x09.sinc: Fix COM instruction
The complement macro was erroneously always complementing A register
instead of the macro parameter op. This caused errors with the COMB
and COM OP1 instructions.

Closes #5767.
2024-03-20 17:56:14 +02:00
Antonio Vázquez Blanco
a38d30f233 processors:pic: Fix PIC16F description 2024-02-15 23:06:22 +01:00
Behrang Fouladi
220763c40f instruction decoding for armv8 stack pointer limit registers 2023-04-24 12:25:49 +02:00
9327 changed files with 676610 additions and 443165 deletions

View file

@ -29,98 +29,106 @@ Patches should be submitted in the form of Pull Requests to the Ghidra
[repository] on GitHub. But first, consider the following tips to ensure a
smooth process when submitting a patch:
- Ensure that the patch compiles and does not break any build-time tests.
- Be understanding, patient, and friendly; developers may need time to review
your submissions before they can take action or respond. This does not mean
your contribution is not valued. If your contribution has not received a
response in a reasonable time, consider commenting with a polite inquiry for
an update.
- Limit your patches to the smallest reasonable change to achieve your intended
goal. For example, do not make unnecessary indentation changes; but don't go
out of your way to make the patch so minimal that it isn't easy to read,
either. Consider the reviewer's perspective.
- Unless previously authorized by the Ghidra team, repackaging, renaming, and
other refactoring should not be part of any pull request. These types of
changes are difficult to review, pollute the git history making it harder
to do git forensics on regressions, and will likely conflict with other
changes that the Ghidra team is making internally.
- Avoid "find and replace" changes in your pull request. While it may be
tempting to globally replace calls to deprecated methods or change the style
of the code to fit your personal preference, these types of seemingly trivial
changes have likely not already been performed by the Ghidra team for good
reason.
- Focus your patches on bug fixes that were discovered through real-world
usage and testing, and on improvements that clearly satisfy a need in
Ghidra's functionality. Before you begin implementing, consider first
opening a dialogue with the Ghidra team to ensure that your efforts will
align with the goals of the project. This will significantly improve the odds
that your patch gets accepted.
- Unless it addresses a critical security update, avoid pull requests that update
jars or other 3rd party libraries. It is preferred that these changes are made
internally by the team. If you have a need for an updated library, please
submit an issue with your request instead of a pull request.
- Before submission, please squash your commits to using a message that starts
with the issue number and a description of the changes.
- Isolate multiple patches from each other. If you wish to make several
independent patches, do so in separate, smaller pull requests that can be
reviewed more easily.
- Be prepared to answer questions from reviewers. They may have further
questions before accepting your patch, and may even propose changes. Please
accept this feedback constructively, and not as a rejection of your proposed
change.
- Ensure that the patch compiles and runs in at least our development environment, and ideally our
full build too. Even the most trivial change done in the GitHub editor has a chance to cause
problems in the full development environment for unexpected reasons.
- If using "AI" to assist in development, please apply extra scrutity to its suggestions, in terms
of both correctness and adherence to our [legal](#legal) requirements.
- Be understanding, patient, and friendly; developers may need time to review your submissions
before they can take action or respond. This does not mean your contribution is not valued. If
your contribution has not received a response in a reasonable time, consider commenting with a
polite inquiry for an update.
- Limit your patches to the smallest reasonable change to achieve your intended goal. For example,
do not make unnecessary indentation changes; but don't go out of your way to make the patch so
minimal that it isn't easy to read, either. Consider the reviewer's perspective.
- Unless previously authorized by the Ghidra team, repackaging, renaming, and other refactoring
should not be part of any pull request. These types of changes are difficult to review, pollute
the git history making it harder to do git forensics on regressions, and will likely conflict with
other changes that the Ghidra team is making internally.
- Avoid "find and replace" changes in your pull request. While it may be tempting to globally
replace calls to deprecated methods or change the style of the code to fit your personal
preference, these types of seemingly trivial changes have likely not already been performed by the
Ghidra team for good reason.
- Focus your patches on bug fixes that were discovered through real-world usage and testing, and on
improvements that clearly satisfy a need in Ghidra's functionality. Before you begin
implementing, consider first opening a dialogue with the Ghidra team to ensure that your efforts
will align with the goals of the project. This will significantly improve the odds that your
patch gets accepted.
- Unless it addresses a critical security update, avoid pull requests that update jars or other 3rd
party libraries. It is preferred that these changes are made internally by the team. If you have
a need for an updated library, please submit an issue with your request instead of a pull request.
- Before submission, please squash your commits to using a message that starts with the issue number
and a description of the changes.
- Isolate multiple patches from each other. If you wish to make several independent patches, do so
in separate, smaller pull requests that can be reviewed more easily.
- Avoid submitting self-generated binary files as part of your pull request. Despite your best
intentions, our policy forbids accepting them because we cannot effectively review and validate
their content.
- Be prepared to answer questions from reviewers. They may have further questions before accepting
your patch, and may even propose changes. Please accept this feedback constructively, and not as a
rejection of your proposed change.
## Review
- We welcome code reviews from anyone. A committer is required to formally
accept and merge the changes.
- Reviewers will be looking for things like threading issues, performance
implications, API design, duplication of existing functionality, readability
and code style, avoidance of bloat (scope-creep), etc.
- We welcome code reviews from anyone. A committer is required to formally accept and merge the
changes.
- Reviewers will be looking for things like threading issues, performance implications, API design,
duplication of existing functionality, readability and code style, avoidance of bloat
(scope-creep), etc.
- Reviewers will likely ask questions to better understand your change.
- Reviewers will make comments about changes to your patch:
- MUST means that the change is required
- SHOULD means that the change is suggested, further discussion on the
subject may be required
- SHOULD means that the change is suggested, further discussion on the subject may be required
- COULD means that the change is optional
## Getting Started
Once available, please see the [developer's guide][devguide] for instructions to set up a suitable development environment.
Once available, please see the [developer's guide][devguide] for instructions to set up a suitable
development environment.
## Timeline and Managing Expectations
As we continue to engage contributors and learn best practices for running a successful open source project, our processes
and guidance will likely evolve. We will try to communicate expectations as we are able and to always be responsive. We
hope that the community will share their suggestions for improving this engagement. Based on the level of initial interest
we receive and the availability of resources to evaluate contributions, we anticipate the following:
As we continue to engage contributors and learn best practices for running a successful open source
project, our processes and guidance will likely evolve. We will try to communicate expectations as
we are able to and be responsive. We hope that the community will share their suggestions for
improving this engagement. Based on the level of initial interest we receive and the availability
of resources to evaluate contributions, we anticipate the following:
- We will initially prioritize pull requests that include small bug fixes and code that addresses potential vulnerabilities
as well as pull requests that include improvements for processor language specifications because these require a
reasonable amount of effort to evaluate and will help us exercise and revise our process for accepting contributions. In
other words, we are going to start small in order to work out the kinks first.
- We are committed to maintaining the integrity and security of our code base. In addition to the careful review the
maintainers will give to code contributions to make sure they do not introduce new bugs or vulnerabilities, we will be
trying to identify best practices to incorporate with our open source project so that contributors can have more control
over whether their contributions are accepted. These might include things like style guides and requirements for tests and
documentation to accompany some code contributions. As a result, it may take a long time for some contributions to be
accepted. This does not mean we are ignoring them.
- We are committed to integrating this GitHub project with our team's regular development work flow so that the open source
project remains dynamic and relevant. This may affect our responsiveness and ability to accept pull requests
quickly. This does not mean we are ignoring them.
- Not all innovative ideas need to be accepted as pull requests into this GitHub project to be valuable to the community.
There may be times when we recommend that you just share your code for some enhancement to Ghidra from your own
repository. As we identify and recognize extensions that are of general interest to the reverse engineering community, we
may seek to incorporate them with our baseline.
- We will initially prioritize pull requests that include small bug fixes and code that addresses
potential vulnerabilities as well as pull requests that include improvements for processor
language specifications because these require a reasonable amount of effort to evaluate and will
help us exercise and revise our process for accepting contributions. In other words, we are going
to start small in order to work out the kinks first.
- We are committed to maintaining the integrity and security of our code base. In addition to the
careful review the maintainers will give to code contributions to make sure they do not introduce
new bugs or vulnerabilities, we will be trying to identify best practices to incorporate with our
open source project so that contributors can have more control over whether their contributions
are accepted. These might include things like style guides and requirements for tests and
documentation to accompany some code contributions. As a result, it may take a long time for some
contributions to be accepted. This does not mean we are ignoring them.
- We are committed to integrating this GitHub project with our team's regular development work flow
so that the open source project remains dynamic and relevant. This may affect our responsiveness
and ability to accept pull requests quickly. This does not mean we are ignoring them.
- Not all innovative ideas need to be accepted as pull requests into this GitHub project to be
valuable to the community. There may be times when we recommend that you just share your code for
some enhancement to Ghidra from your own repository. As we identify and recognize extensions that
are of general interest to the reverse engineering community, we may seek to incorporate them with
our baseline.
## Legal
Consistent with Section D.6. of the GitHub Terms of Service as of 2019, and Section 5. of the Apache License, Version 2.0, the project maintainer for this project accepts contributions using the inbound=outbound model.
When you submit a pull request to this repository (inbound), you are agreeing to license your contribution under the same terms as specified in [LICENSE] (outbound).
Consistent with Section D.6. of the GitHub Terms of Service as of 2019, and Section 5. of the Apache
License, Version 2.0, the project maintainer for this project accepts contributions using the
inbound=outbound model. When you submit a pull request to this repository (inbound), you are
agreeing to license your contribution under the same terms as specified in [LICENSE] (outbound).
This is an open source project.
Contributions you make to this public U.S. Government ("USG") repository are completely voluntary.
When you submit an issue, bug report, question, enhancement, pull request, etc., you are offering your contribution without expectation of payment, you expressly waive any future pay claims against the USG related to your contribution, and you acknowledge that this does not create an obligation on the part of the USG of any kind.
Furthermore, your contributing to this project does not create an employer-employee relationship between the United States ("U.S.") Government and the contributor.
This is an open source project. Contributions you make to this public U.S. Government ("USG")
repository are completely voluntary. When you submit an issue, bug report, question, enhancement,
pull request, etc., you are offering your contribution without expectation of payment, you expressly
waive any future pay claims against the USG related to your contribution, and you acknowledge that
this does not create an obligation on the part of the USG of any kind. Furthermore, your
contributing to this project does not create an employer-employee relationship between the United
States ("U.S.") Government and the contributor.
[issues]: https://github.com/NationalSecurityAgency/ghidra/issues
[repository]: https://github.com/NationalSecurityAgency/ghidra/

View file

@ -2,7 +2,7 @@
## Environment
* Primary Language: [Java][java]
* Secondary Languages: [C++][cpp], [Sleigh][sleigh], [Jython][jython]
* Secondary Languages: [C++][cpp], [Sleigh][sleigh], [Python 3][python] [Jython 2.7][jython]
* Integrated Development Environment: [Eclipse][eclipse]
* Build System: [Gradle][gradle]
* Source Control: [Git][git]
@ -41,6 +41,12 @@ will be stored at `$HOME/.gradle/`.
gradle prepdev
```
Clean up repository build files. In rare circumstances this may be necessary after a `git pull` to
fix unexplainable compilation errors.
```
gradle clean
```
Generate nested Eclipse project files which can then be imported into Eclipse as "existing
projects".
```
@ -62,7 +68,7 @@ Build Javadoc:
gradle createJavadocs
```
Build Python3 packages for the Debugger:
Build Python3 packages for PyGhidra and the Debugger:
```
gradle buildPyPackage
```
@ -87,10 +93,47 @@ prevent specific tasks from running:
gradle buildGhidra -x ip
```
## Known Issues
* There is a known issue in Gradle that can prevent it from discovering native toolchains on Linux
if a non-English system locale is being used. As a workaround, set the following environment
variable prior to running your Gradle task: `LC_MESSAGES=en_US.UTF-8`
## PyGhidra Development
The supported way to develop and debug PyGhidra is with the _[PyDev][pydev]_ plugin for Eclipse.
When PyDev is installed and configured, several new Eclipse run configurations will appear that
enable running and debugging PyGhidra from both _GUI_ and _Interpreter_ modes.
To prepare PyGhidra for development and/or debugging, first execute the following gradle task:
```
gradle prepPyGhidra
```
This sets up a Python virtual environment at `build/venv/`, and installs an editable PyGhidra
module (and its dependencies) into it. PyDev should be pointed at this virtual environment so it has
access to the editable PyGhidra module, as well as the typing/stub information. From Eclipse
(with PyDev installed):
1. _Settings -> PyDev -> Interpreters -> Python Interpreter_
2. Click _New..._
3. Click _Browse for python/pypy exe_
4. Choose `build/venv/bin/python3`
5. Enter a value for _Interpreter Name_
6. Check _Select All_ and press _OK_
7. Click the _Prefined_ tab, and then _New..._
8. Choose `build/typestubs/pypredef`
9. Click _Apply and Close_
## GhidraDev Eclipse Plugin Development
Developing the GhidraDev Eclipse plugin requires the
_Eclipse PDE (Plug-in Development Environment)_, which can be installed via the Eclipse marketplace.
It is also included in the _Eclipse IDE for RCP and RAP Developers_. To generate the GhidraDev
Eclipse projects and prepare the necessary dependencies, execute:
```
gradle prepGhidraDev eclipse -PeclipsePDE
```
Import the newly generated GhidraDev projects into an Eclipse that supports this type of project.
__Note:__ If you are getting compilation errors related to PyDev and CDT, go into Eclipse's
preferences, and under _Target Platform_, activate _/Eclipse GhidraDevPlugin/GhidraDev.target_.
See [Building GhidraDev](GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/README.md#building)
for instructions on how to build the GhidraDev plugin.
## Offline Development Environment
Sometimes you may want to move the Ghidra repository to an offline network and do development there.
@ -107,24 +150,6 @@ directory in the users home directory. Overriding it to be inside the Ghidra
ensure that all maven central dependencies that were fetched during the `prepdev` task will be moved
along with the rest of the repo.
## Developing GhidraDev Eclipse Plugin
Developing the GhidraDev Eclipse plugin requires the
_Eclipse PDE (Plug-in Development Environment)_, which can be installed via the Eclipse marketplace.
It is also included in the _Eclipse IDE for RCP and RAP Developers_. To generate the GhidraDev
Eclipse projects, execute:
```
gradle eclipse -PeclipsePDE
```
Import the newly generated GhidraDev projects into an Eclipse that supports this type of project.
__Note:__ If you are getting compilation errors related to PyDev and CDT, go into Eclipse's
preferences, and under _Target Platform_, activate _/Eclipse GhidraDevPlugin/GhidraDev.target_.
See [GhidraDevPlugin/build_README.txt](GhidraBuild/EclipsePlugins/GhidraDev/GhidraDevPlugin/build_README.txt)
for instructions on how to build the GhidraDev plugin.
## Running tests
To run unit tests, do:
```
@ -188,7 +213,7 @@ If you'd like some details of our fine tuning, take a look at [building_fid.txt]
## Debugger Development
We have recently changed the Debugger's back-end architecture.
We no longer user JNA to access native Debugger APIs.
We no longer use JNA to access native Debugger APIs.
We only use it for pseudo-terminal access.
Instead, we use Python3 and a protobuf-based TCP connection for back-end integration.
@ -215,19 +240,13 @@ description and status.
time.
* Framework-AsyncComm - a collection of utilities for asynchronous communication (packet formats
and completable-future conveniences).
* Framework-Debugging - specifies interfaces for debugger models and provides implementation
conveniences. This is mostly deprecated.
* Debugger - the collection of Ghidra plugins and services comprising the Debugger UI.
* Debugger-api - the interfaces for interacting with the Debugger UI.
* Debugger - the collection of Ghidra plugins and services comprising the Debugger UI implementation.
* Debugger-isf - A service providing access to Ghidra's DataTypes via ISF.
* Debugger-rmi-trace - the wire protocol, client, services, and UI components for Trace RMI, the new back-end architecture.
* Debugger-agent-dbgeng - the connector for WinDbg (via dbgeng.dll) on Windows x64.
* Debugger-agent-dbgmodel - an experimental connector for WinDbg Preview (with TTD, via
dbgmodel.dll) on Windows x64. This is deprecated, as most of these features are implemented in Debugger-agent-dbgeng for the new architecture.
* Debugger-agent-dbgmodel-traceloader - an experimental "importer" for WinDbg trace files. This is deprecated.
* Debugger-agent-gdb - the connector for GDB (13 or later recommended) on UNIX.
* Debugger-swig-lldb - the Java language bindings for LLDB's SBDebugger, also proposed upstream. This is deprecated. We now use the Python3 language bindings for LLDB.
* Debugger-agent-dbgeng - the connector for WinDbg (via dbgeng.dll and dbgmodel.dll) on Windows x64.
* Debugger-agent-gdb - the connector for GDB (13 or later recommended) on UNIX and Windows.
* Debugger-agent-lldb - the connector for LLDB (10 or later recommended) on macOS, UNIX, and Windows.
* Debugger-gadp - the connector for our custom wire protocol the Ghidra Asynchronous Debugging
Protocol. This is deprecated. It's replaced by Debugger-rmi-trace.
* Debugger-jpda - an in-development connector for Java and Dalvik debugging via JDI (i.e., JDWP). This is deprecated and not yet replaced.
The Trace Modeling schema records machine state and markup over time.
@ -236,7 +255,7 @@ Trace "recording" is a de facto requirement for displaying information in Ghidra
The back-end connector has full discretion over what is recorded by using Trace RMI.
Typically, only the machine state actually observed by the user (or perhaps a script) is recorded.
For most use cases, the Trace is small and ephemeral, serving only to mediate between the UI components and the target's model.
It supports many of the same markup (e.g., disassembly, data types) as Programs, in addition to tracking active threads, loaded modues, breakpoints, etc.
It supports many of the same markup (e.g., disassembly, data types) as Programs, in addition to tracking active threads, loaded modules, breakpoints, etc.
Every back end (or "adapter" or "connector" or "agent") employs the Trace RMI client to populate a trace database.
As a general rule in Ghidra, no component is allowed to access a native API and reside in the same JVM as the Ghidra UI.
@ -246,13 +265,12 @@ This also allows us to better bridge the language gap between Java and Python, w
This protocol is loosely coupled to Framework-TraceModeling, essentially exposing its methods via RMI, as well as some methods for controlling the UI.
The protocol is built using Google's Protobuf library, providing a potential path for back-end implementations in alternative languages.
We provide the Trace RMI server as a Ghidra component implemented in Java and the Trace RMI client as a Python3 package.
The client is also available in Java, but it depends heavily on Ghidra's code base.
A back-end implementation may be a stand-alone executable or script that accesses the native debugger's API, or a script or plugin for the native debugger.
It then connects to Ghidra via Trace RMI to populate the trace database with information gleaned from that API.
It should provide a set of diagnostic commands to control and monitor that connection.
It should also use the native API to detect session and target changes so that Ghidra's UI consistently reflects the debugging session.
The old system relied on a "recorder" to discover targets and map them to traces in the proper Ghidra language.
That responsibility is now delegated to the back end.
It is the back-end's responsibility to discover targets in the session and map them to traces in the proper Ghidra language.
Typically, it examines the target's architecture and immediately creates a trace upon connection.
### Developing a new connector
@ -272,18 +290,19 @@ When things go wrong, it could be because of, without limitation:
We are still (yes, still) in the process of writing up this documentation.
In the meantime, we recommend using the GDB and dbgeng agents as examples.
Be sure to look at the Python code `src/main/py`!
The deprecated Java code `src/main/java` is still included as we transition.
This is not so readily presented by Eclipse.
You'll also need to provide launcher(s) so that Ghidra knows how to configure and start your connector.
These are just shell scripts.
We use bash scripts on Linux and macOS, and we use batch files on Windows.
The ideal goal for a launcher is (after one-time configuration) the user can launch and begin debugging with a single click.
Try to include as many common use cases as makes sense for the debugger.
This provides the most flexibility to users and examples to power users who might create derivative launchers.
Look at the existing launchers for examples.
For testing, please follow the examples for GDB.
We no longer provide abstract classes that prescribe requirements.
Instead, we just provide GDB as an example.
Instead, we just provide GDB as an example or template.
Usually, we split our tests into three categories:
* Commands
@ -296,10 +315,10 @@ In general, do the minimum connection setup, execute the command, and check that
The Methods tests check that the remote methods, conventionally implemented in `methods.py`, work correctly.
Many methods are just wrappers around CLI commands, some provided by the native debugger and some provided by `commands.py`.
These work similarly to the commands test, except that they invoke methods instead of executing commands.
Again, check the return value (rarely applicable) and that it causes the expected effects.
Check the return value (rarely applicable) and that it causes the expected effects.
The Hooks tests check that the back end is able to listen for session and target changes, e.g., knowing when the target stops.
*The test should not "cheat" by executing commands or invoking methods that should instead be triggered by the listener.*
*The test should not "cheat" by executing commands or invoking methods that should instead be triggered by the hook.*
It should execute the minimal commands to setup the test, then trigger an event.
It should then check that the event in turn triggered the expected effects, e.g., updating PC upon the target stopping.
@ -341,12 +360,68 @@ We also provide out-of-the-box QEMU integration via GDB.
When submitting help tickets and pull requests, please tag those related to the debugger with "Debugger" so that we can triage them more quickly.
## Troubleshooting and Help
### Eclipse Issues
After pulling or syncing with the latest Ghidra source repository, you might run into the following
issues in Eclipse:
* __Problem:__ _There are Eclipse compilation errors that I don't know how to deal with...I give up!_
* __Solution:__
* From Eclipse, collapse all projects in the _Package Explorer_ or _Project Explorer_ by
clicking the `⊟` icon in that frame
* Locate any projects in the _Package Explorer_ or _Project Explorer_ that have little `?` icons
on them (these projects should no longer be in source control)
* Right-click on __only them__, and then click _Delete_.
* __CHECK__ the _"Delete project contents on disk"_ checkbox.
* Click _OK_ (confirm git does not contain any new unstaged files for delete)
* Select all projects in the _Package Explorer_ or _Project Explorer_
* Right-click on them, and then click _Delete_ (this may not work if projects are not collapsed)
* Leave _"Delete project contents on disk"_ checkbox __UNCHECKED__
* Click _OK_. You should now have an empty _Package Explorer_ or _Project Explorer_.
* `gradle -I gradle/support/fetchDependencies.gradle`
* `gradle prepdev cleanEclipse eclipse buildNatives`
* From Eclipse, _File -> Import..._
* _General | Existing Projects into Workspace_
* Select root directory to be your downloaded or cloned ghidra source repository
* Check _"Search for nested projects"_
* Click _Finish_
This should get Eclipse back to a fresh state. There should never be a need to re-clone the
repository.
* __Problem:__ _The Ghidra run configurations (launchers) are missing_.
* __Solution:__
The Ghidra run configurations are kept under source control in various modules' `.launch/`
directories (i.e., `Ghidra/Features/Base/.launch/`). As long as the corresponding module
project is imported into Eclipse (i.e., `Features Base`), the run configurations should be
available in Eclipse under _Run -> Run Configurations_. If they aren't there and the
projects are imported, try closing and reopening Eclipse.
__NOTE:__ Sometimes you have to launch Ghidra via the _Run -> Run Configurations..._ window one
time for the run configuration to show up under the favorites menu in the main Eclipse button
bar.
__NOTE:__ Never address missing run configurations by manually importing them via _File ->
Import... -> Run/Debug -> Launch Configurations._ This avoids the real issue and will
inevitably result in duplicate run configurations showing up one day, which can cause
additional confusion.
## Known Issues
* There is a known issue in Gradle that can prevent it from discovering native toolchains on Linux
if a non-English system locale is being used. As a workaround, set the following environment
variable prior to running your Gradle task: `LC_MESSAGES=en_US.UTF-8`
* If the Ghidra build is only finding versions of Python that do not have access to `pip`, it may
be necessary to perform the build from a Python [virtual environment][venv].
[java]: https://dev.java
[cpp]: https://isocpp.org
[sleigh]: https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/master/GhidraDocs/languages/index.html
[sleigh]: https://htmlpreview.github.io/?https://github.com/NationalSecurityAgency/ghidra/blob/stable/GhidraDocs/languages/index.html
[python]: https://www.python.org
[venv]: https://docs.python.org/3/tutorial/venv.html
[jython]: https://www.jython.org
[eclipse]: https://www.eclipse.org/downloads/
[pydev]: https://www.pydev.org
[gradle]: https://gradle.org
[git]: https://git-scm.com
[apache]: https://www.apache.org/licenses/LICENSE-2.0

1
GPL/DMG/README.md Normal file
View file

@ -0,0 +1 @@
# DMG

View file

@ -3,6 +3,7 @@
##MODULE IP: LGPL 2.1
##MODULE IP: Public Domain
Module.manifest||Public Domain||||END|
README.md||GHIDRA||||END|
data/lib/csframework.jar||LGPL 2.1||||END|
data/lib/hfsexplorer-0_21-src.zip||GPL 3||||END|
data/lib/hfsx.jar||GPL 3||||END|

View file

@ -13,9 +13,6 @@ package mobiledevices.dmg.ghidra;
public class GDataConverterBE implements GDataConverter {
public static final GDataConverterBE INSTANCE = new GDataConverterBE();
/**
*
*/
private static final long serialVersionUID = 1L;
/**
@ -27,6 +24,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getShort(byte[])
*/
@Override
public final short getShort(byte[] b) {
return getShort(b, 0);
}
@ -34,6 +32,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getShort(byte[], int)
*/
@Override
public short getShort(byte[] b, int offset) {
return (short) (((b[offset] & 0xff) << 8) | (b[offset + 1] & 0xff));
}
@ -41,6 +40,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getInt(byte[])
*/
@Override
public final int getInt(byte[] b) {
return getInt(b, 0);
}
@ -48,6 +48,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getInt(byte[], int)
*/
@Override
public int getInt(byte[] b, int offset) {
int v = b[offset];
for (int i = 1; i < 4; i++) {
@ -59,6 +60,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getLong(byte[])
*/
@Override
public final long getLong(byte[] b) {
return getLong(b, 0);
}
@ -66,6 +68,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getLong(byte[], int)
*/
@Override
public long getLong(byte[] b, int offset) {
long v = b[offset];
for (int i = 1; i < 8; i++) {
@ -77,6 +80,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#getValue(byte[], int)
*/
@Override
public long getValue(byte[] b, int size) {
return getValue(b, 0, size);
}
@ -84,6 +88,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#getValue(byte[], int, int)
*/
@Override
public long getValue(byte[] b, int offset, int size) {
if (size > 8) {
throw new IndexOutOfBoundsException("size exceeds sizeof long: " + size);
@ -98,6 +103,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getBytes(short, byte[])
*/
@Override
public final void getBytes(short value, byte[] b) {
getBytes(value, b, 0);
}
@ -105,6 +111,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getBytes(short, byte[], int)
*/
@Override
public void getBytes(short value, byte[] b, int offset) {
b[offset] = (byte) (value >> 8);
b[offset + 1] = (byte) (value & 0xff);
@ -113,6 +120,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getBytes(int, byte[])
*/
@Override
public final void getBytes(int value, byte[] b) {
getBytes(value, b, 0);
}
@ -120,6 +128,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getBytes(int, byte[], int)
*/
@Override
public void getBytes(int value, byte[] b, int offset) {
b[offset + 3] = (byte) (value);
for (int i = 2; i >= 0; i--) {
@ -131,6 +140,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getBytes(long, byte[])
*/
@Override
public final void getBytes(long value, byte[] b) {
getBytes(value, 8, b, 0);
}
@ -138,6 +148,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter#getBytes(long, byte[], int)
*/
@Override
public void getBytes(long value, byte[] b, int offset) {
getBytes(value, 8, b, offset);
}
@ -145,6 +156,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#getBytes(long, int, byte[], int)
*/
@Override
public void getBytes(long value, int size, byte[] b, int offset) {
for (int i = size - 1; i >= 0; i--) {
b[offset + i] = (byte) value;
@ -155,6 +167,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#putInt(byte[], int, int)
*/
@Override
public final void putInt(byte[] b, int offset, int value) {
getBytes(value, b, offset);
}
@ -162,6 +175,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#putInt(byte[], int)
*/
@Override
public final void putInt(byte[] b, int value) {
getBytes(value, b);
}
@ -169,6 +183,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#putLong(byte[], int, long)
*/
@Override
public final void putLong(byte[] b, int offset, long value) {
getBytes(value, b, offset);
}
@ -176,6 +191,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#putLong(byte[], long)
*/
@Override
public final void putLong(byte[] b, long value) {
getBytes(value, b);
}
@ -183,6 +199,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#putShort(byte[], int, short)
*/
@Override
public final void putShort(byte[] b, int offset, short value) {
getBytes(value, b, offset);
}
@ -190,6 +207,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#putShort(byte[], short)
*/
@Override
public final void putShort(byte[] b, short value) {
getBytes(value, b);
}
@ -197,6 +215,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#getBytes(int)
*/
@Override
public byte[] getBytes(int value) {
byte[] bytes = new byte[4];
getBytes(value, bytes);
@ -206,6 +225,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#getBytes(long)
*/
@Override
public byte[] getBytes(long value) {
byte[] bytes = new byte[8];
getBytes(value, bytes);
@ -215,6 +235,7 @@ public class GDataConverterBE implements GDataConverter {
/**
* @see GDataConverter.util.DataConverter#getBytes(short)
*/
@Override
public byte[] getBytes(short value) {
byte[] bytes = new byte[2];
getBytes(value, bytes);

View file

@ -11,9 +11,7 @@ package mobiledevices.dmg.ghidra;
public class GDataConverterLE implements GDataConverter {
public static GDataConverterLE INSTANCE = new GDataConverterLE();
/**
*
*/
private static final long serialVersionUID = 1L;
/**
@ -25,6 +23,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getShort(byte[])
*/
@Override
public final short getShort(byte[] b) {
return getShort(b, 0);
}
@ -32,6 +31,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getShort(byte[], int)
*/
@Override
public short getShort(byte[] b, int offset) {
return (short) (((b[offset + 1] & 0xff) << 8) | (b[offset] & 0xff));
}
@ -39,6 +39,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getInt(byte[])
*/
@Override
public final int getInt(byte[] b) {
return getInt(b, 0);
}
@ -46,6 +47,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getInt(byte[], int)
*/
@Override
public int getInt(byte[] b, int offset) {
int v = b[offset + 3];
for (int i = 2; i >= 0; i--) {
@ -57,6 +59,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getLong(byte[])
*/
@Override
public final long getLong(byte[] b) {
return getLong(b, 0);
}
@ -64,6 +67,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getLong(byte[], int)
*/
@Override
public long getLong(byte[] b, int offset) {
long v = b[offset + 7];
for (int i = 6; i >= 0; i--) {
@ -75,6 +79,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#getValue(byte[], int)
*/
@Override
public long getValue(byte[] b, int size) {
return getValue(b, 0, size);
}
@ -82,6 +87,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#getValue(byte[], int, int)
*/
@Override
public long getValue(byte[] b, int offset, int size) {
if (size > 8) {
throw new IndexOutOfBoundsException("size exceeds sizeof long: " + size);
@ -96,6 +102,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getBytes(short, byte[])
*/
@Override
public final void getBytes(short value, byte[] b) {
getBytes(value, b, 0);
}
@ -103,6 +110,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getBytes(short, byte[], int)
*/
@Override
public void getBytes(short value, byte[] b, int offset) {
b[offset + 1] = (byte) (value >> 8);
b[offset] = (byte) (value & 0xff);
@ -111,6 +119,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getBytes(int, byte[])
*/
@Override
public final void getBytes(int value, byte[] b) {
getBytes(value, b, 0);
}
@ -118,6 +127,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getBytes(int, byte[], int)
*/
@Override
public void getBytes(int value, byte[] b, int offset) {
b[offset] = (byte) (value);
for (int i = 1; i < 4; i++) {
@ -129,6 +139,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getBytes(long, byte[])
*/
@Override
public final void getBytes(long value, byte[] b) {
getBytes(value, 8, b, 0);
}
@ -136,6 +147,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see GDataConverter#getBytes(long, byte[], int)
*/
@Override
public void getBytes(long value, byte[] b, int offset) {
getBytes(value, 8, b, offset);
}
@ -143,6 +155,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#getBytes(long, int, byte[], int)
*/
@Override
public void getBytes(long value, int size, byte[] b, int offset) {
for (int i = 0; i < size; i++) {
b[offset + i] = (byte) value;
@ -153,6 +166,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#putInt(byte[], int, int)
*/
@Override
public final void putInt(byte[] b, int offset, int value) {
getBytes(value, b, offset);
}
@ -160,6 +174,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#putInt(byte[], int)
*/
@Override
public final void putInt(byte[] b, int value) {
getBytes(value, b);
}
@ -167,6 +182,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#putLong(byte[], int, long)
*/
@Override
public final void putLong(byte[] b, int offset, long value) {
getBytes(value, b, offset);
}
@ -174,6 +190,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#putLong(byte[], long)
*/
@Override
public final void putLong(byte[] b, long value) {
getBytes(value, b);
}
@ -181,6 +198,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#putShort(byte[], int, short)
*/
@Override
public final void putShort(byte[] b, int offset, short value) {
getBytes(value, b, offset);
}
@ -188,6 +206,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#putShort(byte[], short)
*/
@Override
public final void putShort(byte[] b, short value) {
getBytes(value, b);
}
@ -195,6 +214,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#getBytes(int)
*/
@Override
public byte[] getBytes(int value) {
byte[] bytes = new byte[4];
getBytes(value, bytes);
@ -204,6 +224,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#getBytes(long)
*/
@Override
public byte[] getBytes(long value) {
byte[] bytes = new byte[8];
getBytes(value, bytes);
@ -213,6 +234,7 @@ public class GDataConverterLE implements GDataConverter {
/**
* @see ghidra.util.GDataConverter#getBytes(short)
*/
@Override
public byte[] getBytes(short value) {
byte[] bytes = new byte[2];
getBytes(value, bytes);

View file

@ -0,0 +1 @@
# DemanglerGnu

View file

@ -35,8 +35,8 @@ def srcVersion24 = "src/demangler_gnu_v2_24"
*/
task zipBuildableSource(type:Zip) {
group 'private'
description "Collects the source files needed to build this module."
group = 'private'
description = "Collects the source files needed to build this module."
archiveBaseName = project.name + "-src-for-build"
archiveExtension = 'zip'

View file

@ -5,5 +5,5 @@
##MODULE IP: LGPL 3.0
##MODULE IP: Public Domain
Module.manifest||Public Domain||||END|
README.md||GHIDRA||||END|
src/demangler_gnu_v2_24/README.txt||Public Domain||||END|
src/demangler_gnu_v2_33_1/README.txt||Public Domain||||END|

View file

@ -903,7 +903,7 @@ ada_demangle (const char *mangled, int option ATTRIBUTE_UNUSED)
goto unknown;
/* Most of the demangling will trivially remove chars. Operator names
may add one char but because they are always preceeded by '__' which is
may add one char but because they are always preceded by '__' which is
replaced by '.', they eventually never expand the size.
A few special names such as '___elabs' add a few chars (at most 7), but
they occur only once. */

View file

@ -219,7 +219,7 @@ ada_demangle (const char *mangled, int option ATTRIBUTE_UNUSED)
goto unknown;
/* Most of the demangling will trivially remove chars. Operator names
may add one char but because they are always preceeded by '__' which is
may add one char but because they are always preceded by '__' which is
replaced by '.', they eventually never expand the size.
A few special names such as '___elabs' add a few chars (at most 7), but
they occur only once. */

View file

@ -0,0 +1,27 @@
# GnuDisassembler
The GnuDisassembler extension module must be built using gradle prior to its use within Ghidra.
This module provides the ability to leverage the binutils disassembler capabilities
for various processors as a means of verifying Sleigh disassembler output syntax.
To build this extension for Linux or macOS:
1. If building for an installation of Ghidra, copy the appropriate source distribution of binutils
into this module's root directory. If building within a git clone of the full Ghidra source, copy
binutils source distribution file into the `ghidra.bin/GPL/GnuDisassembler` directory.
The supported version and archive format is identified within the build.gradle file. If a
different binutils distribution is used the build.gradle and/or buildGdis.gradle may require
modification.
The build requires the following packages to be installed:
* flex
* bison
* texinfo
* zlib1g-dev
2. Run gradle from the module's root directory (see top of `build.gradle` file for specific
instructions).
This resulting gdis executable will be located in `build/os/<platform>`.

View file

@ -1,26 +0,0 @@
The GnuDisassembler extension module must be built using gradle prior to its' use within Ghidra.
This module provides the ability to leverage the binutils disassembler capabilities
for various processors as a means of verifying Sleigh disassembler output syntax.
To build this extension for Linux or Mac OS X:
1. If building for an installation of Ghidra, copy the appropriate source distribution of
binutils into this module's root directory. If building within a git clone of the full
Ghidra source, copy binutils source distribution file into the ghidra.bin/GPL/GnuDisassembler
directory.
The supported version and archive format is identified within the build.gradle file.
If a different binutils distribution is used the build.gradle and/or buildGdis.gradle
may require modification.
The build requires the following packages to be installed:
* flex
* bison
* texinfo
* zlib1g-dev
2. Run gradle from the module's root directory (see top of build.gradle file for
specific instructions).
This resulting gdis executable will be located in build/os/<platform>.

View file

@ -76,8 +76,8 @@ gradle.taskGraph.whenReady {
* Task to unpack the standard binutils zip file
*******************************************************************************************/
task binutilsUnpack {
description "Unpack binutils (for building gdis)"
group "Native Build Dependencies"
description = "Unpack binutils (for building gdis)"
group = "Native Build Dependencies"
outputs.file { binutilsUnpackDir }
onlyIf { !binutilsUnpackDir.exists() }
@ -104,8 +104,8 @@ supportedPlatforms.each { platform ->
def artifactsDir = file("build/binutils/${platform}")
task(buildName) {
description "Configure and make binutils for $platform (for building gdis)"
group "Native Prebuild Dependencies"
description ="Configure and make binutils for $platform (for building gdis)"
group = "Native Prebuild Dependencies"
onlyIf { !configDir.exists() }
@ -122,21 +122,21 @@ supportedPlatforms.each { platform ->
println "Configuring binutils - config directory: $configDir"
println "${binutilsDir}/configure --prefix=\"${configDir}\" --enable-targets=all --with-zlib=no --disable-nls --disable-werror"
configDir.mkdirs();
exec {
providers.exec {
workingDir configDir
commandLine "${binutilsDir}/configure", "--prefix=${configDir}", "--enable-targets=all", "--with-zlib=no", "--disable-nls", "--disable-werror"
}
}.result.get()
println "Building binutils - config directory: $configDir"
exec {
providers.exec {
commandLine "make", "-C", "${configDir}", "all"
}
}.result.get()
}
}
task(postBuildName, type: Copy) {
description "Copy binutil artifcacts for $platform (for building gdis)"
group "Native Prebuild Dependencies"
description = "Copy binutil artifcacts for $platform (for building gdis)"
group = "Native Prebuild Dependencies"
dependsOn buildName

View file

@ -3,7 +3,7 @@
##MODULE IP: Public Domain
.gitignore||Public Domain||||END|
Module.manifest||Public Domain||||END|
README.txt||Public Domain||||END|
README.md||GHIDRA||||END|
data/arm_test1.s||Public Domain||||END|
data/big.elf||Public Domain||||END|
data/little.elf||Public Domain||||END|

View file

@ -34,39 +34,25 @@ model {
}
}
// The toolChains block is needed because Gradle doesn't find gcc/clang on ARM-based Linux
// and macOS platforms without explicitly declaring their targets. Might be a bug in the
// native Gradle plugin.
// The toolChains block is needed because Gradle doesn't find the native toolchain in various
// scenarios. These checks, can be removed when Gradle fixes them, and we advertise a
// minimum Gradle version that includes the fix.
toolChains {
if (isCurrentLinux()) {
gcc(Gcc) {
if (isCurrentArm_64()) {
target("linux_arm_64")
def current = getCurrentPlatformName()
if (isLinux(current)) {
// https://github.com/gradle/gradle/issues/17660 (fixed in Gradle 8.11)
gcc(Gcc).target(current)
clang(Clang).target(current)
}
if (isFreeBSD(current)) {
// https://github.com/gradle/gradle/issues/32895
gcc(Gcc).target(current)
clang(Clang).target(current)
}
}
if (isCurrentMac()) {
clang(Clang) {
if (isCurrentArm_64()) {
target("mac_arm_64")
}
}
}
if (isCurrentFreeBSD()) {
gcc(Gcc) {
if (isCurrentArm_64()) {
target("freebsd_arm_64")
}
else {
target("freebsd_x86_64")
}
}
}
if (isCurrentWindows() && VISUAL_STUDIO_INSTALL_DIR) {
// specify installDir because Gradle doesn't find VS Build Tools.
// See https://github.com/gradle/gradle-native/issues/617#issuecomment-575735288
if (isWindows(current) && VISUAL_STUDIO_INSTALL_DIR) {
// https://github.com/gradle/gradle-native/issues/617#issuecomment-575735288
visualCpp(VisualCpp) {
installDir VISUAL_STUDIO_INSTALL_DIR
installDir = VISUAL_STUDIO_INSTALL_DIR
}
}
}
@ -121,6 +107,9 @@ def isNativeBinaryMakeTask(Task task, String platform) {
*
******************************************************************************************/
def shouldSkipNative(task) {
if (rootProject.hasProperty("skipAllNatives")) {
return true;
}
return task.ext.has("skipNative") && task.ext.get("skipNative")
}

View file

@ -34,7 +34,7 @@ def configureVisualStudio() {
println " -> To manually specify the location of vswhere.exe, add \"-PvswherePath=<vswhere path>\" to the Gradle command line arguments"
return
}
def vswhereProcess = "\"${vswherePath}\" -products * -latest -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -format json -utf8".execute()
def vswhereProcess = "\"${vswherePath}\" -products * -sort -prerelease -requires Microsoft.VisualStudio.Component.VC.Tools.x86.x64 -format json -utf8".execute()
def vswhereOutput = vswhereProcess.text.trim()
def vswhereExit = vswhereProcess.exitValue()
if (vswhereExit != 0) {
@ -45,15 +45,31 @@ def configureVisualStudio() {
println " -> Visual Studio vswhere.exe returned an error code (${vswhereExit})!"
}
println " -> Please confirm ${vswherePath} is version 2.5 or later."
println " -> Please check README.md or InstallationGuide.html to verify you are using a supported version of Visual Studio."
println " -> Please check README.md or GettingStarted.md to verify you are using a supported version of Visual Studio."
return
}
def vswhereJson = new groovy.json.JsonSlurper().parseText(vswhereOutput);
if (vswhereJson.isEmpty()) {
def usePrerelease = project.hasProperty("vswherePrerelease")
def i = -1
println " -> Searching for Visual Studio installations..."
vswhereJson.eachWithIndex { item, index ->
def isPrerelease = item.get("isPrerelease")
def name = item.get("displayName") + (isPrerelease ? " Prerelease" : "")
if (i == -1) {
if (usePrerelease || !isPrerelease) {
i = index
}
}
println " ${index + 1}: ${name}" +
(i == index ? " (selected)" : "") +
(isPrerelease && !usePrerelease ? " (enable with -PvswherePrerelease)" : "")
}
if (i == -1) {
println " -> Visual Studio not found!"
return
}
def vsInstallDir = vswhereJson[0].installationPath
def vsInstallDir = vswhereJson[i].installationPath
println " -> Installation Directory: ${vsInstallDir}"
// Use vcvarsall.bat to determine the latest Visual Studio's default SDK and tool versions

View file

@ -0,0 +1 @@
# Public_Release

View file

@ -17,5 +17,12 @@ apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
apply from: "$rootProject.projectDir/gradle/javaProject.gradle"
apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
apply from: "$rootProject.projectDir/gradle/helpProject.gradle"
apply plugin: 'eclipse'
eclipse.project.name = 'Z Public Release'
rootProject.assembleDistribution {
from ("${this.projectDir}/src/main/resources/UserAgreement.html") {
into "docs"
}
}

View file

@ -1,9 +1,9 @@
##VERSION: 2.0
Module.manifest||GHIDRA||||END|
README.md||GHIDRA||||END|
data/PDB_SYMBOL_SERVER_URLS.pdburl||GHIDRA||||END|
src/global/docs/ChangeHistory.html||GHIDRA||||END|
src/global/docs/UserAgreement.html||GHIDRA||||END|
src/global/docs/WhatsNew.html||GHIDRA||||END|
src/global/docs/ChangeHistory.md||GHIDRA||||END|
src/global/docs/WhatsNew.md||GHIDRA||||END|
src/main/resources/UserAgreement.html||GHIDRA||||END|
src/main/resources/defaultTools/CodeBrowser.tool||GHIDRA||||END|
src/main/resources/splash.txt||GHIDRA||||END|

File diff suppressed because it is too large Load diff

View file

@ -1,20 +0,0 @@
<HTML>
<FONT SIZE="5">
Licensed under the Apache License, Version 2.0 (the "License"); 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. See the License for the
specific language governing permissions and limitations under the License.
<BR>
<BR>
<B>As a software reverse engineering (SRE) framework, Ghidra is designed solely to facilitate
lawful SRE activities. You should always ensure that any SRE activities in which you engage are
permissible as computer software may be protected under governing law (e.g., copyright) or under an
applicable licensing agreement. In making Ghidra available for public use, the National Security
Agency does not condone or encourage any improper usage of Ghidra. Consistent with the Apache 2.0
license under which Ghidra has been made available, you are solely responsible for determining the
appropriateness of using or redistributing Ghidra.</B>
</FONT>
</HTML>

View file

@ -1,167 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<HEAD>
<TITLE> Ghidra What's New</TITLE>
<STYLE type="text/css" name="text/css">
body { margin-bottom: 50px; margin-left: 10px; margin-right: 10px; margin-top: 10px; } /* some padding to improve readability */
li { font-family:times new roman; font-size:14pt; margin-bottom: 8px; }
h1 { color:#000080; font-family:times new roman; font-size:36pt; font-style:italic; font-weight:bold; text-align:center; }
h2 { margin: 10px; margin-top: 20px; color:#984c4c; font-family:times new roman; font-size:18pt; font-weight:bold; }
h3 { margin-left: 10px; margin-top: 20px; color:#0000ff; font-family:times new roman; `font-size:14pt; font-weight:bold; }
h4 { margin-left: 10px; margin-top: 20px; font-family:times new roman; font-size:14pt; font-style:italic; }
p { margin-left: 40px; font-family:times new roman; font-size:14pt; }
blockquote p { margin-left: 10px; }
table { margin-left: 20px; margin-top: 10px; width: 80%;}
td { font-family:times new roman; font-size:14pt; vertical-align: top; }
th { font-family:times new roman; font-size:14pt; font-weight:bold; background-color: #EDF3FE; }
code { color:black; font-family:courier new; font-size: 12pt; }
span.code { font-family:courier new font-size: 14pt; color:#000000; }
.gcode { font-family: courier new; font-weight: bold; font-size: 85%; }
.gtitle { font-style: italic; font-weight: bold; font-size: 95%; }
</STYLE>
</HEAD>
<BODY>
<H1>Ghidra: NSA Reverse Engineering Software</H2>
<P>
Ghidra is a software reverse engineering (SRE) framework developed by NSA's Research Directorate.
This framework includes a suite of full-featured, high-end software analysis tools that enable
users to analyze compiled code on a variety of platforms including Windows, MacOS, and Linux.
Capabilities include disassembly, assembly, decompilation, debugging, emulation, graphing, and scripting, along with
hundreds of other features. Ghidra supports a wide variety of processor instruction sets and
executable formats and can be run in both user-interactive and automated modes. Users may also
develop their own Ghidra plug-in components and/or scripts using the exposed API. In addition there are
numerous ways to extend Ghidra such as new processors, loaders/exporters, automated analyzers,
and new visualizations.
</P>
<P>
In support of NSA's Cybersecurity mission, Ghidra was built to solve scaling and teaming problems
on complex SRE efforts and to provide a customizable and extensible SRE research platform. NSA
has applied Ghidra SRE capabilities to a variety of problems that involve analyzing malicious
code and generating deep insights for NSA analysts who seek a better understanding of potential
vulnerabilities in networks and systems.
</P>
<hr>
<H1>What's New in Ghidra 11.2</H1>
<P>This release includes new features, enhancements, performance improvements, quite a few bug fixes, and many pull-request
contributions. Thanks to all those who have contributed their time, thoughts, and code. The Ghidra user community thanks you too!</P>
<H2>The not-so-fine print: Please Read!</H2>
<P>Ghidra 11.2 is fully backward compatible with project data from previous releases.
However, programs and data type archives which are created or modified in 11.2 will not be usable by an earlier Ghidra version.</P>
<P><span class="gtitle">IMPORTANT:</span> Ghidra 11.2 requires at minimum JDK 21 to run.</P>
<P><span class="gtitle">IMPORTANT:</span> To use the Debugger or do a full source distribution build, you will need Python3 (3.9 to 3.12 supported) installed on your system.</P>
<P><span class="gtitle">NOTE:</span> There have been reports of certain features causing the XWindows server to crash. A fix for
CVE-2024-31083 in X.org software in April 2024 introduced a regression, which has been fixed in xwayland 23.2.6 and xorg-server 21.1.13. If you experience
any crashing of Ghidra, most likely causing a full logout, check if your xorg-server has been updated to at least the noted version.</P>
<P><span class="gtitle">NOTE:</span> Each build distribution will include native components (e.g., decompiler) for at least one platform (e.g., Windows x86-64).
If you have another platform that is not included in the build distribution, you can build
native components for your platform directly from the distribution.
See the <a href="InstallationGuide.html">Ghidra Installation Guide</a> for additional information.
Users running with older shared libraries and operating systems (e.g., CentOS 7.x) may also run into
compatibility errors when launching native executables such as the Decompiler and GNU Demangler which
may necessitate a rebuild of native components.</P>
<P><span class="gtitle">NOTE:</span> Ghidra Server: The Ghidra 11.x server is compatible with Ghidra 9.2 and later Ghidra clients. Ghidra 11.x
clients are compatible with all 10.x and 9.x servers. Although, due to potential Java version differences, it is recommended
that Ghidra Server installations older than 10.2 be upgraded. Those using 10.2 and newer should not need a server upgrade.</P>
<P><span class="gtitle">NOTE:</span> Any programs imported with a Ghidra beta version or code built directly from source code outside of a release tag may not be compatible,
and may have flaws that won't be corrected by using this new release. Any programs analyzed from a beta or other local master source build should be considered
experimental and re-imported and analyzed with a release version.</P>
<P>Programs imported with previous release versions should upgrade correctly through various
automatic upgrade mechanisms. However, there may be improvements or bug fixes in the import and analysis process that will provide better results than prior
Ghidra versions. You might consider comparing a fresh import of any program you will continue to reverse engineer to see if the latest Ghidra
provides better results.</P>
<H2>Memory Search</H2>
<P>The <span class="gtitle">Search Memory</span> feature in Ghidra has been updated substantially to provide two new features:</P>
<BLOCKQUOTE>
<UL>
<LI>The ability to perform set operations on successive searches</LI>
<LI>The ability to (re)scan memory for changes in value</LI>
</UL>
</BLOCKQUOTE>
<P>Set operations, accessible from the pull-down menu under <span class="gtitle">Search</span>, allow you to augment
results by performing boolean operations on an existing search. For example, you might search for the hex pattern "DE AD" using <span class="gtitle">Search</span>,
add "BE EF" to the pattern field, and then select "A-B" to retrieve a list of byte sequences that begin with "DE AD" but do not include "DE AD BE EF".
Scanning for changes is most useful in a dynamic environment, such as the Debugger. Given an existing search, you can look for values that have changed,
increased, decreased, or remained the same. Simple examples might include looking for counters while a process is running, checking for areas of decompressed
memory, or identifying active areas of the heap.</P>
<H2>PDB</H2>
<P>The PDB Symbol Server Search Config dialog has been changed, allowing the user to mark symbol servers as trusted or untrusted.
This is an improvement over the previous mechanism that based trust on the symbol server's connection type.</P>
<H2>Debugger</H2>
<P><span class="gtitle">ATTENTION:</span> Please either delete and re-import the default Emulator tool, or
manually remove the TraceRmiPlugin from your EmulatorTool!</P>
<P>There are new launchers/features for the traceRMI version of dbgeng, including extended launch options, kernel debugging, and
remote process server connections.</P>
<H2>Decompiler</H2>
<P>The Decompiler can now automatically recover strings built on the stack and initial support for optimized heap strings has been added.
Stack strings are typically found in optimized code and obfuscated malware.</P>
<P>A new Search All action has been added which displays a table containing the results found within the current function.</P>
<H2>Programming Languages</H2>
<P>Golang support for versions 1.15 and 1.16 have been added. This brings the supported Golang versions to 1.15 thru 1.22.</P>
<H2>Processors</H2>
<P>There have been quite a few improvements to the Sparc processor specification, including additional instructions, 64-bit relocation support, and better
handling of call/return detection through tracking of the o7 link register. In addition, the calling convention for both sparc 32 and 64 bit binaries
have had an overhaul to support hidden structure return and much improved parameter allocation of floating point and general data types.</P>
<P>The Intel M16C/60/80 sleigh processor specifications have been added. In addition, there have been numerous fixes to the
ARM, RX, M68000, PIC16, PPC, and x86 processor specifications.</P>
<H2>Other Improvements</H2>
<P>Actions have been added to compare functions directly from the Listing, Decompiler, or Functions Table via popup menu items. If there
is already a Function Comparison window showing, there are two actions: one to add the selected function(s) to the existing comparison, and
one to create a new Function Comparison Window. This allows a workflow where users can build up a set of functions to compare as they browse
around instead of having to select them all at once.</P>
<P>For Ghidra script and plugin developers who would prefer to use Visual Studio Code, a new script VSCodeProjectScript will create a new
Visual Studio Code project that is setup to do Ghidra scripting and module development. The capabilities are similar to the Eclipse
GhidraDev plugin.</P>
<P>There have been major speed improvements when creating or modifying large structures within the structure editor. In general large structure manipulation
should perform fluidly no matter the size of the structure. If the structure contains a large number of defined data, there could still be some degradation in
speed. Some fixed performance issues include: resizing a structure smaller or larger, clicking on an item to select a row, and defining a data type either with keyboard actions or dragging
and dropping from the data type manager. In addition, the behavior of automatically growing the size of a structure has been made consistent. Defining data on the last element of a structure
is allowed to automatically grow the structure to fit the data type. Defining data anywhere other than the last element isn't allowed if the data type does not fit because
of defined data that would need to be cleared, or there are not enough undefined bytes.</P>
<H2>Additional Bug Fixes and Enhancements</H2>
<P> Numerous other new features, improvements, and bug fixes are fully listed in the <a href="ChangeHistory.html">ChangeHistory</a> file.</P>
<div align="center">
<B><a href="https://www.nsa.gov/ghidra"> https://www.nsa.gov/ghidra</a></B>
<BR><BR>
</div>
</BODY>
</HTML>

View file

@ -0,0 +1,148 @@
# Ghidra: NSA Reverse Engineering Software
Ghidra is a software reverse engineering (SRE) framework developed by NSA's Research Directorate.
This framework includes a suite of full-featured, high-end software analysis tools that enable users
to analyze compiled code on a variety of platforms including Windows, MacOS, and Linux. Capabilities
include disassembly, assembly, decompilation, debugging, emulation, graphing, and scripting, along
with hundreds of other features. Ghidra supports a wide variety of processor instruction sets and
executable formats and can be run in both user-interactive and automated modes. Users may also
develop their own Ghidra plug-in components and/or scripts using the exposed API. In addition, there
are numerous ways to extend Ghidra such as new processors, loaders/exporters, automated analyzers,
and new visualizations.
In support of NSA's Cybersecurity mission, Ghidra was built to solve scaling and teaming problems on
complex SRE efforts and to provide a customizable and extensible SRE research platform. NSA has
applied Ghidra SRE capabilities to a variety of problems that involve analyzing malicious code and
generating deep insights for NSA analysts who seek a better understanding of potential
vulnerabilities in networks and systems.
# What's New in Ghidra 12.0
This release includes new features, enhancements, performance improvements, quite a few bug fixes,
and many pull-request contributions. Thanks to all those who have contributed their time, thoughts,
and code. The Ghidra user community thanks you too!
### The not-so-fine print: Please Read!
Ghidra 12.0 is fully backward compatible with project data from previous releases. However, programs
and data type archives which are created or modified in 12.0 will not be usable by an earlier Ghidra
version.
**IMPORTANT:** Ghidra 12.0 requires, at minimum, JDK 21 to run.
**IMPORTANT:** To use the Debugger or do a full source distribution build, you will need Python3
(3.9 to 3.13 supported) installed on your system.
**NOTE:** There have been reports of certain features causing the XWindows server to crash. A fix
for `CVE-2024-31083` in X.org software in April 2024 introduced a regression, which has been fixed
in xwayland 23.2.6 and xorg-server 21.1.13. If you experience any crashing of Ghidra, most likely
causing a full logout, check if your xorg-server has been updated to at least the noted version.
**NOTE:** Each build distribution will include native components (e.g., Decompiler) for at least one
platform (e.g., Windows x86-64). If you have another platform that is not included in the build
distribution, you can build native components for your platform directly from the distribution.
See the *Getting Started* document for additional information. Users running with older shared
libraries and operating systems (e.g., CentOS 7.x) may also run into compatibility errors when
launching native executables such as the Decompiler and GNU Demangler which may necessitate a
rebuild of native components.
**NOTE:** Ghidra Server: The Ghidra 12.0 server is compatible with Ghidra 9.2 and later Ghidra
clients, although the presence of any newer link-files within a repository may not be handled properly
by client versions prior to 12.0 which lack support for the new storage format. Ghidra 12.0 clients
that introduce new link-files into a project will not be able to add such files into version
control if connected to older Ghidra Server versions.
**NOTE:** Ghidra Server: Due to potential Java version differences, it is
recommended that Ghidra Server installations older than 10.2 be upgraded. Those using 10.2 and newer
should not need a server upgrade unless they need to work with link-files within a shared repository.
**NOTE:** Programs imported with a Ghidra beta version or code built directly from source code
outside of a release tag may not be compatible, and may have flaws that won't be corrected by using
this new release. Any programs analyzed from a beta or other local master source build should be
considered experimental and re-imported and analyzed with a release version.
Programs imported with previous release versions should upgrade correctly through various automatic
upgrade mechanisms. However, there may be improvements or bug fixes in the import and analysis
process that will provide better results than prior Ghidra versions. You might consider comparing a
fresh import of any program you will continue to reverse engineer to see if the latest Ghidra
provides better results.
## Project Link Files
Support for link-files within a Ghidra Project has been significantly expanded with this release and
with it a new file storage type has been introduced which can create some incompatibilities if
projects and repositories containing such files are used by older version of Ghidra or the Ghidra
Server.
Previously only external folder and file links were supported through the use of a Ghidra URL. With
12.0 the ability to establish internal folder and file links has been introduced. The new storage
format avoids the use of a database and relies only on a light-weight property file. Internal
project links also allow for either absolute or relative links. Due to the fact that Ghidra allows
a folder or file to have the same pathname, some ambiguities can result. It is highly recommended
that the use of conflicting folder and file pathnames be avoided.
The use of internally linked folders and files allows batch import processing to more accurately
reflect the native file-system and its use of symbolic links which allow for the same content to
be referenced by multiple paths. Allowing this within a Ghidra project can avoid the potential for
importing content multiple times with the different paths and simply import once with additional
link-files which reference it. How best to leverage links very much depends on the end-user's
needs and project file management preferences. Special care must be taken when defining or
traversing link-files to avoid external and circular references.
Additional Ghidra API methods have been provided or refined on the following classes to leverage
link-files: `DomainFolder`, `DomainFile`, `LinkFile`, `LinkHandler`, `DomainFileFilter`,
`DomainFileIterator`, etc.
...TO BE CONTINUED...
## Filesystem Mirroring
An option has been added to mirror the local filesystem when importing programs and their libraries.
Programs and libraries that exist on the local filesystem as symbolic links will have both their
corresponding link file and resolved program file mirrored in the project. Filesystem mirroring
can also be used in headless mode with the new `-mirror` command line option.
## PyGhidra
PyGhidra 3.0.0 (compatible with Ghidra 12.0 and later) introduces many new Python-specific API
methods with the goal of making the most common Ghidra tasks quick and easy, such as opening a
project, getting a program, and running a GhidraScript. Legacy API functions such as
`pyghidra.open_program()` and `pyghidra_run_script()` have been deprecated in favor of the new
methods, which are outlined at https://pypi.org/project/pyghidra.
The default Python scripting engine has been changed in Ghidra 12.0 from Jython to PyGhidra.
Existing Jython scripts will need to include the `# @runtime Jython` script header in order to
continue running within the Jython environment.
## Z3 Concolic Emulation and Symbolic Summary
We've added an experimental Z3-based symbolic emulator, which runs as an "auxiliary" domain to the
concrete emulator, effectively constructing what is commonly called a "concolic" emulator. The
symbolic emulator creates Z3 expressions and branching constraints, but it only follows the path
determined by concrete emulation. This is most easily accessed by installing the "SymbolicSummaryZ3"
extension (**File** -> **Install Extensions**) and then enabling the `Z3SummaryPlugin` in the
Debugger or Emulator tool, which includes a GUI for viewing and sorting through the results. The Z3
emulator requires z3-4.13.0, available from https://github.com/Z3Prover/z3. Other versions may work,
but our current test configuration uses 4.13.0. Depending on the release and your platform, the
required libraries may be missing or incompatible. If this is the case, you will need to download
Z3, or build it from source with Java bindings, and install the libraries into
`Ghidra/Extensions/SymbolicSummaryZ3/os/<platform>/`.
## Emulation API
The `PcodeEmulator` and related API has undergone substantial changes in preparation for integrating
our JIT-accelerated emulator into the GUI. Please see the **Notable API Changes** section of our
[Change History](ChangeHistory.md). The goal is to facilitate integration by composition; whereas,
it had previously required inheritance, which is now considered poor design. Essentially, we've
introduced a set of callbacks that integrators can use to detect when certain things have happened
in emulation, as well as offer some control of machine-state behavior; e.g., to facilitate lazily
loading from a snapshot.
Extensions that currently integrate via inheritance can continue to do so, but will still need to
apply some minimal changes to satisfy interface and constructor changes. The developers of such
extensions ought to consider porting their integrations to the compositional/callback-based
mechanism. A careful assessment may be required depending on the nature of the extension. Extensions
that merely integrate with emulation should consider the compositional/callback-based mechanism.
Extensions that incorporate new domains (e.g. Z3) or novel behaviors (e.g. JIT) should continue
using inheritance.
## Other Improvements
+ Added the ability to toggle the displaying of function variables (parameters and locals) that are
normally displayed just below the function signature. The variables display can be turned on/off
globally or individually per function.
## Additional Bug Fixes and Enhancements
Numerous other new features, improvements, and bug fixes are fully listed in the
[Change History](ChangeHistory.md) file.

View file

@ -1,4 +1,7 @@
<HTML>
<HEAD>
<TITLE>Ghidra User Agreement</TITLE>
</HEAD>
<FONT SIZE="5">

View file

@ -9,6 +9,7 @@
<INCLUDE CLASS="ghidra.app.plugin.core.interpreter.InterpreterPanelPlugin" />
<INCLUDE CLASS="ghidra.app.plugin.core.editor.TextEditorManagerPlugin" />
</PACKAGE>
<PACKAGE NAME="BSim" />
<ROOT_NODE X_POS="409" Y_POS="179" WIDTH="1637" HEIGHT="931" EX_STATE="0" FOCUSED_OWNER="CodeBrowserPlugin" FOCUSED_NAME="Listing" FOCUSED_TITLE="Listing: ">
<SPLIT_NODE WIDTH="1621" HEIGHT="816" DIVIDER_LOCATION="148" ORIENTATION="VERTICAL">
<COMPONENT_NODE TOP_INFO="0">

View file

@ -0,0 +1 @@
# AnnotationValidator

View file

@ -1,3 +1,4 @@
##VERSION: 2.0
Module.manifest||GHIDRA||||END|
README.md||GHIDRA||||END|
src/main/resources/META-INF/services/javax.annotation.processing.Processor||GHIDRA||||END|

View file

@ -0,0 +1 @@
# Debugger-agent-dbgeng

View file

@ -13,42 +13,46 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
apply from: "$rootProject.projectDir/gradle/javaProject.gradle"
apply from: "$rootProject.projectDir/gradle/jacocoProject.gradle"
apply from: "$rootProject.projectDir/gradle/javaTestProject.gradle"
apply from: "$rootProject.projectDir/gradle/nativeProject.gradle"
// Not technically a Java project, but required to be a Help project
apply from: "${rootProject.projectDir}/gradle/javaProject.gradle"
apply from: "${rootProject.projectDir}/gradle/helpProject.gradle"
apply from: "$rootProject.projectDir/gradle/distributableGhidraModule.gradle"
apply from: "$rootProject.projectDir/gradle/nativeProject.gradle"
apply from: "$rootProject.projectDir/gradle/hasPythonPackage.gradle"
apply from: "$rootProject.projectDir/gradle/debugger/hasNodepJar.gradle"
apply plugin: 'eclipse'
eclipse.project.name = 'Debug Debugger-agent-dbgeng'
dependencies {
api project(":Framework-AsyncComm")
api project(":Framework-Debugging")
api project(":Debugger-gadp")
//testImplementation project(":Base")
testImplementation project(path: ':Framework-AsyncComm', configuration: 'testArtifacts')
testImplementation project(path: ':Framework-Debugging', configuration: 'testArtifacts')
testImplementation project(path: ":Debugger-gadp", configuration: 'testArtifacts')
// Only for Help :/
api project(':Debugger-rmi-trace')
}
ext.tlb = file("build/os/win_x86_64/dbgmodel.tlb")
def tlb = file("build/os/win_x86_64/dbgmodel.tlb")
def depsFile = file("${DEPS_DIR}/Debugger-agent-dbgeng/dbgmodel.tlb")
def binRepoFile = file("${BIN_REPO}/${getGhidraRelativePath(project)}/os/win_x86_64/dbgmodel.tlb")
if ("win_x86_64".equals(getCurrentPlatformName())) {
tasks.assemblePyPackage {
def prebuiltTlb = depsFile.exists() ? depsFile : (binRepoFile.exists() ? binRepoFile : null)
assert prebuiltTlb != null : "Failed to locate prebuilt TLB file"
from(prebuiltTlb) {
into("src/ghidradbg/dbgmodel/tlb")
}
}
task buildTlb(type: Exec) {
def tmpBatch = file("build/buildTlb.bat")
def idl = file("src/main/py/src/ghidradbg/dbgmodel/DbgModel.idl")
String makeName = "win_x86_64DbgmodelTlbMake"
task(type: Exec, makeName) {
ext.tmpBatch = file("build/buildTlb.bat")
ext.idl = file("src/main/py/src/ghidradbg/dbgmodel/DbgModel.idl")
inputs.file(idl)
outputs.file(tlb)
doFirst {
assert isCurrentX86_64() && isCurrentWindows() : "Can only build TLB on Windows x86"
file(tlb).parentFile.mkdirs()
def midlCmd = "midl /tlb ${tlb} ${idl}"
def midlCmd = "midl /tlb \"${tlb}\" \"${idl}\""
println "Executing: " + midlCmd
tmpBatch.withWriter { out ->
@ -56,6 +60,7 @@ if ("win_x86_64".equals(getCurrentPlatformName())) {
out.println midlCmd
}
}
doLast {
assert file(tlb).exists() : "Failed to build dbgmodel.tlb"
}
@ -63,33 +68,16 @@ if ("win_x86_64".equals(getCurrentPlatformName())) {
commandLine "cmd", "/c", tmpBatch
}
tasks.assemblePyPackage {
from(tasks."$makeName") {
into("src/ghidradbg/dbgmodel/tlb")
}
}
}
else if (file(tlb).exists()) {
// required for multi-platform build
tasks.assemblePyPackage {
from(tlb) {
println "Copying existing tlb build artifact: " + tlb
into("src/ghidradbg/dbgmodel/tlb")
}
}
}
else {
def prebuiltTlb = new File(rootProject.BIN_REPO + '/' + getGhidraRelativePath(project) + "/os/win_x86_64/dbgmodel.tlb")
if (prebuiltTlb.exists()) {
println "Copying prebuilt dbgmodel.tlb"
tasks.assemblePyPackage {
from(rootProject.BIN_REPO + '/' + getGhidraRelativePath(project) + "/os/win_x86_64/dbgmodel.tlb") {
into("src/ghidradbg/dbgmodel/tlb")
}
}
}
else {
println "WARNING: dbgmodel.tlb omitted from ghidradbg python package"
task prebuildTlb(type: Copy) {
dependsOn buildTlb
from tlb
into binRepoFile.parentFile
doFirst {
assert file(BIN_REPO).exists() : "Bin repo doesn't exist"
file(binRepoFile).parentFile.mkdirs()
}
}
@ -98,15 +86,3 @@ distributePyDep("capstone-5.0.1-py3-none-win_amd64.whl")
distributePyDep("comtypes-1.4.1-py3-none-any.whl")
distributePyDep("pywin32-306-cp312-cp312-win_amd64.whl")
tasks.nodepJar {
manifest {
attributes['Main-Class'] = 'agent.dbgeng.gadp.DbgEngGadpServer'
}
}
test {
jvmArgs('-Xrs') // TODO: Is this needed, or left over from trial-and-error
if ("win_x86_64".equals(getCurrentPlatformName())) {
dependsOn(":Framework-Debugging:testSpecimenWin_x86_64")
}
}

View file

@ -2,16 +2,14 @@
##MODULE IP: Apache License 2.0
##MODULE IP: MIT
Module.manifest||GHIDRA||||END|
data/debugger-launchers/kernel-dbgeng.bat||GHIDRA||||END|
data/debugger-launchers/local-dbgeng-attach.bat||GHIDRA||||END|
data/debugger-launchers/local-dbgeng-ext.bat||GHIDRA||||END|
data/debugger-launchers/local-dbgeng.bat||GHIDRA||||END|
data/debugger-launchers/local-ttd.bat||GHIDRA||||END|
data/debugger-launchers/remote-dbgeng.bat||GHIDRA||||END|
README.md||GHIDRA||||END|
src/main/help/help/TOC_Source.xml||GHIDRA||||END|
src/main/help/help/topics/dbgeng/dbgeng.html||GHIDRA||||END|
src/main/py/LICENSE||GHIDRA||||END|
src/main/py/MANIFEST.in||GHIDRA||||END|
src/main/py/README.md||GHIDRA||||END|
src/main/py/pyproject.toml||GHIDRA||||END|
src/main/py/src/ghidradbg/dbgmodel/DbgModel.idl||GHIDRA||||END|
src/main/py/src/ghidradbg/py.typed||GHIDRA||||END|
src/main/py/src/ghidradbg/schema.xml||GHIDRA||||END|
src/main/py/src/ghidrattd/schema.xml||GHIDRA||||END|
src/main/py/src/ghidradbg/schema_exdi.xml||GHIDRA||||END|

View file

@ -1,4 +1,19 @@
::@title dbgeng-kernel
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng kernel
::@desc <html><body width="300px">
::@desc <h3>Kernel debugging using <tt>dbgeng</tt> (in a Python interpreter)</h3>
::@desc <p>
@ -6,12 +21,15 @@
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group local
::@menu-group dbgeng
::@icon icon.debugger
::@help TraceRmiLauncherServicePlugin#dbgeng_kernel
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
::@help dbgeng#win_kernel
::@depends Debugger-rmi-trace
::@enum Connection:str Remote Local EXDI
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_ARGS:str="" "Arguments" "Connection-string arguments (a la .server)"
::@env OPT_KCONNECT_STRING:str="" "Arguments" "Connection-string arguments (a la .server)"
::@env OPT_TARGET_FLAGS:Connection="Remote" "Type" "Type/flags for connection (Remote/Local/EXDI)."
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available."
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)."

View file

@ -1,4 +1,19 @@
::@title dbgeng-attach
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng attach
::@desc <html><body width="300px">
::@desc <h3>Attach with <tt>dbgeng</tt> (in a Python interpreter)</h3>
::@desc <p>
@ -6,12 +21,13 @@
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group local
::@menu-group dbgeng
::@icon icon.debugger
::@help TraceRmiLauncherServicePlugin#dbgeng_attach
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
::@env OPT_TARGET_PID:str="" "Process id" "The target process id"
::@env OPT_ATTACH_FLAGS:str="0" "Attach flags" "Attach flags"
::@help dbgeng#attach
::@depends Debugger-rmi-trace
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
::@env OPT_TARGET_PID:int=0 "Process id" "The target process id"
::@env OPT_ATTACH_FLAGS:int=0 "Attach flags" "Attach flags"
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available."
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)."

View file

@ -1,4 +1,20 @@
::@title dbgeng-ext
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng extra options
::@image-opt env:OPT_TARGET_IMG
::@desc <html><body width="300px">
::@desc <h3>Launch with <tt>dbgeng</tt> (in a Python interpreter)</h3>
::@desc <p>
@ -6,10 +22,11 @@
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group local
::@menu-group dbgeng
::@icon icon.debugger
::@help TraceRmiLauncherServicePlugin#dbgeng_ext
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
::@help dbgeng#ext
::@depends Debugger-rmi-trace
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_IMG:file="" "Image" "The target binary executable image"
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target"
@ -17,9 +34,10 @@
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)."
::@env OPT_TARGET_DIR:str="" "Dir" "Initial directory"
::@env OPT_TARGET_ENV:str="" "Env" "Environment variables (sep=/0)"
::@env OPT_CREATE_FLAGS:str="1" "Create flags" "Creation flags"
::@env OPT_CREATE_ENGFLAGS:str="0" "Create flags (Engine)" "Engine-specific creation flags"
::@env OPT_VERIFIER_FLAGS:str="0" "Verifier flags" "Verifier flags"
::@env OPT_CREATE_FLAGS:int="1" "Create flags" "Creation flags"
::@env OPT_CREATE_ENGFLAGS:int="0" "Create flags (Engine)" "Engine-specific creation flags"
::@env OPT_VERIFIER_FLAGS:int="0" "Verifier flags" "Verifier flags"
::@env OPT_ENG_OPTIONS:int="0x20" "Engine options" "Options for AddEngineOptions (e.g. INITIAL_BREAK=0x20)"
@echo off

View file

@ -0,0 +1,37 @@
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng TTD
::@desc <html><body width="300px">
::@desc <h3>Open trace with <tt>dbgeng</tt> (in a Python interpreter)</h3>
::@desc <p>
::@desc This will open a WinDbg TTD trace of the target on the local machine using <tt>dbgeng.dll</tt>.
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group dbgeng
::@icon icon.debugger
::@help dbgeng#ttd
::@depends Debugger-rmi-trace
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_TRACE:file="" "Trace (.run)" "The target trace image"
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available."
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)."
@echo off
set USE_TTD=true
"%OPT_PYTHON_EXE%" -i ..\support\local-dbgeng-trace.py

View file

@ -1,4 +1,20 @@
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng
::@image-opt env:OPT_TARGET_IMG
::@desc <html><body width="300px">
::@desc <h3>Launch with <tt>dbgeng</tt> (in a Python interpreter)</h3>
::@desc <p>
@ -6,10 +22,11 @@
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group local
::@menu-group dbgeng
::@icon icon.debugger
::@help TraceRmiLauncherServicePlugin#dbgeng
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
::@help dbgeng#local
::@depends Debugger-rmi-trace
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_IMG:file="" "Image" "The target binary executable image"
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target"

View file

@ -1,21 +0,0 @@
::@title ttd
::@desc <html><body width="300px">
::@desc <h3>Launch with <tt>ttd</tt> (in a Python interpreter)</h3>
::@desc <p>
::@desc This will launch the target on the local machine for time-travel debugging.
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group local
::@icon icon.debugger
::@help TraceRmiLauncherServicePlugin#dbgeng_ttd
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_IMG:file="" "Trace (.run)" "A trace associated with the target binary executable"
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target"
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available."
::@env OPT_DBGMODEL_PATH:dir="" "Path to dbgeng.dll & \\ttd" "Path containing dbgeng and associated DLLS (if not Windows Kits)."
@echo off
"%OPT_PYTHON_EXE%" -i ..\support\local-ttd.py

View file

@ -1,20 +1,32 @@
::@title dbgeng-remote
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng remote
::@desc <html><body width="300px">
::@desc <h3>Launch with <tt>dbgeng</tt> remotely (in a Python interpreter)</h3>
::@desc <h3>Connect to a remote debugger (via the .server interface)</h3>
::@desc <p>
::@desc This will launch the target on a remote machine using <tt>dbgeng.dll</tt>.
::@desc This will connect to a remote machine using the .server interface.
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group local
::@menu-group dbgeng
::@icon icon.debugger
::@help TraceRmiLauncherServicePlugin#dbgeng_remote
::@env OPT_PYTHON_EXE:file="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_IMG:file="" "Image" "The target binary executable image"
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target"
::@env OPT_CONNECT_STRING:str="" "Connection" "Connection-string arguments (a la dbgsrv args)"
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available."
::@help dbgeng#remote
::@depends Debugger-rmi-trace
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
::@env OPT_CONNECT_STRING:str="" "Connection" "Connection-string arguments (a la .server)"
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)."
@echo off

View file

@ -0,0 +1,39 @@
:: ###
:: IP: GHIDRA
::
:: 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.
:: See the License for the specific language governing permissions and
:: limitations under the License.
:: ##
::@title dbgeng svrcx
::@image-opt env:OPT_TARGET_IMG
::@desc <html><body width="300px">
::@desc <h3>Connect to a remote <tt>dbgeng</tt> connection server and launch the target (in a Python interpreter)</h3>
::@desc <p>
::@desc This will launch the target via a connection server on a remote machine.
::@desc For setup instructions, press <b>F1</b>.
::@desc </p>
::@desc </body></html>
::@menu-group dbgeng
::@icon icon.debugger
::@help dbgeng#svrcx
::@depends Debugger-rmi-trace
::@env OPT_PYTHON_EXE:file!="python" "Python command" "The path to the Python 3 interpreter. Omit the full path to resolve using the system PATH."
:: Use env instead of args, because "all args except first" is terrible to implement in batch
::@env OPT_TARGET_IMG:str="" "Image" "The target binary executable image"
::@env OPT_TARGET_ARGS:str="" "Arguments" "Command-line arguments to pass to the target"
::@env OPT_CONNECT_STRING:str="" "Connection" "Connection-string arguments (a la dbgsrv args)"
::@env OPT_USE_DBGMODEL:bool=true "Use dbgmodel" "Load and use dbgmodel.dll if it is available."
::@env WINDBG_DIR:dir="" "Path to dbgeng.dll directory" "Path containing dbgeng and associated DLLS (if not Windows Kits)."
@echo off
"%OPT_PYTHON_EXE%" -i ..\support\svrcx-dbgeng.py

View file

@ -17,27 +17,20 @@
import os
import sys
home = os.getenv('GHIDRA_HOME')
if os.path.isdir(f'{home}\\ghidra\\.git'):
def append_paths():
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
elif os.path.isdir(f'{home}\\.git'):
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
else:
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src')
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src')
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from ghidradbg import util
from pybag.dbgeng import core as DbgEng
from ghidradbg.hooks import on_state_changed
from ghidradbg.util import dbg
@ -47,8 +40,17 @@ def main():
repl = cmd.repl
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR'))
args = os.getenv('OPT_TARGET_ARGS')
cmd.ghidra_trace_attach_kernel(args, start_trace=False)
type = os.getenv('OPT_TARGET_FLAGS')
flags = 0
if type == "Local":
flags = 1
if type == "EXDI":
print(f"ConfigFile: {os.getenv('EXDI_GDBSRV_XML_CONFIG_FILE')}")
print(f"RegMapFile: {os.getenv('EXDI_SYSTEM_REGISTERS_MAP_XML_FILE')}")
util.set_convenience_variable('output-radix', 16)
flags = 2
args = os.getenv('OPT_KCONNECT_STRING')
cmd.ghidra_trace_attach_kernel(args, flags, start_trace=False)
# TODO: HACK
try:
@ -56,12 +58,18 @@ def main():
except KeyboardInterrupt as ki:
dbg.interrupt()
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
# cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
cmd.ghidra_trace_start("System")
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK)
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -18,25 +18,16 @@ import os
import sys
home = os.getenv('GHIDRA_HOME')
if os.path.isdir(f'{home}\\ghidra\\.git'):
def append_paths():
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
elif os.path.isdir(f'{home}\\.git'):
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
else:
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src')
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src')
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
@ -61,9 +52,14 @@ def main():
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK)
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -18,25 +18,16 @@ import os
import sys
home = os.getenv('GHIDRA_HOME')
if os.path.isdir(f'{home}\\ghidra\\.git'):
def append_paths():
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
elif os.path.isdir(f'{home}\\.git'):
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
else:
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src')
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src')
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
@ -51,13 +42,20 @@ def main():
args = os.getenv('OPT_TARGET_ARGS')
if args:
args = ' ' + args
target = os.getenv('OPT_TARGET_IMG')
if target is None or target == "":
print("dbgeng requires a target image - please try again.")
cmd.ghidra_trace_disconnect()
return
cmd.ghidra_trace_create_ext(
os.getenv('OPT_TARGET_IMG') + args,
target + args,
os.getenv('OPT_TARGET_DIR'),
os.getenv('OPT_TARGET_ENV'),
os.getenv('OPT_CREATE_FLAGS'),
os.getenv('OPT_CREATE_ENGFLAGS'),
os.getenv('OPT_VERIFIER_FLAGS'),
os.getenv('OPT_ENG_OPTIONS'),
start_trace=False)
# TODO: HACK
@ -66,12 +64,17 @@ def main():
except KeyboardInterrupt as ki:
dbg.interrupt()
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
cmd.ghidra_trace_start(target)
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK)
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -0,0 +1,71 @@
## ###
# IP: GHIDRA
#
# 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.
# See the License for the specific language governing permissions and
# limitations under the License.
##
import os
import sys
def append_paths():
sys.path.append(
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
from ghidradbg.hooks import on_state_changed
from ghidradbg.util import dbg
# So that the user can re-enter by typing repl()
global repl
repl = cmd.repl
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR'))
target = os.getenv('OPT_TARGET_TRACE')
if target is None or target == "":
print("dbgeng requires a target trace - please try again.")
cmd.ghidra_trace_disconnect()
return
cmd.ghidra_trace_open(target, start_trace=False)
# TODO: HACK
# Also, the wait() must precede sync_enable() or else PROC_STATE will
# contain the wrong PID, and later events will get snuffed
try:
dbg.wait()
except KeyboardInterrupt as ki:
dbg.interrupt()
cmd.ghidra_trace_start(target)
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -18,25 +18,16 @@ import os
import sys
home = os.getenv('GHIDRA_HOME')
if os.path.isdir(f'{home}\\ghidra\\.git'):
def append_paths():
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
elif os.path.isdir(f'{home}\\.git'):
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
else:
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src')
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src')
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
@ -51,8 +42,13 @@ def main():
args = os.getenv('OPT_TARGET_ARGS')
if args:
args = ' ' + args
cmd.ghidra_trace_create(
os.getenv('OPT_TARGET_IMG') + args, start_trace=False)
target = os.getenv('OPT_TARGET_IMG')
if target is None or target == "":
print("dbgeng requires a target image - please try again.")
cmd.ghidra_trace_disconnect()
return
cmd.ghidra_trace_create(target + args, start_trace=False)
# TODO: HACK
try:
@ -60,12 +56,17 @@ def main():
except KeyboardInterrupt as ki:
dbg.interrupt()
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
cmd.ghidra_trace_start(target)
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK)
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -1,58 +0,0 @@
## ###
# IP: GHIDRA
#
# 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.
# See the License for the specific language governing permissions and
# limitations under the License.
##
import os
import sys
home = os.getenv('GHIDRA_HOME')
if os.path.isdir(f'{home}\\ghidra\\.git'):
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
elif os.path.isdir(f'{home}\\.git'):
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
else:
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src')
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src')
def main():
# Delay these imports until sys.path is patched
from ghidrattd import commands as cmd
from ghidrattd import hooks
###from ghidrattd.util import dbg
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR'))
args = os.getenv('OPT_TARGET_ARGS')
if args:
args = ' ' + args
cmd.ghidra_trace_create(
os.getenv('OPT_TARGET_IMG') + args, start_trace=True)
cmd.ghidra_trace_sync_enable()
hooks.on_stop()
cmd.repl()
if __name__ == '__main__':
main()

View file

@ -18,25 +18,16 @@ import os
import sys
home = os.getenv('GHIDRA_HOME')
if os.path.isdir(f'{home}\\ghidra\\.git'):
def append_paths():
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\ghidra\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
elif os.path.isdir(f'{home}\\.git'):
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\build\\pypkg\\src')
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\build\\pypkg\\src')
else:
sys.path.append(
f'{home}\\Ghidra\\Debug\\Debugger-agent-dbgeng\\pypkg\\src')
sys.path.append(f'{home}\\Ghidra\\Debug\\Debugger-rmi-trace\\pypkg\\src')
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
@ -48,26 +39,20 @@ def main():
repl = cmd.repl
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR'))
args = os.getenv('OPT_TARGET_ARGS')
if args:
args = ' ' + args
cmd.ghidra_trace_connect_server(os.getenv('OPT_CONNECT_STRING'))
img = os.getenv('OPT_TARGET_IMG')
if img is not None and img != "":
cmd.ghidra_trace_create(img + args, start_trace=False)
# TODO: HACK
try:
dbg.wait()
except KeyboardInterrupt as ki:
os.environ['OPT_USE_DBGMODEL'] = "false"
cmd.ghidra_trace_start("Remote")
cmd.ghidra_trace_sync_enable()
dbg.interrupt()
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS, DbgEng.DEBUG_STATUS_BREAK)
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -0,0 +1,76 @@
## ###
# IP: GHIDRA
#
# 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.
# See the License for the specific language governing permissions and
# limitations under the License.
##
# TO LAUNCH: py -i standalone_listener.py "path_to_target.exe"
import os
import sys
def append_paths():
sys.path.append(
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
from ghidradbg.hooks import on_state_changed
from ghidradbg.util import dbg
# So that the user can re-enter by typing repl()
global repl
repl = cmd.repl
cmd.ghidra_trace_listen()
args = os.getenv('OPT_TARGET_ARGS')
if args:
args = ' ' + args
else:
args = ''
target = sys.argv[1]
if target is None or target == "":
print("dbgeng requires a target image - please try again.")
cmd.ghidra_trace_disconnect()
return
cmd.ghidra_trace_create(target + args, start_trace=False)
# TODO: HACK
try:
dbg.wait()
except KeyboardInterrupt as ki:
dbg.interrupt()
cmd.ghidra_trace_start(target)
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -0,0 +1,69 @@
## ###
# IP: GHIDRA
#
# 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.
# See the License for the specific language governing permissions and
# limitations under the License.
##
import os
import sys
def append_paths():
sys.path.append(
f"{os.getenv('MODULE_Debugger_rmi_trace_HOME')}/data/support")
from gmodutils import ghidra_module_pypath
sys.path.append(ghidra_module_pypath("Debugger-rmi-trace"))
sys.path.append(ghidra_module_pypath())
def main():
append_paths()
# Delay these imports until sys.path is patched
from ghidradbg import commands as cmd
from pybag.dbgeng import core as DbgEng
from ghidradbg.hooks import on_state_changed
from ghidradbg.util import dbg
# So that the user can re-enter by typing repl()
global repl
repl = cmd.repl
cmd.ghidra_trace_connect(os.getenv('GHIDRA_TRACE_RMI_ADDR'))
args = os.getenv('OPT_TARGET_ARGS')
if args:
args = ' ' + args
cmd.ghidra_trace_connect_server(os.getenv('OPT_CONNECT_STRING'))
img = os.getenv('OPT_TARGET_IMG')
if img is not None and img != "":
cmd.ghidra_trace_create(img + args, start_trace=False)
# TODO: HACK
try:
dbg.wait()
except KeyboardInterrupt as ki:
dbg.interrupt()
cmd.ghidra_trace_start(os.getenv('OPT_TARGET_IMG'))
cmd.ghidra_trace_sync_enable()
on_state_changed(DbgEng.DEBUG_CES_EXECUTION_STATUS,
DbgEng.DEBUG_STATUS_BREAK)
cmd.repl()
if __name__ == '__main__':
try:
main()
except SystemExit as x:
if x.code != 0:
print(f"Exited with code {x.code}")

View file

@ -0,0 +1,31 @@
<?xml version='1.0' encoding='ISO-8859-1'?>
<!-- See Base's TOC_Source.xml for help -->
<tocroot>
<tocref id="TraceRmiLauncherServicePlugin">
<tocdef id="dbgeng" text="WinDbg (dbgeng.dll) Integration"
target="help/topics/dbgeng/dbgeng.html">
<tocdef id="dbgeng_local" text="Local"
target="help/topics/dbgeng/dbgeng.html#local" />
<tocdef id="dbgeng_ext" text="Extended Local"
target="help/topics/dbgeng/dbgeng.html#ext" />
<tocdef id="dbgeng_attach" text="Attach"
target="help/topics/dbgeng/dbgeng.html#attach" />
<tocdef id="dbgeng_remote" text="Remote"
target="help/topics/dbgeng/dbgeng.html#remote" />
<tocdef id="dbgeng_svrcx" text="Process Server"
target="help/topics/dbgeng/dbgeng.html#svrcx" />
<tocdef id="dbgeng_win_kenel" text="Windows Kernel"
target="help/topics/dbgeng/dbgeng.html#win_kernel" />
<tocdef id="dbgeng_ttd" text="TTD (Time-Travel Debugging)"
target="help/topics/dbgeng/dbgeng.html#ttd" />
</tocdef>
</tocref>
</tocroot>

View file

@ -0,0 +1,297 @@
<!DOCTYPE doctype PUBLIC "-//W3C//DTD HTML 4.0 Frameset//EN">
<HTML>
<HEAD>
<META name="generator" content=
"HTML Tidy for Java (vers. 2009-12-01), see jtidy.sourceforge.net">
<TITLE>Debugger Launchers: Windows Debugger (WinDbg, dbgeng.dll)</TITLE>
<META http-equiv="Content-Type" content="text/html; charset=windows-1252">
<LINK rel="stylesheet" type="text/css" href="help/shared/DefaultStyle.css">
</HEAD>
<BODY lang="EN-US">
<H1>Debugger Launchers: Windows Debugger (WinDbg, dbgeng.dll)</H1>
<P>Integration with WinDbg is achieved by implementing a console debugger in Python 3 based on
<TT>dbgeng.dll</TT> (via pybag). This DLL represents the Microsoft Windows Debugger engine, and
so is best suited for debugging Windows user-space targets. This DLL also backs WinDbg and
several other debuggers on Windows. By default, the launcher will search for this DLL in an
installation of the Windows Debugging Kits version 10. If it does not find it there, it will
probably crash with a message in the Terminal.</P>
<P>The following launchers based on Microsoft's <TT>dbgeng.dll</TT> are included out of the
box:</P>
<H2><A name="local"></A>Local</H2>
<P>The plain "<TT>dbgeng</TT>" defaults to launching the current program as a user-mode process
on the local system. If there is no current program, this launcher cannot be used. Clearing the
<B>Image</B> option will cause this launcher to fail.</P>
<P>Please note on some system configurations, one of the debugger's dependencies
<TT>dbghelp.dll</TT> may get loaded from the system directory instead of from the WinDbg
installation, usually because a security product has pre-loaded it into the Python process. You
might work around this by copying the affected DLLs from your WinDbg installation into your
Python installation.</P>
<H3><A name="setup"></A>Setup</H3>
<P>Installing WinDbg is highly recommended. If you wish to forego installing WinDbg, you can
use the DLL provided with Windows, which is substantially less capable, by manually pointing
this connector to <TT>C:\Windows\system32</TT>. If you do this, some commands, e.g.
<TT>.server</TT>, will not be available.</P>
<P>If you have access to PyPI, setting up your Python 3 environment is done using Pip. Please
note the version specifier for Protobuf.</P>
<UL style="list-style-type: none">
<LI>
<PRE>
python3 -m pip install pybag protobuf==3.20.3
</PRE>
</LI>
</UL>
<P>If you are offline, or would like to use our provided packages, we still use Pip, but with a
more complicated invocation:</P>
<UL style="list-style-type: none">
<LI>
<PRE>
cd C:\path\to\ghidra_<EM>
version</EM>\Ghidra\Debug
python3 -m pip install --no-index -f Debugger-rmi-trace\pypkg\dist -f Debugger-agent-dbgeng\pypkg\dist pybag protobuf
</PRE>
</LI>
</UL>
<P>If you get an import error regarding <TT>distutils</TT>, it is due to a transitive
dependency on a buggy version of <TT>capstone</TT>. Work around it by installing
<TT>setuptools</TT>.</P>
<H3>Options</H3>
<UL>
<LI><B><TT>python</TT> command</B>: This is the command or path to the Python interpreter. It
must be version 3. Python 2 is not supported.</LI>
<LI><B>Image</B>: This is the path to the target binary image (EXE file). Ghidra will try to
fill this in based on information gathered when the current program was imported. If the file
exists and is executable on the local machine, it will be filled in automatically. Otherwise,
it is up to you to locate it. <B>NOTE:</B> If you have patched the current program database,
these changes are <EM>not</EM> applied to the target. You can either 1) apply the same
patches to the target once it is running, or 2) export a patched copy of your image and
direct this launcher to run it.</LI>
<LI><B>Arguments</B>: These are the command-line arguments to pass into the target process.
These are passed as is into WinDbg's "<TT>CreateProcess</TT>" function.</LI>
<LI><B>Use <TT>dbgmodel</TT></B>: If <TT>dbgmodel.dll</TT> is available on the system, this
launcher will use it to populate the trace's object model. Without that DLL, the launcher
will invent its own model, roughly approximating the same, using just the information
available from <TT>dbgeng.dll</TT>. Disabling this option will prevent the launcher from
using <TT>dbgmodel.dll</TT>, even when it is available.</LI>
<LI><B>Path to <TT>dbgeng.dll</TT> directory</B>: By default, the launcher allows the
underlying <TT>pybag</TT> package to locate the Windows Debugger DLLs. This is typically
found by examining the registry for a Windows Kits 10 installation. Otherwise, it may check
its typical installation directory. This will <EM>not</EM> search the Windows system
directory, but you can configure it manually here. This option allows you to override this
search. For example, if you have installed WinDbg Preview or later from the Microsoft Store
and wish to use its DLLs, you will need to fill in this option.</LI>
</UL>
<P>Once running, you are presented with a command-line interface in Ghidra's Terminal. This CLI
accepts your usual WinDbg (kd) commands. You can escape from this CLI and enter a Python 3 REPL
by entering "<TT>.exit</TT>". This is not an actual kd command, but our implementation
understands this to mean exit the kd REPL. From the Python 3 REPL, you can access the
underlying Python-based API <TT>pybag</TT>. This is an uncommon need, but may be useful for
diagnostics and/or workarounds. To re-enter the kd REPL, enter "<TT>repl()</TT>".
Alternatively, if you are trying to quit, but typed "<TT>.exit</TT>", just type
"<TT>quit()</TT>" to terminate the session.</P>
<H2><A name="ext"></A>Extended Local</H2>
<P>The "<TT>dbgeng-ext</TT>" launcher extends the base <TT>dbgeng</TT> launcher adding extra
options (a la <TT>IDebugClient</TT>'s <TT>CreateProcess2</TT>).</P>
<H3>Options</H3>
<UL>
<LI><B>Dir</B>: This is the starting directory for the process.</LI>
<LI><B>Env</B>: This is a composite string containg Environment Variable entries delineated
by '/0' separators. For example, you could redefine USERNAME and USERPROFILE with the entry
'USERNAME=SomeUser/0USERPROFILE=C:\Users\SomeUser'.</LI>
<LI><B>CreateFlags</B>: Flags used when creating the process, typically either
DEBUG_PROCESS(1) or DEBUG_ONLY_THIS_PROCESS(2) if you do not wish to follow spawned
processes. Other possible values are defined by processes.h's
CreateProcessCreationFlags.</LI>
<LI><B>CreateFlags (Engine)</B>: Engine-specific flags used when creating the process
(defined in dbgeng.h). Typically, these are set to 0.</LI>
<LI><B>VerifierFlags (Engine)</B>: Flags used by the Application Verifier. Typically unused,
but, if desired, CreateEngineFlags must include
DEBUG_ECREATE_PROCESS_USE_VERIFIER_FLAGS(2).</LI>
</UL>
<H2><A name="attach"></A>Attach</H2>
<P>This launcher allows the user to attach to a local running process. Options are the same as
those for the base dbgeng, except for ProcessId and AttachFlags</P>
<H3>Options</H3>
<UL>
<LI><B>ProcessId</B>: The pid of the process you wish to attach to.</LI>
<LI><B>AttachFlags</B>: Flags used when attaching to the target process, typically
DEBUG_ATTACH_PROCESS(0). Other possible values are defined in dbgeng.h and determine whether
the attach should be invasive or not and the status of the process after attaching.</LI>
</UL>
<H2><A name="remote"></A>Remote</H2>
<P>This launcher connects to a remote debugger that has opened a port for remote control.</P>
<H3>Options</H3>
<UL>
<LI>
<B>Connection</B>: This is the connection string specifying the transport options for
communicating with the remote debugger. A typical example might be
'tcp:port=12345,server=192.168.0.2' for a debugger that has issued the command
<PRE>
.server tcp:port=12345
</PRE>
</LI>
</UL>
<H2><A name="svrcx"></A>Process Server</H2>
<P>The "<TT>dbgeng-svrcx</TT>" launcher extends the base dbgeng launcher adding an option for
connecting through a remote process server.</P>
<H3>Options</H3>
<UL>
<LI>
<B>Connection</B>: This is the connection string specifying the transport options for
communicating with the remote server. A typical example might be
'tcp:port=12345,server=192.168.0.2' for a process server launched on the machine at
192.168.0.2 using:
<PRE>
dbgsrv -t tcp:port=12345
</PRE>
</LI>
</UL>
<H2><A name="win_kernel"></A>Windows Kernel</H2>
<P>This version of the dbgeng should be used for kernel-debugging of a remote machine. Options
are the same as the base dbgeng, except for the connection-string arguments. For remote
debugging, the target machine should be booted with the appropriate options, set using BCDEDIT
or the equivalent, such as:</P>
<UL style='list-style-type: none'>
<LI>
<PRE>
bcdedit /debug ON
bdcedit /dbgsettings NET HOSTIP:IP PORT:54321 KEY:1.1.1.1
</PRE>
</LI>
</UL>
<P>where IP= the address of the machine runing Ghidra.</P>
<H3>Options</H3>
<UL>
<LI><B>Arguments</B>: This is the connection string specifying the transport options for
communicating with the remote target. A typical example might be
'net:port=54321,key=1.1.1.1'.'</LI>
</UL>
<UL>
<LI><B>Type</B>: The type of kernel connection, either "Remote", "Local", or "EXDI".
"Remote", the most common type, indicates two-machine debugging over various possible
connection media, e.g. Ethernet, serial, USB, etc. "Local" is used for limited introspection
into the target on which the debugger is running. "EXDI" is arguably the most exotic type -
it essentially simulates the normal "Remote" connection using the gdb Remote Serial Protocol.
It can be used when connecting to gdbstubs in platforms, such as QEMU, VMWare, Trace32,
etc.</LI>
</UL>
<H3>EXDI</H3>
<P>Setup for EXDI connections is fairly complicated and difficult to get correct. The argument
string typically should be something like:</P>
<UL style='list-style-type: none'>
<LI>
<PRE>
exdi:CLSID={29f9906e-9dbe-4d4b-b0fb-6acf7fb6d014},Kd=Guess,DataBreaks=Exdi
</PRE>
</LI>
</UL>
<P>The CLSID here should match the CLSID in the <B>exdiConfigData.xml</B> file in the debugger
architectural directory. If windbg has been run using EXDI at some point, there will also be an
entry in the System Registry for this CLSID. The InprocServer32 subentry for this CLSID in the
Registry should point to a copy of ExdiGdbSrv.dll, typically the one in the same directory.
This DLL must reside somewhere that the debugger has permission to load from, i.e. not in the
WindowsApps directory tree. The <B>exdiConfigData</B> file should be configured for the target
you're using. We heavily recommend using <B>displayCommPackets==yes</B>, as many of the tasks
take considerable time, and this is the only indicator of progress.</P>
<P>The <B>Kd=Guess</B> parameter causes the underlying engine to scan memory for the kernel's
base address, which will probably not be provided by the gdbstub. (<B>Kd=NtBaseAddr</B> is also
a valid option, as is eliminating the parameter, but, currently, we have no idea how to point
the configuration at a correct value. Using this option will cause the load to spin
pointlessly.) If you can, we highly recommend breaking the target near the base address, as the
search proceeds down through memory starting at the current program counter. If the difference
between the PC and the base address is large, the loading process will punt before useful
values are detected. If anyone understand how to extend this search (or knows how to set the
base address to sidestep the scan), we would really love some guidance.</P>
<H2><A name="ttd"></A>TTD (Time-Travel Debugging)</H2>
<P>This is an extension to our launcher for the Windows Debugger to support TTD. WinDbg TTD
uses <CODE>event:ticks</CODE> to denote its times. This corresponds well to Ghidra's
<CODE>snapshot:steps</CODE> syntax, when we let snapshot be an event and ticks count the number
of instruction steps. Upon expanding the "Events" node in the Model tree, we create a snapshot
for every TTD event, including thread create/terminate, module load/unload, syscall, and other
asynchronous changes. Then, when Ghidra navigates to a schedule of the form
<CODE>snapshot:steps</CODE>, we command WinDbg to navigate to the corresponding
<CODE>event:ticks</CODE> instead of using Ghidra's emulator. Conversely, time navigation from
the WinDbg CLI will correspondingly navigate Ghidra. Thus, the two are synchronized in time. We
also add <EM>reverse</EM> variants of the <B>Go</B> and <B>Step</B> control commands.</P>
<H3>Options</H3>
<P>This launcher has basically the same options as the WinDbg launcher, except that arguments
are not included and the DLL path must contain <TT>TTDReplay.dll</TT> and the scripts that
implement TTD. These are most easily obtained by installing WinDbg Preview or later.</P>
<H3>Setup</H3>
<P>Depending on how you acquire WinDbg TTD, you may need to copy the installation to a
directory Ghidra is allowed to access. It's best not to try cherry-picking files. Just
copy/unpack the entire WinDbg installation. Point the launch dialog to the directory containing
<TT>dbgeng.dll</TT> as usual.</P>
<P><B>NOTE:</B> It's possible, especially if you have anti-virus software installed, that
<TT>dbghelp.dll</TT> is forcefully loaded into the Python process before our connector package
tries to load <TT>dbgeng.dll</TT>. This can cause <TT>dbghelp.dll</TT> to be loaded from
<TT>System32</TT>, but <TT>dbgeng.dll</TT> to be loaded from the WinDbg installation, often
leading to DLL compatibility problems. This usually manifests in module load and/or Python
import errors. The only real way to be sure is to use a system utility and inspect the DLLs
loaded by the <TT>python.exe</TT> process. You may be able to work around the issue by copying
<TT>dbghelp.dll</TT> (and any other affected WinDbg DLLs) from the WinDbg installation into
your Python installation, e.g., <TT>C:\Python313\dbghelp.dll</TT>.</P>
</BODY>
</HTML>

View file

@ -1,95 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CompletableFuture;
import agent.dbgeng.model.impl.DbgModelImpl;
import ghidra.dbg.DebuggerModelFactory;
import ghidra.dbg.DebuggerObjectModel;
import ghidra.dbg.util.ConfigurableFactory.FactoryDescription;
import ghidra.program.model.listing.Program;
@FactoryDescription(
brief = "MS dbgeng.dll (WinDbg)",
htmlDetails = """
Connect to the Microsoft Debug Engine.
This is the same engine that powers WinDbg.
This is best for most Windows userspace and kernel targets.
Kernel debugging is still experimental.
This will access the native API, which may put Ghidra's JVM at risk.""")
public class DbgEngInJvmDebuggerModelFactory implements DebuggerModelFactory {
protected String remote = "none"; // Require user to start server
@FactoryOption("DebugConnect options (.server)")
public final Property<String> agentRemoteOption =
Property.fromAccessors(String.class, this::getAgentRemote, this::setAgentRemote);
protected String transport = "none"; // Require user to start server
@FactoryOption("Remote process server options (untested)")
public final Property<String> agentTransportOption =
Property.fromAccessors(String.class, this::getAgentTransport, this::setAgentTransport);
@Override
public CompletableFuture<? extends DebuggerObjectModel> build() {
DbgModelImpl model = new DbgModelImpl();
List<String> cmds = new ArrayList<>();
completeCommandLine(cmds);
return model.startDbgEng(cmds.toArray(new String[cmds.size()])).thenApply(__ -> model);
}
@Override
public int getPriority(Program program) {
// TODO: Might instead look for the DLL
if (!System.getProperty("os.name").toLowerCase().contains("windows")) {
return -1;
}
if (program != null) {
String exe = program.getExecutablePath();
if (exe == null || exe.isBlank()) {
return -1;
}
}
return 80;
}
public String getAgentTransport() {
return transport;
}
public void setAgentTransport(String transport) {
this.transport = transport;
}
public String getAgentRemote() {
return remote;
}
public void setAgentRemote(String remote) {
this.remote = remote;
}
protected void completeCommandLine(List<String> cmd) {
if (!remote.equals("none") && !remote.equals("")) {
cmd.addAll(List.of(remote));
}
if (!transport.equals("none") && !transport.equals("")) {
cmd.addAll(List.of(transport));
}
}
}

View file

@ -1,72 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import com.sun.jna.platform.win32.WinNT.HRESULT;
import com.sun.jna.platform.win32.COM.COMException;
import com.sun.jna.platform.win32.COM.COMUtils;
/**
* Utilities for interacting with Microsoft COM objects beyond those provided by {@link COMUtils}.
*
* See the MSDN for details on the meanings of the return codes for the function or method of
* interest.
*/
public interface COMUtilsExtra {
public static HRESULT E_UNEXPECTED = new HRESULT(0x8000FFFF);
public static HRESULT E_BOUNDS = new HRESULT(0x8000000B);
public static HRESULT E_NOTIMPLEMENTED = new HRESULT(0x80004001);
public static HRESULT E_NOINTERFACE = new HRESULT(0x80004002);
public static HRESULT E_COM_EXC = new HRESULT(0x80004003);
public static HRESULT E_FAIL = new HRESULT(0x80004005);
public static HRESULT E_CANTCALLOUT_INASYNCCALL = new HRESULT(0x80010004);
public static HRESULT E_INTERNALEXCEPTION = new HRESULT(0x80040205);
public static HRESULT E_ACCESS_DENIED = new HRESULT(0x80070005);
public static HRESULT E_CANNOT_READ = new HRESULT(0x8007001E);
public static HRESULT E_INVALID_PARAM = new HRESULT(0x80070057);
public static HRESULT E_SCOPE_NOT_FOUND = new HRESULT(0x8007013E);
/**
* Check if the given exception represents an {@code E_NOINTERFACE} result
*
* @param e the exception
* @return true if {@code E_NOINTERFACE}
*/
static boolean isE_NOINTERFACE(COMException e) {
return E_NOINTERFACE.equals(e.getHresult());
}
/**
* Check if the given exception represents an {@code E_UNEXPECTED} result
*
* @param e the exception
* @return true if {@code E_UNEXPECTED}
*/
static boolean isE_UNEXPECTED(COMException e) {
return E_UNEXPECTED.equals(e.getHresult());
}
/**
* Check if the given exception represents an {@code E_INTERNALEXCEPTION} result
*
* @param e the exception
* @return true if {@code E_INTERNALEXCEPTION}
*/
static boolean isE_INTERNALEXCEPTION(COMException e) {
return E_INTERNALEXCEPTION.equals(e.getHresult());
}
}

View file

@ -1,163 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.lang.ref.Cleaner;
import com.sun.jna.WString;
import com.sun.jna.platform.win32.Kernel32Util;
import com.sun.jna.platform.win32.WinDef.DWORD;
import com.sun.jna.platform.win32.WinNT.HANDLE;
import com.sun.jna.platform.win32.COM.IUnknown;
import agent.dbgeng.impl.dbgeng.client.DebugClientInternal;
import agent.dbgeng.jna.dbgeng.DbgEngNative;
import ghidra.comm.util.BitmaskSet;
import ghidra.util.Msg;
/**
* A wrapper for Microsoft's {@code dbgeng.dll} that presents a Java-friendly interface.
*
* This is the "root interface" from which all other interfaces to {@code dbgeng.dll} are generated.
* Not every method listed in the documentation, nor every method present in the header, is
* implemented. Only those that were necessary to implement the SCTL adapter. However, the class and
* interface hierarchy was designed so that adding the remaining methods should be fairly
* straightforward. This wrapper attempts to obtain the most capable COM interfaces for the debug
* client that it knows. Again, newer interfaces should be fairly straightforward to add.
*
* Methods that are "obviously" wrappers for a COM method are left undocumented, unless there is
* some nuance to how it has been wrapped. In many cases, a parameter which is an integer in the COM
* method may be presented as an {@code enum} or {@link BitmaskSet} by the wrapper. Consult the MSDN
* for the meaning of the various values and bit flags.
*
* Each wrapper interface is implemented by several COM interface wrappers: one for each known COM
* interface version. The wrapper is optimistic, in that it declares wrapper methods even for COM
* methods that are only available in later versions. The implementations limited to earlier COM
* interfaces should either emulate the operation, or throw an
* {@link UnsupportedOperationException}. Where a newer method is provided by a newer interface, a
* wrapper implementation should prefer the latest. For example, one series of interfaces introduces
* {@code *Wide} variants of existing methods. Since Java also uses a UTF-16-like string encoding
* internally, JNA permits wide strings to be passed by reference. Thus, the wide variant is always
* preferred.
*
* Pay careful attention to the threading requirements imposed by {@code dbgeng.dll} these can be
* found in the MSDN. As a general rule of thumb, if the method is reentrant (i.e., it can be called
* from any thread), it is declared in the {@code *Reentrant} variant of the wrapper interface.
* There are few of these. Unless the documentation explicitly lists the method as reentrant, do not
* declare it there. Many methods appear to execute successfully from the wrong thread, but cause
* latent issues. A practice to prevent accidental use of non-reentrant methods outside of the
* client's owning thread is to ensure that only the owning thread can see the full interface. All
* other threads should only have access to the reentrant interface.
*
* If you implement methods that introduce a new callback class, use the existing callback type
* hierarchies as a model. There are many classes to implement. Furthermore, be sure to keep a
* reference to any active callback instances within the wrapper that uses them. The JNA has no way
* of knowing whether or not the instance is still being used by the external C/C++ library. If you
* do not store a reference, the JVM will think it's garbage and free it, even though COM is still
* using it. Drop the reference only when you are certain nothing external has a reference to it.
*/
public class DbgEng {
private static final Cleaner CLEANER = Cleaner.create();
private static class ReleaseCOMObject implements Runnable {
private final IUnknown obj;
ReleaseCOMObject(IUnknown obj) {
this.obj = obj;
}
@Override
public void run() {
Msg.debug(this, "Releasing COM object: " + obj);
obj.Release();
}
}
private static class ReleaseHANDLE implements Runnable {
private final HANDLE handle;
public ReleaseHANDLE(HANDLE handle) {
this.handle = handle;
}
@Override
public void run() {
Kernel32Util.closeHandle(handle);
}
}
public static class OpaqueCleanable {
@SuppressWarnings("unused") // A reference to control GC
private final Object state;
@SuppressWarnings("unused") // A reference to control GC
private final Cleaner.Cleanable cleanable;
public OpaqueCleanable(Object state, Cleaner.Cleanable cleanable) {
this.state = state;
this.cleanable = cleanable;
}
}
public static OpaqueCleanable releaseWhenPhantom(Object owner, IUnknown obj) {
ReleaseCOMObject state = new ReleaseCOMObject(obj);
return new OpaqueCleanable(state, CLEANER.register(owner, state));
}
public static OpaqueCleanable releaseWhenPhantom(Object owner, HANDLE handle) {
ReleaseHANDLE state = new ReleaseHANDLE(handle);
return new OpaqueCleanable(state, CLEANER.register(owner, state));
}
/**
* Connect to a debug session.
*
* See {@code DebugConnect} or {@code DebugConnectWide} on the MSDN.
*
* @param remoteOptions the options, like those given to {@code -remote}
* @return a new client connected as specified
*/
public static DebugClient debugConnect(String remoteOptions) {
WString options = new WString(remoteOptions);
return DebugClientInternal.tryPreferredInterfaces((refiid,
ppClient) -> DbgEngNative.INSTANCE.DebugConnectWide(options, refiid, ppClient));
}
/**
* Create a debug client.
*
* Typically, this client is connected to the "local server". See {@code DebugCreate} on the
* MSDN.
*
* @return a new client
*/
public static DebugClient debugCreate() {
return DebugClientInternal.tryPreferredInterfaces(DbgEngNative.INSTANCE::DebugCreate);
}
/**
* Create a debug client with the given options.
*
* See {@code DebugCreateEx} on the MSDN.
*
* @param options the options
* @return a new client
*/
public static DebugClient debugCreate(int options) {
DWORD dwOpts = new DWORD(options);
return DebugClientInternal.tryPreferredInterfaces(
(refiid, ppClient) -> DbgEngNative.INSTANCE.DebugCreateEx(refiid, dwOpts, ppClient));
}
}

View file

@ -1,83 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* A wrapper for {@code IDebugAdvanced} and its newer variants.
*/
public interface DebugAdvanced {
public static class DebugThreadBasicInformation {
public final Integer exitStatus;
public final Integer priorityClass;
public final Integer priority;
public final Long createTime;
public final Long exitTime;
public final Long kernelTime;
public final Long userTime;
public final Long startOffset;
public final Long affinity;
public DebugThreadBasicInformation(Integer exitStatus, Integer priorityClass,
Integer priority, Long createTime, Long exitTime, Long kernelTime, Long userTime,
Long startOffset, Long affinity) {
this.exitStatus = exitStatus;
this.priorityClass = priorityClass;
this.priority = priority;
this.createTime = createTime;
this.exitTime = exitTime;
this.kernelTime = kernelTime;
this.userTime = userTime;
this.startOffset = startOffset;
this.affinity = affinity;
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("<DebugThreadBasicInformation:\n");
if (exitStatus != null) {
sb.append(" exitStatus: " + exitStatus + "\n");
}
if (priorityClass != null) {
sb.append(" priorityClass: " + priorityClass + "\n");
}
if (priority != null) {
sb.append(" priority: " + priority + "\n");
}
if (createTime != null) {
sb.append(" createTime: " + createTime + "\n");
}
if (exitTime != null) {
sb.append(" exitTime: " + exitTime + "\n");
}
if (kernelTime != null) {
sb.append(" kernelTime: " + kernelTime + "\n");
}
if (userTime != null) {
sb.append(" userTime: " + userTime + "\n");
}
if (startOffset != null) {
sb.append(" startOffset: " + startOffset + "\n");
}
if (affinity != null) {
sb.append(" affinity: " + affinity + "\n");
}
sb.append(">");
return sb.toString();
}
}
DebugThreadBasicInformation getThreadBasicInformation(DebugThreadId tid);
}

View file

@ -1,137 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.jna.dbgeng.WinNTExtra.Machine;
import ghidra.comm.util.BitmaskSet;
import ghidra.comm.util.BitmaskUniverse;
/**
* A wrapper for {@code IDebugBreakpoint} and its newer variants.
*/
public interface DebugBreakpoint {
public static enum BreakType {
CODE, DATA, TIME, INLINE;
}
public static class BreakFullType {
public final BreakType breakType;
public final Machine procType; // TODO: Guessing the values are from WinNT
public BreakFullType(BreakType breakType, Machine procType) {
this.breakType = breakType;
this.procType = procType;
}
}
public static enum BreakFlags implements BitmaskUniverse {
GO_ONLY(1 << 0), //
DEFERRED(1 << 1), //
ENABLED(1 << 2), //
ADDER_ONLY(1 << 3), //
ONE_SHOT(1 << 4), //
;
private BreakFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static enum BreakAccess implements BitmaskUniverse {
READ(1 << 0), //
WRITE(1 << 1), //
EXECUTE(1 << 2), //
IO(1 << 3), //
;
private BreakAccess(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static class BreakDataParameters {
public int size;
public BitmaskSet<BreakAccess> access;
public BreakDataParameters(int size, BitmaskSet<BreakAccess> access) {
this.size = size;
this.access = access;
}
}
void remove();
int getId();
BreakFullType getType();
DebugClient getAdder();
BitmaskSet<BreakFlags> getFlags();
void addFlags(BitmaskSet<BreakFlags> flags);
void addFlags(BreakFlags... flags);
void removeFlags(BitmaskSet<BreakFlags> flags);
void removeFlags(BreakFlags... flags);
void setFlags(BitmaskSet<BreakFlags> flags);
void setFlags(BreakFlags... flags);
/**
* Get the location on target that triggers the breakpoint
*
* <p>
* If the breakpoint is deferred, this will return {@code null}. In that case, use
* {@link #getOffsetExpression()}.
*
* @return the offset, or {@code null}
*/
Long getOffset();
void setOffset(long offset);
String getOffsetExpression();
void setOffsetExpression(String expression);
BreakDataParameters getDataParameters();
void setDataParameters(BreakDataParameters params);
void setDataParameters(int size, BitmaskSet<BreakAccess> access);
void setDataParameters(int size, BreakAccess... access);
void dispose();
}

View file

@ -1,434 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.util.List;
import com.sun.jna.platform.win32.WinBase;
import agent.dbgeng.dbgeng.DebugRunningProcess.Description;
import agent.dbgeng.dbgeng.DebugRunningProcess.Description.ProcessDescriptionFlags;
import ghidra.comm.util.BitmaskSet;
import ghidra.comm.util.BitmaskUniverse;
/**
* A wrapper for {@code IDebugClient} and its newer variants.
*/
public interface DebugClient extends DebugClientReentrant {
public static enum ExecutionState {
RUNNING, STOPPED;
}
public static enum DebugStatus {
NO_CHANGE(false, null, 13), //
GO(true, ExecutionState.RUNNING, 10), //
GO_HANDLED(true, ExecutionState.RUNNING, 9), //
GO_NOT_HANDLED(true, ExecutionState.RUNNING, 8), //
STEP_OVER(true, ExecutionState.RUNNING, 7), //
STEP_INTO(true, ExecutionState.RUNNING, 5), //
BREAK(false, ExecutionState.STOPPED, 0), //
NO_DEBUGGEE(true, null, 1), // shouldWait is true to handle process creation
STEP_BRANCH(true, ExecutionState.RUNNING, 6), //
IGNORE_EVENT(false, null, 11), //
RESTART_REQUESTED(true, null, 12), //
REVERSE_GO(true, null, 0xff), //
REVERSE_STEP_BRANCH(true, null, 0xff), //
REVERSE_STEP_OVER(true, null, 0xff), //
REVERSE_STEP_INTO(true, null, 0xff), //
OUT_OF_SYNC(false, null, 2), //
WAIT_INPUT(false, null, 3), //
TIMEOUT(false, null, 4), //
;
public static final long MASK = 0xaf;
public static final long INSIDE_WAIT = 0x100000000L;
public static final long WAIT_TIMEOUT = 0x200000000L;
DebugStatus(boolean shouldWait, ExecutionState threadState, int precedence) {
this.shouldWait = shouldWait;
this.threadState = threadState;
this.precedence = precedence;
}
public final boolean shouldWait;
public final ExecutionState threadState;
public final int precedence; // 0 is highest
public static DebugStatus fromArgument(long argument) {
return values()[(int) (argument & MASK)];
}
public static boolean isInsideWait(long argument) {
return (argument & INSIDE_WAIT) != 0;
}
public static boolean isWaitTimeout(long argument) {
return (argument & WAIT_TIMEOUT) != 0;
}
}
public static enum SessionStatus {
ACTIVE, //
END_SESSION_ACTIVE_TERMINATE,//
END_SESSION_ACTIVE_DETACH, //
END_SESSION_PASSIVE, //
END, //
REBOOT, //
HIBERNATE, //
FAILURE, //
;
}
public static enum ChangeDebuggeeState implements BitmaskUniverse {
ALL(0xffffffff), //
REGISTERS(1 << 0), //
DATA(1 << 1), //
REFRESH(1 << 2), //
;
private ChangeDebuggeeState(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static enum ChangeEngineState implements BitmaskUniverse {
ALL(0xffffffff), //
CURRENT_THREAD(1 << 0), //
EFFECTIVE_PROCESSOR(1 << 1), //
BREAKPOINTS(1 << 2), //
CODE_LEVEL(1 << 3), //
EXECUTION_STATUS(1 << 4), //
ENGINE_OPTIONS(1 << 5), //
LOG_FILE(1 << 6), //
RADIX(1 << 7), //
EVENT_FILTERS(1 << 8), //
PROCESS_OPTIONS(1 << 9), //
EXTENSIONS(1 << 10), //
SYSTEMS(1 << 11), //
ASSEMBLY_OPTIONS(1 << 12), //
EXPRESSION_SYNTAX(1 << 13), //
TEXT_REPLACEMENTS(1 << 14), //
;
private ChangeEngineState(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static enum ChangeSymbolState implements BitmaskUniverse {
ALL(0xffffffff), //
LOADS(1 << 0), //
UNLOADS(1 << 1), //
SCOPE(1 << 2), //
PATHS(1 << 3), //
SYMBOL_OPTIONS(1 << 4), //
TYPE_OPTIONS(1 << 5), //
;
private ChangeSymbolState(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static enum DebugAttachFlags implements BitmaskUniverse {
DEFAULT(0), //
NONINVASIVE(1 << 0), //
EXISTING(1 << 1), //
NONINVASIVE_NO_SUSPEND(1 << 2), //
INVASIVE_NO_INITIAL_BREAK(1 << 3), //
INVASIVE_RESUME_PROCESS(1 << 4), //
NONINVASIVE_ALLOW_PARTIAL(1 << 5), //
;
DebugAttachFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static enum DebugCreateFlags implements BitmaskUniverse {
DEBUG_PROCESS(WinBase.DEBUG_PROCESS), //
DEBUG_ONLY_THIS_PROCESS(WinBase.DEBUG_ONLY_THIS_PROCESS), //
CREATE_SUSPENDED(WinBase.CREATE_SUSPENDED), //
DETACHED_PROCESS(WinBase.DETACHED_PROCESS), //
CREATE_NEW_CONSOLE(WinBase.CREATE_NEW_CONSOLE), //
//NORMAL_PRIORITY_CLASS(WinBase.NORMAL_PRIORITY_CLASS), //
//IDLE_PRIORITY_CLASS(WinBase.IDLE_PRIORITY_CLASS), //
//HIGH_PRIORITY_CLASS(WinBase.HIGH_PRIORITY_CLASS), //
//REALTIME_PRIORITY_CLASS(WinBase.REALTIME_PRIORITY_CLASS), //
CREATE_NEW_PROCESS_GROUP(WinBase.CREATE_NEW_PROCESS_GROUP), //
CREATE_UNICODE_ENVIRONMENT(WinBase.CREATE_UNICODE_ENVIRONMENT), //
CREATE_SEPARATE_WOW_VDM(WinBase.CREATE_SEPARATE_WOW_VDM), //
CREATE_SHARED_WOW_VDM(WinBase.CREATE_SHARED_WOW_VDM), //
CREATE_FORCEDOS(WinBase.CREATE_FORCEDOS), //
//BELOW_NORMAL_PRIORITY_CLASS(WinBase.BELOW_NORMAL_PRIORITY_CLASS), //
//ABOVE_NORMAL_PRIORITY_CLASS(WinBase.ABOVE_NORMAL_PRIORITY_CLASS), //
INHERIT_PARENT_AFFINITY(WinBase.INHERIT_PARENT_AFFINITY), //
//INHERIT_CALLER_PRIORITY(WinBase.INHERIT_CALLER_PRIORITY), //
CREATE_PROTECTED_PROCESS(WinBase.CREATE_PROTECTED_PROCESS), //
EXTENDED_STARTUPINFO_PRESENT(WinBase.EXTENDED_STARTUPINFO_PRESENT), //
//PROCESS_MODE_BACKGROUND_BEGIN(WinBase.PROCESS_MODE_BACKGROUND_BEGIN), //
//PROCESS_MODE_BACKGROUND_END(WinBase.PROCESS_MODE_BACKGROUND_END), //
CREATE_BREAKAWAY_FROM_JOB(WinBase.CREATE_BREAKAWAY_FROM_JOB), //
CREATE_PRESERVE_CODE_AUTHZ_LEVEL(WinBase.CREATE_PRESERVE_CODE_AUTHZ_LEVEL), //
CREATE_DEFAULT_ERROR_MODE(WinBase.CREATE_DEFAULT_ERROR_MODE), //
CREATE_NO_WINDOW(WinBase.CREATE_NO_WINDOW), //
//PROFILE_USER(WinBase.PROFILE_USER), //
//PROFILE_KERNEL(WinBase.PROFILE_KERNEL), //
//PROFILE_SERVER(WinBase.PROFILE_SERVER), //
//CREATE_IGNORE_SYSTEM_DEFAULT(WinBase.CREATE_IGNORE_SYSTEM_DEFAULT), //
DEBUG_CREATE_NO_DEBUG_HEAP(0x00000400), //
DEBUG_CREATE_THROUGH_RTL(0x00010000), //
;
DebugCreateFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public enum DebugEngCreateFlags implements BitmaskUniverse {
DEBUG_ECREATE_PROCESS_DEFAULT(0x00000000),
DEBUG_ECREATE_INHERIT_HANDLES(0x00000001),
DEBUG_ECREATE_USE_VERIFIER_FLAGS(0x00000002),
DEBUG_ECREATE_USE_IMPLICIT_COMMAND_LINE(0x00000004);
DebugEngCreateFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public enum DebugVerifierFlags implements BitmaskUniverse {
DEBUG_VERIFIER_DEFAULT(0x00000000);
DebugVerifierFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public enum DebugEndSessionFlags {
DEBUG_END_PASSIVE(0x00000000),
DEBUG_END_ACTIVE_TERMINATE(0x00000001),
DEBUG_END_ACTIVE_DETACH(0x00000002),
DEBUG_END_REENTRANT(0x00000003),
DEBUG_END_DISCONNECT(0x00000004);
DebugEndSessionFlags(int value) {
this.value = value;
}
private final int value;
public long getValue() {
return value;
}
}
public enum DebugOutputFlags {
DEBUG_OUTPUT_NORMAL(0x1), //
DEBUG_OUTPUT_ERROR(0x2), //
DEBUG_OUTPUT_WARNING(0x4), //
DEBUG_OUTPUT_VERBOSE(0x8), //
DEBUG_OUTPUT_PROMPT(0x10), //
DEBUG_OUTPUT_PROMPT_REGISTERS(0x20), //
DEBUG_OUTPUT_EXTENSION_WARNING(0x40), //
DEBUG_OUTPUT_DEBUGGEE(0x80), //
DEBUG_OUTPUT_DEBUGGEE_PROMPT(0x100), //
DEBUG_OUTPUT_SYMBOLS(0x200);
DebugOutputFlags(int value) {
this.value = value;
}
private final int value;
public long getValue() {
return value;
}
}
/**
* Obtain the advanced interface to this client.
*
* @return the advanced interface
*/
DebugAdvanced getAdvanced();
/**
* Obtain the control interface to this client
*
* @return the control interface
*/
@Override
DebugControl getControl();
/**
* Obtain the data spaces interface to this client
*
* @return the data spaces interface
*/
DebugDataSpaces getDataSpaces();
/**
* Obtain the registers interface to this client
*
* @return the registers interface
*/
DebugRegisters getRegisters();
/**
* Obtain the symbols interface to this client
*
* @return the symbols interface
*/
DebugSymbols getSymbols();
/**
* Obtain the system objects interface to this client
*
* @return the system objects interface
*/
DebugSystemObjects getSystemObjects();
/**
* The the ID for the local server
*
* @return the ID
*/
DebugServerId getLocalServer();
void attachKernel(long flags, String options);
void startProcessServer(String options);
DebugServerId connectProcessServer(String options);
boolean dispatchCallbacks(int timeout);
void flushCallbacks();
default void dispatchCallbacks() {
this.dispatchCallbacks(-1);
}
void exitDispatch(DebugClient client);
default void exitDispatch() {
exitDispatch(this);
}
void setInputCallbacks(DebugInputCallbacks cb);
void setOutputCallbacks(DebugOutputCallbacks cb);
void setEventCallbacks(DebugEventCallbacks cb);
List<DebugRunningProcess> getRunningProcesses(DebugServerId server);
Description getProcessDescription(DebugServerId si, int systemId,
BitmaskSet<ProcessDescriptionFlags> flags);
void attachProcess(DebugServerId si, long processId, BitmaskSet<DebugAttachFlags> attachFlags);
void createProcess(DebugServerId si, String commandLine,
String initialDirectory, String environment,
BitmaskSet<DebugCreateFlags> createFlags,
BitmaskSet<DebugEngCreateFlags> engCreateFlags,
BitmaskSet<DebugVerifierFlags> verifierFlags);
void createProcessAndAttach(DebugServerId si, String commandLine,
BitmaskSet<DebugCreateFlags> createFlags, int processId,
BitmaskSet<DebugAttachFlags> attachFlags);
void startServer(String options);
// Only in IDebugClient2
void waitForProcessServerEnd(int timeout);
default void waitForProcessServerEnd() {
waitForProcessServerEnd(-1);
}
void terminateCurrentProcess();
void detachCurrentProcess();
void abandonCurrentProcess();
void connectSession(int flags);
void endSession(DebugEndSessionFlags flags);
// Only in IDebugClient4+
void openDumpFileWide(String fileName);
}

View file

@ -1,46 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* An interface containing the subset of {@link DebugClient} methods which are reentrant.
*
* All other methods should be called only by the thread which created the client.
*/
public interface DebugClientReentrant {
/**
* Create a new client for the calling thread, connected to the same session as this client.
*
* @return the new client
*/
DebugClient createClient();
/**
* Get the reentrant control interface to the client
*
* @return the control interface
*/
DebugControlReentrant getControl();
/**
* End a session without acquiring locks
*
* Note. This method calls {@code IDebugClient::EndSession(DEBUG_END_REENTRANT)}. Per the MSDN,
* this may leave the engine in an indeterminate state. The engine should no longer be used by
* this process. It's really only appropriate to use this method when terminating the debugger.
*/
void endSessionReentrant();
}

View file

@ -1,447 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.util.ArrayList;
import java.util.List;
import com.sun.jna.platform.win32.WinBase;
import com.sun.jna.platform.win32.COM.COMException;
import agent.dbgeng.dbgeng.DebugBreakpoint.BreakType;
import agent.dbgeng.dbgeng.DebugClient.DebugStatus;
import ghidra.comm.util.BitmaskSet;
import ghidra.comm.util.BitmaskUniverse;
import ghidra.util.Msg;
/**
* A wrapper for {@code IDebugControl} and its newer variants.
*/
public interface DebugControl extends DebugControlReentrant {
public static final BitmaskSet<DebugOutputControl> SET_ALL_CLIENTS =
BitmaskSet.of(DebugOutputControl.ALL_CLIENTS);
public static final BitmaskSet<DebugExecute> SET_DEFAULT = BitmaskSet.of(DebugExecute.DEFAULT);
public static enum DebugOutputLevel implements BitmaskUniverse {
NORMAL(1 << 0), //
ERROR(1 << 1), //
WARNING(1 << 2), //
VERBOSE(1 << 3), //
PROMPT(1 << 4), //
PROMPT_REGISTERS(1 << 5), //
EXTENSION_WARNING(1 << 6), //
OUTPUT_DEBUGEE(1 << 7), //
OUTPUT_DEBUGEE_PROMPT(1 << 8), //
OUTPUT_SYMBOLS(1 << 9), //
OUTPUT_STATUS(1 << 10), //
;
private final int mask;
DebugOutputLevel(int mask) {
this.mask = mask;
}
@Override
public long getMask() {
return mask;
}
}
public static enum DebugOutputControl implements BitmaskUniverse {
THIS_CLIENT(0), //
ALL_CLIENTS(1), //
ALL_OTHER_CLIENTS(2), //
IGNORE(3), //
LOG_ONLY(4), //
SEND_MASK(7), //
NOT_LOGGED(1 << 3), //
OVERRIDE_MASK(1 << 4), //
DML(1 << 5), //
AMBIENT_DML(0xfffffffe), //
AMBIENT_TEXT(0xffffffff), //
AMBIENT(0xffffffff), //
;
private final int mask;
DebugOutputControl(int mask) {
this.mask = mask;
}
@Override
public long getMask() {
return mask;
}
}
public static enum DebugExecute implements BitmaskUniverse {
DEFAULT(0), //
ECHO(1 << 0), //
NOT_LOGGED(1 << 1), //
NO_REPEAT(1 << 2), //
;
private final int mask;
DebugExecute(int mask) {
this.mask = mask;
}
@Override
public long getMask() {
return mask;
}
}
public static enum DebugInterrupt {
ACTIVE, //
PASSIVE, //
EXIT, //
;
}
public static enum DebugFilterOrdinals {
DEBUG_FILTER_CREATE_THREAD, //
DEBUG_FILTER_EXIT_THREAD, //
DEBUG_FILTER_CREATE_PROCESS, //
DEBUG_FILTER_EXIT_PROCESS, //
DEBUG_FILTER_LOAD_MODULE, //
DEBUG_FILTER_UNLOAD_MODULE, //
DEBUG_FILTER_SYSTEM_ERROR, //
DEBUG_FILTER_INITIAL_BREAKPOINT, //
DEBUG_FILTER_INITIAL_MODULE_LOAD, //
DEBUG_FILTER_DEBUGGEE_OUTPUT, //
;
}
public static enum DebugFilterExecutionOption {
DEBUG_FILTER_BREAK(0, "Break"), //
DEBUG_FILTER_SECOND_CHANCE_BREAK(1, "Second-chance Break"), //
DEBUG_FILTER_OUTPUT(2, "Output-only"), //
DEBUG_FILTER_IGNORE(3, "Ignore"), //
DEBUG_FILTER_REMOVE(4, "Remove"), //
;
public static DebugFilterExecutionOption getByNumber(int val) {
for (DebugFilterExecutionOption m : DebugFilterExecutionOption.values()) {
if (m.val == val) {
return m;
}
}
return null;
}
DebugFilterExecutionOption(int val, String description) {
this.val = val;
this.description = description;
}
public final int val;
public final String description;
}
public static enum DebugFilterContinuationOption {
DEBUG_FILTER_GO_HANDLED(0, "Handled"), //
DEBUG_FILTER_GO_NOT_HANDLED(1, "Not Handled"), //
;
public static DebugFilterContinuationOption getByNumber(int val) {
for (DebugFilterContinuationOption m : DebugFilterContinuationOption.values()) {
if (m.val == val) {
return m;
}
}
return null;
}
DebugFilterContinuationOption(int val, String description) {
this.val = val;
this.description = description;
}
public final int val;
public final String description;
}
boolean getInterrupt();
int getInterruptTimeout();
void setInterruptTimeout(int seconds);
void print(BitmaskSet<DebugOutputLevel> levels, String message);
/**
* A shortcut for {@link #print(BitmaskSet, String)} that includes a newline.
*
* @param levels the log levels for the message
* @param message the message
*/
void println(BitmaskSet<DebugOutputLevel> levels, String message);
/**
* A shortcut for {@link #print(BitmaskSet, String)} that applies to a single level.
*
* @param level the log level for the message
* @param message the message
*/
default void print(DebugOutputLevel level, String message) {
print(BitmaskSet.of(level), message);
}
/**
* A shortcut for {@link #print(BitmaskSet, String)} that includes a newline and applies to a
* single level.
*
* @param level the log level for the message
* @param message the message
*/
default void println(DebugOutputLevel level, String message) {
println(BitmaskSet.of(level), message);
}
/**
* A shortcut for {@link #print(BitmaskSet, String)} at normal level.
*
* @param message the message
*/
default void out(String message) {
print(DebugOutputLevel.NORMAL, message);
}
/**
* A shortcut for {@link #println(BitmaskSet, String)} at normal level.
*
* @param message the message
*/
default void outln(String message) {
println(DebugOutputLevel.NORMAL, message);
}
/**
* A shortcut for {@link #print(BitmaskSet, String)} at warning level.
*
* @param message the message
*/
default void warn(String message) {
print(DebugOutputLevel.WARNING, message);
}
/**
* A shortcut for {@link #println(BitmaskSet, String)} at warning level.
*
* @param message the message
*/
default void warnln(String message) {
println(DebugOutputLevel.WARNING, message);
}
/**
* A shortcut for {@link #print(BitmaskSet, String)} at error level.
*
* @param message the message
*/
default void err(String message) {
print(DebugOutputLevel.ERROR, message);
}
/**
* A shortcut for {@link #println(BitmaskSet, String)} at error level.
*
* @param message the message
*/
default void errln(String message) {
println(DebugOutputLevel.ERROR, message);
}
/**
* A shortcut for {@link #print(BitmaskSet, String)} at verbose level.
*
* @param message the message
*/
default void verb(String message) {
print(DebugOutputLevel.VERBOSE, message);
}
/**
* A shortcut for {@link #println(BitmaskSet, String)} at verbose level.
*
* @param message the message
*/
default void verbln(String message) {
println(DebugOutputLevel.VERBOSE, message);
}
<T extends DebugValue> T evaluate(Class<T> desiredType, String expression);
void execute(BitmaskSet<DebugOutputControl> ctl, String str, BitmaskSet<DebugExecute> flags);
/**
* A shortcut for {@link #execute(BitmaskSet, String, BitmaskSet)} outputting to all clients
* with the default execution flag.
*
* @param str the command string
*/
default void execute(String str) {
execute(SET_ALL_CLIENTS, str, SET_DEFAULT);
}
void prompt(BitmaskSet<DebugOutputControl> ctl, String message);
String getPromptText();
void returnInput(String input);
DebugStatus getExecutionStatus();
void setExecutionStatus(DebugStatus status);
int getNumberBreakpoints();
DebugBreakpoint getBreakpointByIndex(int index);
/**
* Shortcut to retrieve all breakpoints for the current process.
*
* <p>
* Uses {@link #getNumberBreakpoints()} and {@link #getBreakpointByIndex(int)} to enumerate all
* breakpoints for the current process.
*
* @return the list of retrieved breakpoints.
*/
default List<DebugBreakpoint> getBreakpoints() {
int count = getNumberBreakpoints();
List<DebugBreakpoint> result = new ArrayList<>(count);
for (int i = 0; i < count; i++) {
try {
result.add(getBreakpointByIndex(i));
}
catch (COMException e) {
if (!COMUtilsExtra.isE_NOINTERFACE(e)) {
throw e;
}
Msg.trace(this, "Discarding private breakpoint at index " + i);
}
}
return result;
}
/**
* Get a breakpoint by ID
*
* According to the MSDN, though the IDs may be global, this method should only succeed for
* breakpoints belonging to the current process.
*
* @param id
* @return
*/
DebugBreakpoint getBreakpointById(int id);
/**
* Add a (resolved) breakpoint with the given type and desired id
*
* <p>
* This is equivalent, in part, to the {@code bp} command.
*
* @param type the type
* @param desiredId the desired id
* @return the breakpoint, disabled at offset 0
*/
DebugBreakpoint addBreakpoint(BreakType type, int desiredId);
/**
* Add a (resolved) breakpoint with the given type and any id
*
* <p>
* This is equivalent, in part, to the {@code bp} command.
*
* @param type the type
* @return the breakpoint, disable at offset 0
*/
DebugBreakpoint addBreakpoint(BreakType type);
/**
* Add an unresolved breakpoint with the given type and desired id
*
* <p>
* This is equivalent, in part, to the {@code bu} command. See the MSDN for a comparison of
* {@code bu} and {@code bp}.
*
* @param type the type
* @param desiredId the desired id
* @return the breakpoint, disabled at offset 0
*/
DebugBreakpoint addBreakpoint2(BreakType type, int desiredId);
/**
* Add an unresolved breakpoint with the given type and any id
*
* <p>
* This is equivalent, in part, to the {@code bu} command. See the MSDN for a comparison of
* {@code bu} and {@code bp}.
*
* @param desiredId the desired id
* @return the breakpoint, disabled at offset 0
*/
DebugBreakpoint addBreakpoint2(BreakType type);
void waitForEvent(int timeout);
DebugEventInformation getLastEventInformation();
DebugStackInformation getStackTrace(long frameOffset, long stackOffset, long instructionOffset);
/**
* Shortcut for {@link #waitForEvent(int)} with infinite timeout.
*/
default void waitForEvent() {
waitForEvent(WinBase.INFINITE);
}
int getActualProcessorType();
int getEffectiveProcessorType();
int getExecutingProcessorType();
int getDebuggeeType();
DebugFilterInformation getNumberEventFilters();
String getEventFilterText(int index, int size);
String getEventFilterCommand(int index, int size);
void setEventFilterCommand(int index, String text);
DebugSpecificFilterInformation getSpecificFilterParameters(int start, int count);
void setSpecificFilterParameters(int start, int count, DebugSpecificFilterInformation info);
String getSpecificFilterArgument(int index, int size);
void setSpecificFilterArgument(int index, String arg);
DebugExceptionFilterInformation getExceptionFilterParameters(int start, int[] codes, int count);
void setExceptionFilterParameters(int count, DebugExceptionFilterInformation info);
String getExceptionFilterSecondCommand(int index, int size);
void setExceptionFilterSecondCommand(int index, String cmd);
}

View file

@ -1,27 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.dbgeng.DebugControl.DebugInterrupt;
/**
* An interface containing the subset of {@link DebugControl} methods which are reentrant.
*
* All other methods should be called only by the thread which created the client.
*/
public interface DebugControlReentrant {
void setInterrupt(DebugInterrupt interrupt);
}

View file

@ -1,290 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.nio.ByteBuffer;
import java.util.*;
import com.sun.jna.platform.win32.COM.COMException;
import ghidra.comm.util.BitmaskSet;
import ghidra.comm.util.BitmaskUniverse;
import ghidra.util.Msg;
/**
* A wrapper for {@code IDebugDataSpaces} and its newer variants.
*/
public interface DebugDataSpaces {
public enum PageState {
COMMIT(0x1000), FREE(0x10000), RESERVE(0x2000);
private final int val;
private PageState(int val) {
this.val = val;
}
public static PageState byValue(int val) {
for (PageState state : values()) {
if (state.val == val) {
return state;
}
}
Msg.warn(PageState.class, "No such value: 0x" + Integer.toHexString(val));
return null;
}
}
public enum PageProtection implements BitmaskUniverse {
NOACCESS(1 << 0, false, false, false), //
READONLY(1 << 1, true, false, false), //
READWRITE(1 << 2, true, true, false), //
WRITE_COPY(1 << 3, true, true, false), // Becomes READWRITE after copy
EXECUTE(1 << 4, false, false, true), //
EXECUTE_READ(1 << 5, true, false, true), //
EXECUTE_READWRITE(1 << 6, true, true, true), //
EXECUTE_WRITECOPY(1 << 7, true, true, true), //
//
GUARD(1 << 8, false, false, false), //
NOCACHE(1 << 9, false, false, false), //
WRITECOMBINE(1 << 10, false, false, false), //
;
private PageProtection(int mask, boolean isRead, boolean isWrite, boolean isExecute) {
this.mask = mask;
this.isRead = isRead;
this.isWrite = isWrite;
this.isExecute = isExecute;
}
final int mask;
final boolean isRead;
final boolean isWrite;
final boolean isExecute;
@Override
public long getMask() {
return mask;
}
public boolean isRead() {
return isRead;
}
public boolean isWrite() {
return isWrite;
}
public boolean isExecute() {
return isExecute;
}
}
public enum PageType {
NONE(0), //
IMAGE(0x1000000), //
MAPPED(0x40000), //
PRIVATE(0x20000), //
;
private final int val;
private PageType(int val) {
this.val = val;
}
public static PageType byValue(int val) {
for (PageType type : values()) {
if (type.val == val) {
return type;
}
}
Msg.warn(PageType.class, "No such value: 0x" + Integer.toHexString(val));
return null;
}
}
public static class DebugMemoryBasicInformation {
public final long baseAddress;
public final long allocationBase;
public final Set<PageProtection> allocationProtect;
public final long regionSize;
public final PageState state;
public final Set<PageProtection> protect;
public final PageType type;
public DebugMemoryBasicInformation(long baseAddress, long allocationBase,
BitmaskSet<PageProtection> allocationProtect, long regionSize, PageState state,
BitmaskSet<PageProtection> protect, PageType type) {
this.baseAddress = baseAddress;
this.allocationBase = allocationBase;
this.allocationProtect = Collections.unmodifiableSet(allocationProtect);
this.regionSize = regionSize;
this.state = state;
this.protect = Collections.unmodifiableSet(protect);
this.type = type;
}
@Override
public String toString() {
return "<DebugMemoryBasicInformation:\n" + //
" baseAddress=" + Long.toHexString(baseAddress) + "h,\n" + //
" allocationBase=" + Long.toHexString(allocationBase) + "h,\n" + //
" allocationProtect=" + allocationProtect + ",\n" + //
" regionSize=" + Long.toHexString(regionSize) + "h,\n" + //
" state=" + state + ",\n" + //
" protect=" + protect + ",\n" + //
" type=" + type + "\n" + //
">";
}
@Override
public int hashCode() {
return Objects.hash(baseAddress, allocationBase, allocationProtect, regionSize, state,
protect, type);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof DebugMemoryBasicInformation)) {
return false;
}
DebugMemoryBasicInformation that = (DebugMemoryBasicInformation) obj;
if (this.baseAddress != that.baseAddress) {
return false;
}
if (this.allocationBase != that.allocationBase) {
return false;
}
if (!this.allocationProtect.equals(that.allocationProtect)) {
return false;
}
if (this.regionSize != that.regionSize) {
return false;
}
if (this.state != that.state) {
return false;
}
if (!this.protect.equals(that.protect)) {
return false;
}
if (this.type != that.type) {
return false;
}
return true;
}
}
int readVirtual(long offset, ByteBuffer into, int len);
int writeVirtual(long offset, ByteBuffer from, int len);
int readVirtualUncached(long offset, ByteBuffer into, int len);
int writeVirtualUncached(long offset, ByteBuffer from, int len);
int readPhysical(long offset, ByteBuffer into, int len);
int writePhysical(long offset, ByteBuffer from, int len);
int readControl(int processor, long offset, ByteBuffer into, int len);
int writeControl(int processor, long offset, ByteBuffer from, int len);
int readBusData(int busDataType, int busNumber, int slotNumber, long offset, ByteBuffer into,
int len);
int writeBusData(int busDataType, int busNumber, int slotNumber, long offset, ByteBuffer from,
int len);
int readIo(int interfaceType, int busNumber, int addressSpace, long offset, ByteBuffer into,
int len);
int writeIo(int interfaceType, int busNumber, int addressSpace, long offset, ByteBuffer from,
int len);
long readMsr(int msr);
void writeMsr(int msr, long value);
int readDebuggerData(int offset, ByteBuffer into, int len);
DebugMemoryBasicInformation queryVirtual(long offset);
long virtualToPhysical(long offset);
/**
* A shortcut for iterating over virtual memory regions.
*
* This operates by calling {@link #queryVirtual(long)} to get each next entry, starting at an
* offset of -start-, adding the size of the returned region to determine the offset for the
* next call.
*
* @param start the starting offset
* @return an iterator over virtual memory regions after the given start
*/
default Iterable<DebugMemoryBasicInformation> iterateVirtual(long start) {
return new Iterable<DebugMemoryBasicInformation>() {
@Override
public Iterator<DebugMemoryBasicInformation> iterator() {
return new Iterator<DebugMemoryBasicInformation>() {
private long last = start;
private long offset = start;
private DebugMemoryBasicInformation next = doGetNext();
private DebugMemoryBasicInformation getNext() {
if (Long.compareUnsigned(last, offset) < 0) {
return doGetNext();
}
return null;
}
private DebugMemoryBasicInformation doGetNext() {
try {
DebugMemoryBasicInformation info = queryVirtual(offset);
last = offset;
if (info != null) {
offset += info.regionSize;
}
return info;
}
catch (COMException e) {
if (!COMUtilsExtra.isE_NOINTERFACE(e)) {
throw e;
}
return null;
}
}
@Override
public boolean hasNext() {
return next != null;
}
@Override
public DebugMemoryBasicInformation next() {
DebugMemoryBasicInformation ret = next;
next = getNext();
if (ret.equals(next)) {
next = null;
}
return ret;
}
};
}
};
}
}

View file

@ -1,116 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.lang.annotation.*;
import agent.dbgeng.dbgeng.DebugClient.*;
import ghidra.comm.util.BitmaskSet;
import ghidra.comm.util.BitmaskUniverse;
/**
* The interface for receiving event callbacks via {@code IDebugEventCallbacks} or a newer variant.
*
* Note: The wrapper implementation will select the appropriate native interface version.
*
* Note: Even though {@link #changeDebuggeeState(BitmaskSet, long)},
* {@link #changeEngineState(BitmaskSet, long)} and {@link #changeSymbolState(BitmaskSet, long)}
* purport to return a {@link DebugStatus}, the returned value is ignored by {@code dbgeng.dll}.
*/
public interface DebugEventCallbacks {
public static enum DebugEvent implements BitmaskUniverse {
BREAKPOINT(1 << 0), //
EXCEPTION(1 << 1), //
CREATE_THREAD(1 << 2), //
EXIT_THREAD(1 << 3), //
CREATE_PROCESS(1 << 4), //
EXIT_PROCESS(1 << 5), //
LOAD_MODULE(1 << 6), //
UNLOAD_MODULE(1 << 7), //
SYSTEM_ERROR(1 << 8), //
SESSION_STATUS(1 << 9), //
CHANGE_DEBUGEE_STATE(1 << 10), //
CHANGE_ENGINE_STATE(1 << 11), //
CHANGE_SYMBOL_STATE(1 << 12), //
;
private DebugEvent(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
/**
* An annotation for marking each callback with its interest flag.
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
static @interface ForInterest {
/**
* The flag corresponding to the annotated callback method
*
* @return the flag
*/
DebugEvent value();
}
BitmaskSet<DebugEvent> getInterestMask();
@ForInterest(DebugEvent.BREAKPOINT)
DebugStatus breakpoint(DebugBreakpoint bp);
@ForInterest(DebugEvent.EXCEPTION)
DebugStatus exception(DebugExceptionRecord64 exception, boolean firstChance);
@ForInterest(DebugEvent.CREATE_THREAD)
DebugStatus createThread(DebugThreadInfo debugThreadInfo);
@ForInterest(DebugEvent.EXIT_THREAD)
DebugStatus exitThread(int exitCode);
@ForInterest(DebugEvent.CREATE_PROCESS)
DebugStatus createProcess(DebugProcessInfo debugProcessInfo);
@ForInterest(DebugEvent.EXIT_PROCESS)
DebugStatus exitProcess(int exitCode);
@ForInterest(DebugEvent.LOAD_MODULE)
DebugStatus loadModule(DebugModuleInfo debugModuleInfo);
@ForInterest(DebugEvent.UNLOAD_MODULE)
DebugStatus unloadModule(String imageBaseName, long baseOffset);
@ForInterest(DebugEvent.SYSTEM_ERROR)
DebugStatus systemError(int error, int level);
@ForInterest(DebugEvent.SESSION_STATUS)
DebugStatus sessionStatus(SessionStatus status);
@ForInterest(DebugEvent.CHANGE_DEBUGEE_STATE)
DebugStatus changeDebuggeeState(BitmaskSet<ChangeDebuggeeState> flags, long argument);
@ForInterest(DebugEvent.CHANGE_ENGINE_STATE)
DebugStatus changeEngineState(BitmaskSet<ChangeEngineState> flags, long argument);
@ForInterest(DebugEvent.CHANGE_SYMBOL_STATE)
DebugStatus changeSymbolState(BitmaskSet<ChangeSymbolState> flags, long argument);
}

View file

@ -1,70 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.jna.dbgeng.WinNTExtra;
public class DebugEventInformation {
private int type;
private DebugProcessId pid;
private DebugThreadId tid;
private DebugSessionId sid;
private int executingProcessorType = WinNTExtra.Machine.IMAGE_FILE_MACHINE_AMD64.val;
public DebugEventInformation(int type, int pid, int tid) {
this.type = type;
this.pid = new DebugProcessRecord(pid);
this.tid = new DebugThreadRecord(tid);
}
public int getType() {
return type;
}
public DebugSessionId getSessionId() {
return sid;
}
public DebugProcessId getProcessId() {
return pid;
}
public DebugThreadId getThreadId() {
return tid;
}
public void setThread(DebugThreadId tid) {
this.tid = tid;
}
public void setProcess(DebugProcessId pid) {
this.pid = pid;
}
public void setSession(DebugSessionId sid) {
this.sid = sid;
}
public int getExecutingProcessorType() {
return executingProcessorType;
}
public void setExecutingProcessorType(int execType) {
this.executingProcessorType = execType;
}
}

View file

@ -1,42 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.jna.dbgeng.DbgEngNative.DEBUG_EXCEPTION_FILTER_PARAMETERS;
public class DebugExceptionFilterInformation {
private int nParams;
private DEBUG_EXCEPTION_FILTER_PARAMETERS[] parameters;
public DebugExceptionFilterInformation(int nParams,
DEBUG_EXCEPTION_FILTER_PARAMETERS[] parameters) {
this.nParams = nParams;
this.parameters = parameters;
}
public int getNumberOfParameters() {
return nParams;
}
public DEBUG_EXCEPTION_FILTER_PARAMETERS getParameter(int paramNumber) {
return parameters[paramNumber];
}
public DEBUG_EXCEPTION_FILTER_PARAMETERS[] getParameters() {
return parameters;
}
}

View file

@ -1,41 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.util.Collections;
import java.util.List;
/**
* Data copied from a {@code EXCEPTION_RECORD64} as defined in {@code winnt.h}.
*
* TODO: Some enums, flags, etc., to help interpret some of the fields.
*/
public class DebugExceptionRecord64 {
public final int code; // TODO: How to interpret
public final int flags; // TODO: How to interpret
public final long record; // TODO: How to interpret
public final long address;
public final List<Long> information;
public DebugExceptionRecord64(int code, int flags, long record, long address,
List<Long> information) {
this.code = code;
this.flags = flags;
this.record = record;
this.address = address;
this.information = Collections.unmodifiableList(information);
}
}

View file

@ -1,42 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public class DebugFilterInformation {
private int nEvents;
private int nSpecificExceptions;
private int nArbitraryExceptions;
public DebugFilterInformation(int nEvents, int nSpecificExceptions, int nArbitraryExceptions) {
this.nEvents = nEvents;
this.nSpecificExceptions = nSpecificExceptions;
this.nArbitraryExceptions = nArbitraryExceptions;
}
public int getNumberEvents() {
return nEvents;
}
public int getNumberSpecificExceptions() {
return nSpecificExceptions;
}
public int getNumberArbitraryExceptions() {
return nArbitraryExceptions;
}
}

View file

@ -1,31 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* The interface for receiving input callbacks via {@code IDebugInputCallbacks} or a newer variant.
*
* Note: The wrapper implementation will select the appropriate native interface version.
*/
@FunctionalInterface
public interface DebugInputCallbacks {
public void startInput(long bufferSize);
default void endInput() {
// Optional implementation
}
}

View file

@ -1,47 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Handle to a module (program or library image).
*/
public interface DebugModule {
public enum DebugModuleName {
IMAGE, MODULE, LOADED_IMAGE, SYMBOL_FILE, MAPPED_IMAGE;
}
/**
* Get a name for the module.
*
* @param which identifies which name
* @return the requested name, if available
*/
String getName(DebugModuleName which);
/**
* Get the index assigned to this module.
*
* @return the index
*/
int getIndex();
/**
* Get the base address where this module is loaded, if applicable.
*
* @return the base address
*/
long getBase();
}

View file

@ -1,64 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Information about a module (program or library image).
*
* The fields correspond to the parameters taken by {@code LoadModule} of
* {@code IDebugEventCallbacks}. They also appear as a subset of parameters taken by
* {@code CreateProcess} of {@code IDebugEventCallbacks}.
*/
public class DebugModuleInfo {
public final long imageFileHandle;
public final long baseOffset;
public final int moduleSize;
public final int checkSum;
public final int timeDateStamp;
private String moduleName;
private String imageName;
public DebugModuleInfo(long imageFileHandle, long baseOffset, int moduleSize, String moduleName,
String imageName, int checkSum, int timeDateStamp) {
this.imageFileHandle = imageFileHandle;
this.baseOffset = baseOffset;
this.moduleSize = moduleSize;
this.setModuleName(moduleName);
this.setImageName(imageName);
this.checkSum = checkSum;
this.timeDateStamp = timeDateStamp; // TODO: Convert to DateTime?
}
public String toString() {
return Long.toHexString(baseOffset);
}
public String getModuleName() {
return moduleName;
}
public void setModuleName(String moduleName) {
this.moduleName = moduleName;
}
public String getImageName() {
return imageName;
}
public void setImageName(String imageName) {
this.imageName = imageName;
}
}

View file

@ -1,32 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.dbgeng.DebugControl.DebugOutputLevel;
/**
* The interface for receiving output callbacks via {@code IDebugOutputCallbacks} or a newer
* variant.
*
* Note: The wrapper implementation will select the apprirate native interface version.
*
* TODO: Change {@link #output(int, String)} {@code mask} parameter to use {@link DebugOutputLevel}
* flags.
*/
@FunctionalInterface
public interface DebugOutputCallbacks {
void output(int mask, String text);
}

View file

@ -1,38 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* The <em>engine</em> ID assigned to a debugged process.
*
* Note: This is not the same as the "PID." {@code dbgeng.dll} calls that the <em>system</em> ID of
* the process.
*
* This is essentially just a boxed integer, but having an explicit data type prevents confusion
* with other integral values. In particular, this prevents confusion of engine PIDs with system
* PIDs.
*/
public interface DebugProcessId extends Comparable<DebugProcessId> {
public String id();
public long value();
public boolean isSystem();
@Override
public default int compareTo(DebugProcessId that) {
return this.id().compareTo(that.id());
}
}

View file

@ -1,36 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Information about a process.
*
* The fields correspond to parameters taken by {@code CreateProcess} of
* {@code IDebugEventCallbacks}. Note that parameters common to other callbacks have been factored
* into types aggregated here.
*/
public class DebugProcessInfo {
public final long handle;
public final DebugModuleInfo moduleInfo;
public final DebugThreadInfo initialThreadInfo;
public DebugProcessInfo(long handle, DebugModuleInfo moduleInfo,
DebugThreadInfo initialThreadInfo) {
this.handle = handle;
this.moduleInfo = moduleInfo;
this.initialThreadInfo = initialThreadInfo;
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public record DebugProcessRecord(long value) implements DebugProcessId {
@Override
public boolean isSystem() {
return false;
}
@Override
public String id() {
return Long.toHexString(value);
}
@Override
public String toString() {
return "<dbgeng.dll Engine PID " + Long.toHexString(value) + ">";
}
}

View file

@ -1,158 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.util.*;
import agent.dbgeng.dbgeng.DebugValue.DebugValueType;
import ghidra.comm.util.BitmaskSet;
import ghidra.comm.util.BitmaskUniverse;
/**
* A wrapper for {@code IDebugRegisters} and its newer variants.
*/
public interface DebugRegisters {
public static enum DebugRegisterSource {
DEBUG_REGSRC_DEBUGGEE, //
DEBUG_REGSRC_EXPLICIT, //
DEBUG_REGSRC_FRAME, //
;
}
public static enum DebugRegisterFlags implements BitmaskUniverse {
SUB_REGISTER(1 << 0), //
;
private DebugRegisterFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public static class DebugRegisterDescription {
public final String name;
public final int index;
public final DebugValueType type;
public final Set<DebugRegisterFlags> flags;
public final int subregMaster;
public final int subregLengthBits;
public final long subregMask;
public final int subregShift;
public DebugRegisterDescription(String name, int index, DebugValueType type,
BitmaskSet<DebugRegisterFlags> flags, int subregMaster, int subregLengthBits,
long subregMask, int subregShift) {
this.name = name;
this.index = index;
this.type = type;
this.flags = Collections.unmodifiableSet(flags);
this.subregMaster = subregMaster;
this.subregLengthBits = subregLengthBits;
this.subregMask = subregMask;
this.subregShift = subregShift;
}
@Override
public String toString() {
return String.format(
"<%s: name='%s' index=%d type=%s flags=%s subregMaster=%d subregLengthBits=%d" +
" subregMask=%x subregShift=%d>",
getClass().getSimpleName(), name, index, type, flags, subregMaster,
subregLengthBits, subregMask, subregShift);
}
}
int getNumberRegisters();
DebugRegisterDescription getDescription(int registerNumber);
/**
* A shortcut to get all register descriptions for the current process.
*
* Uses {@link #getNumberRegisters()} and {@link #getDescription(int)} to retrieve all
* descriptions for the current process.
*
* @return the list of register descriptions
*/
default Set<DebugRegisterDescription> getAllDescriptions() {
Set<DebugRegisterDescription> result = new LinkedHashSet<>();
int count = getNumberRegisters();
for (int i = 0; i < count; i++) {
result.add(getDescription(i));
}
return result;
}
int getIndexByName(String name);
/**
* A shortcut to get many register indices in one call.
*
* Uses {@link #getIndexByName(String)}.
*
* @param names the names whose indices to get
* @return the indices in respective order to the given names
*/
default int[] getIndicesByNames(String... names) {
int[] indices = new int[names.length];
for (int i = 0; i < names.length; i++) {
indices[i] = getIndexByName(names[i]);
}
return indices;
}
DebugValue getValue(int index);
Map<Integer, DebugValue> getValues(DebugRegisterSource source, Collection<Integer> indices);
/**
* A shortcut to get a register value by name.
*
* Uses {@link #getIndexByName(String)} followed by {@link #getValue(int)}.
*
* @param name the name of the register
* @return the value
*/
default DebugValue getValueByName(String name) {
int indexByName = getIndexByName(name);
if (indexByName >= 0) {
return getValue(indexByName);
}
return null;
}
void setValue(int index, DebugValue value);
void setValues(DebugRegisterSource source, Map<Integer, DebugValue> values);
/**
* A shortcut to set a register value by name.
*
* Uses {@link #getIndexByName(String)} followed by {@link #setValue(int, DebugValue)}.
*
* @param name the name of the register
* @param value the desired value
*/
default void setValueByName(String name, DebugValue value) {
setValue(getIndexByName(name), value);
}
}

View file

@ -1,123 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.dbgeng.DebugRunningProcess.Description.ProcessDescriptionFlags;
import ghidra.comm.util.BitmaskUniverse;
/**
* Information about a running process, not necessarily a debugged process.
*/
public interface DebugRunningProcess {
/**
* Description of a running process
*/
public static class Description {
public static enum ProcessDescriptionFlags implements BitmaskUniverse {
NO_PATHS(1 << 0), //
NO_SERVICES(1 << 1), //
NO_MTS_PACKAGES(1 << 2), //
NO_COMMAND_LINE(1 << 3), //
NO_SESSION_ID(1 << 4), //
NO_USER_NAME(1 << 5), //
;
ProcessDescriptionFlags(int mask) {
this.mask = mask;
}
private final int mask;
@Override
public long getMask() {
return mask;
}
}
public Description(int systemId, String exeName, String description) {
this.systemId = systemId;
this.exeName = exeName;
this.description = description;
}
private final int systemId;
private final String exeName;
private final String description;
/**
* The system ID (PID) for the process.
*
* @return the PID
*/
public int getSystemId() {
return systemId;
}
/**
* The name of the executable defining the process
*
* @return the name
*/
public String getExecutableName() {
return exeName;
}
/**
* A textual description of the process.
*
* @return the description
*/
public String getDescription() {
return description;
}
@Override
public String toString() {
return String.format("PID:%d, EXE:%s, Description:%s", systemId, exeName, description);
}
}
/**
* The system ID (PID) for the process.
*
* @return the PID
*/
int getSystemId();
/**
* Get the "full" description of the process.
*
* @param flags indicate which information to include in the description
* @return the description
*/
Description getFullDescription(ProcessDescriptionFlags... flags);
/**
* The name of the executable defining the process.
*
* @param flags indicate which information to include in the description
* @return the name
*/
String getExecutableName(ProcessDescriptionFlags... flags);
/**
* A textual description of the process.
*
* @param flags indicate which information to include in the description
* @return the description
*/
String getDescription(ProcessDescriptionFlags... flags);
}

View file

@ -1,58 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* The ID of a debug server.
*
* Each server to which a client is connected is assigned a server ID. The local server, to which
* every client is connected by default, has the ID 0. This is essentially just a boxed integer, but
* having an explicit data type prevents confusion with other integral values.
*/
public class DebugServerId implements Comparable<DebugServerId> {
public final long id;
public DebugServerId(long id) {
this.id = id;
}
@Override
public int hashCode() {
return Long.hashCode(id);
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof DebugServerId)) {
return false;
}
DebugServerId that = (DebugServerId) obj;
if (this.id != that.id) {
return false;
}
return true;
}
@Override
public int compareTo(DebugServerId that) {
return Long.compare(this.id, that.id);
}
@Override
public String toString() {
return "<dbgeng.dll Server ID " + id + ">";
}
}

View file

@ -1,38 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* The <em>engine</em> ID assigned to a debugged process.
*
* Note: This is not the same as the "PID." {@code dbgeng.dll} calls that the <em>system</em> ID of
* the process.
*
* This is essentially just a boxed integer, but having an explicit data type prevents confusion
* with other integral values. In particular, this prevents confusion of engine PIDs with system
* PIDs.
*/
public interface DebugSessionId extends Comparable<DebugSessionId> {
public String id();
public long value();
public boolean isSystem();
@Override
public default int compareTo(DebugSessionId that) {
return this.id().compareTo(that.id());
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public record DebugSessionRecord(long value) implements DebugSessionId {
@Override
public boolean isSystem() {
return false;
}
@Override
public String id() {
return Long.toHexString(value);
}
@Override
public String toString() {
return "<dbgeng.dll Engine SYSID " + Long.toHexString(value) + ">";
}
}

View file

@ -1,42 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.jna.dbgeng.DbgEngNative.DEBUG_SPECIFIC_FILTER_PARAMETERS;
public class DebugSpecificFilterInformation {
private int nParams;
private DEBUG_SPECIFIC_FILTER_PARAMETERS[] parameters;
public DebugSpecificFilterInformation(int nParams,
DEBUG_SPECIFIC_FILTER_PARAMETERS[] parameters) {
this.nParams = nParams;
this.parameters = parameters;
}
public int getNumberOfParameters() {
return nParams;
}
public DEBUG_SPECIFIC_FILTER_PARAMETERS getParameter(int paramNumber) {
return parameters[paramNumber];
}
public DEBUG_SPECIFIC_FILTER_PARAMETERS[] getParameters() {
return parameters;
}
}

View file

@ -1,37 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import agent.dbgeng.jna.dbgeng.DbgEngNative.DEBUG_STACK_FRAME;
public class DebugStackInformation {
private int nFrames;
private DEBUG_STACK_FRAME[] stackFrames;
public DebugStackInformation(int nFrames, DEBUG_STACK_FRAME[] stackFrames) {
this.nFrames = nFrames;
this.stackFrames = stackFrames;
}
public int getNumberOfFrames() {
return nFrames;
}
public DEBUG_STACK_FRAME getFrame(int frameNumber) {
return stackFrames[frameNumber];
}
}

View file

@ -1,56 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Data copied from a {@code DEBUG_SYMBOL_ENTRY} as defined in {@code dbgeng.h}.
*
* TODO: Some enums, flags, etc., to help interpret some of the fields.
*/
public class DebugSymbolEntry {
public final long moduleBase;
public final long offset;
public final long symbolId;
public final long size;
public final int flags;
public final int typeId;
public final String name;
public final int tag;
public DebugSymbolEntry(long moduleBase, long offset, long symbolId, long size, int flags,
int typeId, String name, int tag) {
this.moduleBase = moduleBase;
this.offset = offset;
this.symbolId = symbolId;
this.size = size;
this.flags = flags;
this.typeId = typeId;
this.name = name;
this.tag = tag;
}
@Override
public String toString() {
return String.format("<DebugSymbolEntry %016x:%016x\n" + //
" offset=%016xh,\n" + //
" size=%xh,\n" + //
" flags=%xh,\n" + //
" typeId=%xh,\n" + //
" name='%s',\n" + //
" tag=%xh>", //
moduleBase, symbolId, offset, size, flags, typeId, name, tag);
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Symbol identifier, consisting of module ID and symbol index.
*/
public class DebugSymbolId {
public final long moduleBase;
public final long symbolIndex;
public DebugSymbolId(long moduleBase, long symbolIndex) {
this.moduleBase = moduleBase;
this.symbolIndex = symbolIndex;
}
@Override
public String toString() {
return String.format("<DebugSymbolId %016x:%016x>", moduleBase, symbolIndex);
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Symbol name, consisting of textual name and offset.
*/
public class DebugSymbolName {
public final String name;
public final long offset;
public DebugSymbolName(String name, long offset) {
this.name = name;
this.offset = offset;
}
@Override
public String toString() {
return String.format("<%016x: %s>", offset, name);
}
}

View file

@ -1,85 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.util.Iterator;
import java.util.List;
/**
* A wrapper for {@code IDebugSymbols} and its newer variants.
*/
public interface DebugSymbols {
int getNumberLoadedModules();
int getNumberUnloadedModules();
DebugModule getModuleByIndex(int index);
DebugModule getModuleByModuleName(String name, int startIndex);
DebugModule getModuleByOffset(long offset, int startIndex);
DebugModuleInfo getModuleParameters(int count, int startIndex);
/**
* A shortcut for iterating over all loaded modules, lazily.
*
* @param startIndex the module index to start at
* @return an iterator over modules starting at the given index
*/
default Iterable<DebugModule> iterateModules(int startIndex) {
int count = getNumberLoadedModules(); // TODO: What about unloaded?
return new Iterable<DebugModule>() {
@Override
public Iterator<DebugModule> iterator() {
return new Iterator<DebugModule>() {
int cur = startIndex;
@Override
public boolean hasNext() {
return cur < count;
}
@Override
public DebugModule next() {
DebugModule ret = getModuleByIndex(cur);
cur++;
return ret;
}
};
}
};
}
Iterable<DebugSymbolName> iterateSymbolMatches(String pattern);
List<DebugSymbolId> getSymbolIdsByName(String pattern);
DebugSymbolEntry getSymbolEntry(DebugSymbolId id);
String getSymbolPath();
void setSymbolPath(String path);
int getSymbolOptions();
void setSymbolOptions(int options);
public int getCurrentScopeFrameIndex();
public void setCurrentScopeFrameIndex(int index);
}

View file

@ -1,116 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.util.ArrayList;
import java.util.List;
/**
* A wrapper for {@code IDebugSystemObjects} and its newer variants.
*/
public interface DebugSystemObjects {
DebugThreadId getEventThread();
DebugProcessId getEventProcess();
DebugSessionId getEventSystem();
DebugThreadId getCurrentThreadId();
void setCurrentThreadId(DebugThreadId id);
DebugProcessId getCurrentProcessId();
void setCurrentProcessId(DebugProcessId id);
DebugSessionId getCurrentSystemId();
void setCurrentSystemId(DebugSessionId id);
int getNumberThreads();
int getTotalNumberThreads(); // TODO: LargestProcess?
/**
* Get the threads IDs by index from the current process
*
* @param start the starting index
* @param count the number of threads
* @return the list of thread IDs
*/
List<DebugThreadId> getThreads(int start, int count);
/**
* Get all thread IDs in the current process
*
* @return the list of thread IDs
*/
default List<DebugThreadId> getThreads() {
return getThreads(0, getNumberThreads());
}
DebugThreadId getThreadIdByHandle(long handle);
DebugProcessId getProcessIdByHandle(long handle);
int getNumberSystems();
List<DebugSessionId> getSystems(int start, int count);
default List<DebugSessionId> getSessions() {
int numberSystems = getNumberSystems();
if (numberSystems < 0) {
return new ArrayList<DebugSessionId>();
}
return getSystems(0, numberSystems);
}
int getNumberProcesses();
List<DebugProcessId> getProcesses(int start, int count);
default List<DebugProcessId> getProcesses() {
int numberProcesses = getNumberProcesses();
if (numberProcesses < 0) {
return new ArrayList<DebugProcessId>();
}
return getProcesses(0, numberProcesses);
}
int getCurrentThreadSystemId();
int getCurrentProcessSystemId();
DebugThreadId getThreadIdBySystemId(int systemId);
DebugProcessId getProcessIdBySystemId(int systemId);
long getCurrentThreadDataOffset();
long getCurrentProcessDataOffset();
long getImplicitThreadDataOffset();
long getImplicitProcessDataOffset();
void setImplicitThreadDataOffset(long systemOffset);
void setImplicitProcessDataOffset(long systemOffset);
String getCurrentProcessExecutableName();
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public record DebugSystemProcessRecord(long value) implements DebugProcessId {
@Override
public boolean isSystem() {
return true;
}
@Override
public String id() {
return "SYS"+Long.toHexString(value);
}
@Override
public String toString() {
return "<dbgeng.dll System PID " + Long.toHexString(value) + ">";
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public record DebugSystemSessionRecord(long value) implements DebugSessionId {
@Override
public boolean isSystem() {
return true;
}
@Override
public String id() {
return "SYS"+Long.toHexString(value);
}
@Override
public String toString() {
return "<dbgeng.dll System SYSID " + Long.toHexString(value) + ">";
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public record DebugSystemThreadRecord(long value) implements DebugThreadId {
@Override
public boolean isSystem() {
return true;
}
@Override
public String id() {
return "PCR"+Long.toHexString(value);
}
@Override
public String toString() {
return "<dbgeng.dll System TID " + Long.toHexString(value) + ">";
}
}

View file

@ -1,39 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* The <em>engine</em> ID assigned to a debugged thread.
*
* Note: This is not the same as the "TID." {@code dbgeng.dll} calls that the <em>system</em> ID of
* the thread.
*
* This is essentially just a boxed integer, but having an explicit data type prevents confusion
* with other integral values. In particular, this prevents confusion of engine TIDs with system
* TIDs.
*/
public interface DebugThreadId extends Comparable<DebugThreadId> {
public String id();
public long value();
public boolean isSystem();
@Override
public default int compareTo(DebugThreadId that) {
return this.id().compareTo(that.id());
}
}

View file

@ -1,43 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
/**
* Information about a thread.
*
* <p>
* The fields correspond to parameters taken by {@code CreateThread} of
* {@code IDebugEventCallbacks}. They also appear as a subset of parameters taken by
* {@code CreateProcess} of {@code IDebugEventCallbacks}.
*/
public class DebugThreadInfo {
public final long handle;
public final long dataOffset;
public final long startOffset;
public DebugThreadInfo(long handle, long dataOffset, long startOffset) {
this.handle = handle;
this.dataOffset = dataOffset;
this.startOffset = startOffset;
}
@Override
public String toString() {
return String.format("<%s@%08x handle=0x%04x,dataOffset=0x%08x,startOffset=0x%08x>",
getClass().getSimpleName(), System.identityHashCode(this),
handle, dataOffset, startOffset);
}
}

View file

@ -1,34 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
public record DebugThreadRecord(long value) implements DebugThreadId {
@Override
public boolean isSystem() {
return false;
}
@Override
public String id() {
return Long.toHexString(value);
}
@Override
public String toString() {
return "<dbgeng.dll Engine TID " + Long.toHexString(value) + ">";
}
}

View file

@ -1,457 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng;
import java.lang.annotation.*;
import java.lang.reflect.InvocationTargetException;
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.util.Arrays;
import agent.dbgeng.dbgeng.DebugValue.DebugValueType;
import agent.dbgeng.dbgeng.DebugValue.ForDebugValueType;
import ghidra.util.NumericUtilities;
/**
* Data copied from a {@code DEBUG_VALUE} as defined in {dbgeng.h}.
*/
@ForDebugValueType(DebugValueType.INVALID)
public interface DebugValue {
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.TYPE)
public static @interface ForDebugValueType {
DebugValueType value();
}
public static enum DebugValueType {
INVALID(0), //
INT8(Byte.SIZE), //
INT16(Short.SIZE), //
INT32(Integer.SIZE), //
INT64(Long.SIZE), //
FLOAT32(Float.SIZE), //
FLOAT64(Double.SIZE), //
FLOAT80(80), //
FLOAT82(82), //
FLOAT128(128), //
VECTOR64(64), //
VECTOR128(128), //
;
private static final Class<? extends DebugValue>[] CLASSES;
static {
@SuppressWarnings("unchecked")
Class<? extends DebugValue>[] supressed = new Class[DebugValueType.values().length];
CLASSES = supressed;
for (Class<?> cls : DebugValue.class.getDeclaredClasses()) {
if (!DebugValue.class.isAssignableFrom(cls)) {
continue;
}
Class<? extends DebugValue> dvCls = cls.asSubclass(DebugValue.class);
DebugValueType type = getDebugValueTypeForClass(dvCls);
CLASSES[type.ordinal()] = dvCls;
}
}
public static DebugValueType getDebugValueTypeForClass(Class<? extends DebugValue> cls) {
ForDebugValueType annot = cls.getAnnotation(ForDebugValueType.class);
if (annot == null) {
throw new AssertionError(
"INTERNAL: Missing ForDebugValueType annotation on " + cls);
}
return annot.value();
}
public final int bitLength;
public final int byteLength;
private DebugValueType(int bitLength) {
this.bitLength = bitLength;
this.byteLength = (bitLength + 7) / 8;
}
public Class<? extends DebugValue> getDebugValueClass() {
return CLASSES[ordinal()];
}
public DebugValue decodeBytes(byte[] bytes) throws IllegalArgumentException {
try {
return CLASSES[ordinal()].getConstructor(byte[].class).newInstance(bytes);
}
catch (InstantiationException | IllegalAccessException | IllegalArgumentException
| NoSuchMethodException | SecurityException e) {
throw new AssertionError(e);
}
catch (InvocationTargetException e) {
if (e.getCause() instanceof IllegalArgumentException) {
throw (IllegalArgumentException) e.getCause();
}
throw new AssertionError(e);
}
}
}
@ForDebugValueType(DebugValueType.INT8)
public static class DebugInt8Value implements DebugValue {
private final byte value;
public DebugInt8Value(byte value) {
this.value = value;
}
public DebugInt8Value(byte[] bytes) {
if (bytes.length != 1) {
throw new IllegalArgumentException("Must have exactly 1 byte");
}
this.value = bytes[0];
}
public byte byteValue() {
return value;
}
@Override
public byte[] encodeAsBytes() {
return new byte[] { value };
}
@Override
public String toString() {
return "byte " + Integer.toHexString(value) + "h";
}
}
@ForDebugValueType(DebugValueType.INT16)
public static class DebugInt16Value implements DebugValue {
private final short value;
public DebugInt16Value(short value) {
this.value = value;
}
public DebugInt16Value(byte[] bytes) {
if (bytes.length != Short.BYTES) {
throw new IllegalArgumentException("Must have exactly " + Short.BYTES + " bytes");
}
ByteBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN);
this.value = buf.getShort();
}
public short shortValue() {
return value;
}
@Override
public byte[] encodeAsBytes() {
ByteBuffer buf = ByteBuffer.allocate(Short.BYTES).order(ByteOrder.BIG_ENDIAN);
buf.putShort(value);
return buf.array();
}
@Override
public String toString() {
return "word " + Integer.toHexString(value) + "h";
}
}
@ForDebugValueType(DebugValueType.INT32)
public static class DebugInt32Value implements DebugValue {
private final int value;
public DebugInt32Value(int value) {
this.value = value;
}
public DebugInt32Value(byte[] bytes) {
if (bytes.length != Integer.BYTES) {
throw new IllegalArgumentException("Must have exactly " + Integer.BYTES + " bytes");
}
ByteBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN);
this.value = buf.getInt();
}
public int intValue() {
return value;
}
@Override
public byte[] encodeAsBytes() {
ByteBuffer buf = ByteBuffer.allocate(Integer.BYTES).order(ByteOrder.BIG_ENDIAN);
buf.putInt(value);
return buf.array();
}
@Override
public String toString() {
return "dword " + Integer.toHexString(value) + "h";
}
}
@ForDebugValueType(DebugValueType.INT64)
public static class DebugInt64Value implements DebugValue {
private final long value;
public DebugInt64Value(long value) {
this.value = value;
}
public DebugInt64Value(byte[] bytes) {
if (bytes.length != Long.BYTES) {
throw new IllegalArgumentException("Must have exactly " + Long.BYTES + " bytes");
}
ByteBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN);
this.value = buf.getLong();
}
public long longValue() {
return value;
}
@Override
public byte[] encodeAsBytes() {
ByteBuffer buf = ByteBuffer.allocate(Long.BYTES).order(ByteOrder.BIG_ENDIAN);
buf.putLong(value);
return buf.array();
}
@Override
public String toString() {
return "qword " + Long.toHexString(value) + "h";
}
}
@ForDebugValueType(DebugValueType.FLOAT32)
public static class DebugFloat32Value implements DebugValue {
private final float value;
public DebugFloat32Value(float value) {
this.value = value;
}
public DebugFloat32Value(byte[] bytes) {
if (bytes.length != Float.BYTES) {
throw new IllegalArgumentException("Must have exactly " + Float.BYTES + " bytes");
}
ByteBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN);
this.value = buf.getFloat();
}
public float floatValue() {
return value;
}
@Override
public byte[] encodeAsBytes() {
ByteBuffer buf = ByteBuffer.allocate(Float.BYTES).order(ByteOrder.BIG_ENDIAN);
buf.putFloat(value);
return buf.array();
}
@Override
public String toString() {
return "f32 " + value;
}
}
@ForDebugValueType(DebugValueType.FLOAT64)
public static class DebugFloat64Value implements DebugValue {
private final double value;
public DebugFloat64Value(double value) {
this.value = value;
}
public DebugFloat64Value(byte[] bytes) {
if (bytes.length != Double.BYTES) {
throw new IllegalArgumentException("Must have exactly " + Double.BYTES + " bytes");
}
ByteBuffer buf = ByteBuffer.wrap(bytes).order(ByteOrder.BIG_ENDIAN);
this.value = buf.getDouble();
}
public double doubleValue() {
return value;
}
@Override
public byte[] encodeAsBytes() {
ByteBuffer buf = ByteBuffer.allocate(Double.BYTES).order(ByteOrder.BIG_ENDIAN);
buf.putDouble(value);
return buf.array();
}
@Override
public String toString() {
return "f64 " + value;
}
}
/**
* Extended-precision float
*/
@ForDebugValueType(DebugValueType.FLOAT80)
public static class DebugFloat80Value implements DebugValue {
private final byte[] bytes;
public DebugFloat80Value(byte[] bytes) {
if (bytes.length != 10) {
throw new IllegalArgumentException("Must have exactly 10 bytes");
}
this.bytes = Arrays.copyOf(bytes, 10);
}
public byte[] bytes() {
return bytes;
}
@Override
public byte[] encodeAsBytes() {
return bytes;
}
@Override
public String toString() {
return "f80 " + NumericUtilities.convertBytesToString(bytes);
}
}
/**
* Specific to IA-64 (Itanium) floating-point registers
*
* 17-bit exponent, 64-bit fraction. Not sure how it's aligned in memory, though.
*/
@ForDebugValueType(DebugValueType.FLOAT82)
public static class DebugFloat82Value implements DebugValue {
private final byte[] bytes;
public DebugFloat82Value(byte[] bytes) {
if (bytes.length != 11) {
throw new IllegalArgumentException("Must have exactly 11 bytes");
}
this.bytes = Arrays.copyOf(bytes, 11);
}
public byte[] bytes() {
return bytes;
}
@Override
public byte[] encodeAsBytes() {
return bytes;
}
@Override
public String toString() {
return "f82 " + NumericUtilities.convertBytesToString(bytes);
}
}
/**
* Quadruple-precision float
*/
@ForDebugValueType(DebugValueType.FLOAT128)
public static class DebugFloat128Value implements DebugValue {
private final byte[] bytes;
public DebugFloat128Value(byte[] bytes) {
if (bytes.length != 16) {
throw new IllegalArgumentException("Must have exactly 16 bytes");
}
this.bytes = Arrays.copyOf(bytes, 16);
}
public byte[] bytes() {
return bytes;
}
@Override
public byte[] encodeAsBytes() {
return bytes;
}
@Override
public String toString() {
return "f128 " + NumericUtilities.convertBytesToString(bytes);
}
}
@ForDebugValueType(DebugValueType.VECTOR64)
public static class DebugVector64Value implements DebugValue {
private final byte[] bytes;
public DebugVector64Value(byte[] bytes) {
if (bytes.length != 8) {
throw new IllegalArgumentException("Must have exactly 8 bytes");
}
this.bytes = Arrays.copyOf(bytes, 8);
}
public byte[] vi4() {
return bytes;
}
@Override
public byte[] encodeAsBytes() {
return bytes;
}
@Override
public String toString() {
return "vec64 " + NumericUtilities.convertBytesToString(bytes);
}
}
@ForDebugValueType(DebugValueType.VECTOR128)
public static class DebugVector128Value implements DebugValue {
private final byte[] bytes;
public DebugVector128Value(byte[] bytes) {
if (bytes.length != 16) {
throw new IllegalArgumentException(
"Must have exactly 16 bytes. got " + bytes.length);
}
this.bytes = Arrays.copyOf(bytes, 16);
}
public byte[] vi8() {
return bytes;
}
@Override
public byte[] encodeAsBytes() {
return bytes;
}
@Override
public String toString() {
return "vec128 " + NumericUtilities.convertBytesToString(bytes);
}
}
default DebugValueType getValueType() {
return DebugValueType.getDebugValueTypeForClass(getClass());
}
/**
* TODO: Document me
*
* Encodes the value as an array of bytes in big-endian order
*
* @return the encoded value
*/
public byte[] encodeAsBytes();
}

View file

@ -1,29 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng.err;
/**
* The base exception for checked {@code dbgeng.dll} wrapper-related errors.
*/
public class DbgEngException extends Exception {
public DbgEngException() {
super();
}
public DbgEngException(String message) {
super(message);
}
}

View file

@ -1,29 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng.err;
/**
* The base exception for unchecked {@code dbgeng.dll} wrapper-related errors.
*/
public class DbgEngRuntimeException extends RuntimeException {
public DbgEngRuntimeException() {
super();
}
public DbgEngRuntimeException(String message) {
super(message);
}
}

View file

@ -1,49 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng.ext;
import com.sun.jna.platform.win32.COM.COMUtils;
import com.sun.jna.ptr.PointerByReference;
import agent.dbgeng.dbgeng.DebugClient;
import agent.dbgeng.impl.dbgeng.client.DebugClientInternal;
import agent.dbgeng.jna.dbgeng.client.WrapIDebugClient;
import agent.dbgeng.jna.javaprovider.JavaProviderNative;
/**
* Wrapper for "javaprovider" plugin library
*
* @deprecated In one (abandoned) use case, the SCTL server can be loaded as a
* "{@code engext.cpp}-style" plugin, presumably into any {@code dbgeng.dll}-powered
* debugger. This is accomplished by embedding the JVM into the plugin, and then calling
* an alternative entry point. This plugin also provides a utility function for invoking
* {@code CreateClient} on the client provided to the plugin by the host debugger.
*/
@Deprecated
public class JavaProvider {
public static DebugClient createClient() {
PointerByReference pClient = new PointerByReference();
COMUtils.checkRC(JavaProviderNative.INSTANCE.createClient(pClient.getPointer()));
WrapIDebugClient wrap = new WrapIDebugClient(pClient.getValue());
try {
return DebugClientInternal.tryPreferredInterfaces(wrap::QueryInterface);
}
finally {
wrap.Release();
}
}
}

View file

@ -1,125 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.dbgeng.util;
import java.lang.reflect.Method;
import agent.dbgeng.dbgeng.*;
import agent.dbgeng.dbgeng.DebugClient.*;
import ghidra.comm.util.BitmaskSet;
/**
* A convenient abstract implementation of {@link DebugEventCallbacks}
*
* This implementation automatically computes the value for {@link #getInterestMask()} based on the
* overridden methods. The default implementations all return {@link DebugStatus#NO_CHANGE}, should
* they happen to be called.
*/
public class DebugEventCallbacksAdapter implements DebugEventCallbacks {
private BitmaskSet<DebugEvent> interests = new BitmaskSet<>(DebugEvent.class);
public DebugEventCallbacksAdapter() {
try {
// Compute the interest mask based on methods that are overridden
for (Method im : DebugEventCallbacks.class.getDeclaredMethods()) {
Method m = this.getClass().getMethod(im.getName(), im.getParameterTypes());
if (m.getDeclaringClass() == DebugEventCallbacksAdapter.class) {
continue;
}
// The interface method is overridden, grab the annotation from the interface
ForInterest fi = im.getAnnotation(ForInterest.class);
if (fi == null) {
throw new AssertionError("No ForInterest annotation present on " + m);
}
interests.add(fi.value());
}
}
catch (NoSuchMethodException e) {
throw new AssertionError(e);
}
}
@Override
public BitmaskSet<DebugEvent> getInterestMask() {
return interests;
}
@Override
public DebugStatus breakpoint(DebugBreakpoint bp) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus exception(DebugExceptionRecord64 exception, boolean firstChance) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus createThread(DebugThreadInfo debugThreadInfo) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus exitThread(int exitCode) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus createProcess(DebugProcessInfo debugProcessInfo) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus exitProcess(int exitCode) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus loadModule(DebugModuleInfo debugModuleInfo) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus unloadModule(String imageBaseName, long baseOffset) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus systemError(int error, int level) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus sessionStatus(SessionStatus status) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus changeDebuggeeState(BitmaskSet<ChangeDebuggeeState> flags, long argument) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus changeEngineState(BitmaskSet<ChangeEngineState> flags, long argument) {
return DebugStatus.NO_CHANGE;
}
@Override
public DebugStatus changeSymbolState(BitmaskSet<ChangeSymbolState> flags, long argument) {
return DebugStatus.NO_CHANGE;
}
}

View file

@ -1,97 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.gadp;
import java.util.List;
import ghidra.dbg.gadp.server.AbstractGadpLocalDebuggerModelFactory;
import ghidra.dbg.util.ConfigurableFactory.FactoryDescription;
import ghidra.program.model.listing.Program;
@FactoryDescription(
brief = "MS dbgeng.dll (WinDbg) via GADP",
htmlDetails = """
Connect to the Microsoft Debug Engine.
This is the same engine that powers WinDbg.
This is best for most Windows userspace and kernel targets.
Kernel debugging is still experimental.
This will protect Ghidra's JVM by using a subprocess to access the native API.""")
public class DbgEngGadpDebuggerModelFactory extends AbstractGadpLocalDebuggerModelFactory {
protected String remote = "none"; // Require user to start server
@FactoryOption("DebugConnect options (.server)")
public final Property<String> agentRemoteOption =
Property.fromAccessors(String.class, this::getAgentRemote, this::setAgentRemote);
protected String transport = "none"; // Require user to start server
@FactoryOption("Remote process server options (untested)")
public final Property<String> agentTransportOption =
Property.fromAccessors(String.class, this::getAgentTransport, this::setAgentTransport);
@Override
public int getPriority(Program program) {
// TODO: Might instead look for the DLL
if (!System.getProperty("os.name").toLowerCase().contains("windows")) {
return -1;
}
if (program != null) {
String exe = program.getExecutablePath();
if (exe == null || exe.isBlank()) {
return -1;
}
}
return 60;
}
public String getAgentTransport() {
return transport;
}
public void setAgentTransport(String transport) {
this.transport = transport;
}
public String getAgentRemote() {
return remote;
}
public void setAgentRemote(String remote) {
this.remote = remote;
}
@Override
protected String getThreadName() {
return "Local dbgeng.dll Agent stdout";
}
protected Class<?> getServerClass() {
return DbgEngGadpServer.class;
}
@Override
protected void completeCommandLine(List<String> cmd) {
cmd.add(getServerClass().getCanonicalName());
cmd.addAll(List.of("-H", host));
cmd.addAll(List.of("-p", Integer.toString(port)));
//cmd.addAll(List.of("-t", transport));
if (!remote.equals("none") && !remote.equals("")) {
cmd.addAll(List.of("-r", remote));
}
if (!transport.equals("none") && !transport.equals("")) {
cmd.addAll(List.of("-t", transport));
}
}
}

View file

@ -1,236 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.gadp;
import java.io.IOException;
import java.net.InetSocketAddress;
import java.net.SocketAddress;
import java.util.*;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
import org.apache.commons.lang3.exception.ExceptionUtils;
import agent.dbgeng.gadp.impl.DbgEngGadpServerImpl;
import ghidra.async.AsyncUtils;
import ghidra.dbg.agent.AgentWindow;
import ghidra.util.Msg;
public interface DbgEngGadpServer extends AutoCloseable {
public static final String USAGE =
"""
This is the GADP server for Windows dbgeng.dll. Usage:
gadp-agent-gdbeng [-H HOST/ADDR] [-p PORT] [-i ID] [-t TRANSPORT]
[-r REMOTE]
Options:
--host/-H The address of the interface on which to listen.
--port/-p The TCP port on which to listen for GADP. Default is 12345
--transport/-t The transport specification for the Process Server. Default
is tcp:port=11200
--remote/-r The transport specification for a remote server.
Starts a dbgeng.dll-based GADP server "agent". Once the server has started, it
will print the interface IP and port.
""";
public static final String DEFAULT_DBGSRV_TRANSPORT = "tcp:port=11200";
/**
* The entry point for the GADP-DBGENG server in stand-alone mode
*
* Run it to see help.
*
* @param args the command-line arguments
* @throws IOException if an I/O error occurs
* @throws ExecutionException
* @throws InterruptedException
*/
public static void main(String[] args) throws Exception {
try {
new DbgEngRunner().run(args);
}
catch (Throwable t) {
System.err.println(ExceptionUtils.getMessage(t));
System.exit(1);
}
}
/**
* Create a new instance of the server
*
* @param addr the address to bind the GADP server to
* @param busId the client ID the server should use on the bus for synthesized commands
* @param dbgSrvTransport the transport specification for the {@code dbgeng.dll} server
* @return the server instance
* @throws IOException
*/
public static DbgEngGadpServer newInstance(SocketAddress addr) throws IOException {
return new DbgEngGadpServerImpl(addr);
}
/**
* Runs the server from the command line
*/
public class DbgEngRunner {
protected InetSocketAddress bindTo;
protected List<String> dbgengArgs = new ArrayList<>();
protected String dbgSrvTransport = DEFAULT_DBGSRV_TRANSPORT;
protected String remote = null;
public DbgEngRunner() {
}
public void run(String args[])
throws IOException, InterruptedException, ExecutionException {
parseArguments(args);
try (DbgEngGadpServer server = newInstance(bindTo)) {
//TODO: fix/test the debugConnect case when args are passed
server.startDbgEng(dbgengArgs.toArray(new String[] {})).exceptionally(e -> {
e = AsyncUtils.unwrapThrowable(e);
Msg.error(this, "Error starting dbgeng/GADP: " + e);
System.exit(-1);
return null;
});
new AgentWindow("dbgeng.dll Agent for Ghidra", server.getLocalAddress());
while (server.isRunning()) {
// TODO: Put consoleLoop back?
Thread.sleep(1000);
}
System.exit(0);
}
}
protected void parseArguments(String[] args) {
String iface = "localhost";
int port = 12345;
// NOTE: Maybe commons-cli or Argparse4j?
Iterator<String> ait = Arrays.asList(args).iterator();
while (ait.hasNext()) {
String a = ait.next();
if ("-h".equals(a) || "--help".equals(a)) {
printUsage();
System.exit(0);
}
else if ("-p".equals(a) || "--port".equals(a)) {
if (!ait.hasNext()) {
System.err.println("Expected PORT");
printUsage();
System.exit(-1);
}
String portStr = ait.next();
try {
port = Integer.parseInt(portStr);
}
catch (NumberFormatException e) {
System.err.println("Integer required. Got " + portStr);
printUsage();
System.exit(-1);
}
}
else if ("-H".equals(a) || "--host".equals(a)) {
if (!ait.hasNext()) {
System.err.println("Expected HOST/ADDR");
printUsage();
System.exit(-1);
}
iface = ait.next();
}
else if ("-t".equals(a) || "--transport".equals(a)) {
if (!ait.hasNext()) {
System.err.println("Expected TRANSPORT");
System.err.println("See the MSDN 'Activating a Process Server'");
printUsage();
System.exit(-1);
}
dbgSrvTransport = ait.next();
dbgengArgs.add(dbgSrvTransport);
}
else if ("-r".equals(a) || "--remote".equals(a)) {
if (!ait.hasNext()) {
System.err.println("Expected TRANSPORT:HOST,PORT");
printUsage();
System.exit(-1);
}
remote = ait.next();
dbgengArgs.add(remote);
}
else {
System.err.println("Unknown option: " + a);
printUsage();
System.exit(-1);
}
}
bindTo = new InetSocketAddress(iface, port);
}
protected void printUsage() {
System.out.println(USAGE);
}
}
/**
* Start the debugging server
*
* @return a future that completes when the server is ready
*/
CompletableFuture<Void> startDbgEng(String[] args);
/**
* Get the local address to which the GADP server is bound.
*
* @return the local socket address
*/
SocketAddress getLocalAddress();
/**
* Starts the dbgeng manager's console loop
*
* @throws IOException if an I/O error occurs
*/
//public void consoleLoop() throws IOException;
/**
* Close all connections and ports, GADP and Process Server, and terminate the server
*
* @throws IOException if an I/O error occurs
*/
public void terminate() throws IOException;
/**
* Check if the server is running
*
* This will return false: 1) Before the server has been started, 2) After a call to
* {@link #terminate()}, or 3) When an error occurs causing the server to terminate
* unexpectedly. Otherwise, it returns true.
*
* @return true if the server is currently running.
*/
public boolean isRunning();
/**
* Calls {@link #terminate()}
*
* @throws IOException if an I/O error occurs
*/
@Override
default void close() throws IOException {
terminate();
}
}

View file

@ -1,37 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.gadp;
import org.apache.commons.lang3.exception.ExceptionUtils;
import agent.dbgeng.gadp.DbgEngGadpServer.DbgEngRunner;
import ghidra.GhidraApplicationLayout;
import ghidra.GhidraLaunchable;
public class DbgEngGadpServerLaunchShim implements GhidraLaunchable {
@Override
public void launch(GhidraApplicationLayout layout, String[] args) throws Exception {
try {
new DbgEngRunner().run(args);
}
catch (Throwable t) {
System.err.println(ExceptionUtils.getMessage(t));
System.exit(1);
}
}
}

View file

@ -1,244 +0,0 @@
/* ###
* IP: GHIDRA
*
* 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.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package agent.dbgeng.gadp.impl;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.Consumer;
import com.sun.jna.platform.win32.COM.COMException;
import agent.dbgeng.dbgeng.DebugClient;
import agent.dbgeng.dbgeng.DebugClient.DebugStatus;
import agent.dbgeng.dbgeng.DebugControl;
import agent.dbgeng.manager.DbgManager;
import ghidra.util.Msg;
/**
* A single-threaded executor which creates and exclusively accesses the {@code dbgeng.dll} client.
*
* <p>
* The executor also has a priority mechanism, so that callbacks may register follow-on handlers
* which take precedence over other tasks in the queue (which could trigger additional callbacks).
* This is required since certain operation are not allowed during normal callback processing. For
* example, changing the current process is typically not allowed, but it is necessary to retrieve a
* thread's context.
*/
public abstract class AbstractClientThreadExecutor extends AbstractExecutorService {
private static final int DEFAULT_PRIORITY = 10;
protected DebugClient client;
protected boolean shuttingDown = false;
protected final Queue<Entry> queue = new PriorityQueue<>();
protected Thread thread = new Thread(this::run, "DebugClient");
protected final AtomicBoolean waitRegistered = new AtomicBoolean();
protected abstract void init();
public static class Entry implements Comparable<Entry> {
final int priority;
public final Runnable command;
public Entry(int priority, Runnable command) {
this.priority = priority;
this.command = command;
}
@Override
public int compareTo(Entry that) {
return Integer.compare(this.priority, that.priority);
}
}
/**
* Obtain a reference to the client, only if the calling thread is this executor's thread.
*
* @return the client
*/
public DebugClient getClient() {
if (thread != Thread.currentThread()) {
//TODO: throw new AssertionError("Cannot get client outside owning thread");
}
return client;
}
/**
* Instruct the executor to call {@link DebugClient#dispatchCallbacks()} when it next idles.
*/
public void cancelWait() {
waitRegistered.set(false);
}
/**
* Instruct the executor to call {@link DebugControl#waitForEvent()} when it next idles.
*/
public void registerWait() {
waitRegistered.set(true);
}
private Entry pollQueue() {
synchronized (queue) {
return queue.poll();
}
}
private void run() {
/**
* The general idea is to run indefinitely, taking every precaution to protect this thread's
* life, since only it can access the client. Granted, if it turns out to be too difficult,
* we can always create a new thread and client, using the existing client's reentrant
* methods.
*
* <p>
* As stated in the MSDN, this thread repeatedly calls {@code DispatchEvents} in order to
* receive callbacks regarding events caused by other clients. If, however, an wait is
* registered, or the current engine state indicates that a wait is proper, the thread calls
* {@code WaitForEvent} instead. The thread is occupied until the wait completes, which is
* fine since the engine is inaccessible (except to certain callbacks) until it completes,
* anyway.
*/
try {
init();
while (!shuttingDown) {
Entry next;
while (null != (next = pollQueue())) {
if (shuttingDown) {
return;
}
try {
//System.out.println("Executing: " + next);
next.command.run();
//System.out.println("Done");
}
catch (Throwable t) {
Msg.error(this, "Task in executor threw: " + t);
}
}
DebugStatus status = client.getControl().getExecutionStatus();
if (status.shouldWait && status != DebugStatus.NO_DEBUGGEE ||
waitRegistered.get()) {
waitRegistered.set(false);
try {
getManager().waitForEventEx();
//client.getControl().waitForEvent();
}
catch (COMException e) {
Msg.error(this, "Error during WaitForEvents: " + e);
}
}
else {
try {
client.dispatchCallbacks(100); // TODO: Better synchronization
}
catch (COMException e) {
Msg.error(this, "Error during DispatchCallbacks: " + e);
}
}
}
}
catch (Throwable t) {
Msg.error(this, "Non-respawnable executor terminated unexpectedly", t);
shuttingDown = true;
}
}
@Override
public void shutdown() {
shuttingDown = true;
}
@Override
public List<Runnable> shutdownNow() {
shuttingDown = true;
client.exitDispatch();
thread.interrupt();
List<Runnable> left = new ArrayList<>(queue.size());
for (Entry ent : queue) {
left.add(ent.command);
}
return left;
}
@Override
public boolean isShutdown() {
return shuttingDown;
}
@Override
public boolean isTerminated() {
return !thread.isAlive();
}
@Override
public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
long millis = TimeUnit.MILLISECONDS.convert(timeout, unit);
thread.join(millis);
return !thread.isAlive();
}
@Override
public void execute(Runnable command) {
execute(DEFAULT_PRIORITY, command);
}
/**
* Schedule a task with a given priority.
*
* <p>
* Smaller priority values indicate earlier execution. The default priority is
* {@link #DEFAULT_PRIORITY}.
*
* @param priority the priority
* @param command the task
*/
public void execute(int priority, Runnable command) {
if (shuttingDown) {
// TODO: Is this the correct exception?
throw new RejectedExecutionException("Executor is shutting down");
}
if (!thread.isAlive()) {
throw new RejectedExecutionException("Executor has terminated");
}
synchronized (queue) {
queue.add(new Entry(priority, command));
// TODO: Putting this in causes sync/output flushing problems
//client.exitDispatch();
}
}
public boolean isCurrentThread() {
return thread.equals(Thread.currentThread());
}
/**
* Schedule a task with the given priority, taking a reference to the client.
*
* <p>
* This is a convenience which spares a call to {@link #getClient()}. See
* {@link #execute(int, Runnable)} about priority.
*
* @param priority the priority
* @param command the task
*/
public void execute(int priority, Consumer<DebugClient> command) {
execute(priority, () -> command.accept(client));
}
public abstract DbgManager getManager();
public abstract void setManager(DbgManager manager);
}

Some files were not shown because too many files have changed in this diff Show more