Skip to content

Commit c87e458

Browse files
emteereghidra1
authored andcommitted
GP-0 11.4 WhatsNew
1 parent 560497c commit c87e458

File tree

1 file changed

+73
-104
lines changed
  • Ghidra/Configurations/Public_Release/src/global/docs

1 file changed

+73
-104
lines changed

Ghidra/Configurations/Public_Release/src/global/docs/WhatsNew.md

Lines changed: 73 additions & 104 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,17 @@ applied Ghidra SRE capabilities to a variety of problems that involve analyzing
1515
generating deep insights for NSA analysts who seek a better understanding of potential
1616
vulnerabilities in networks and systems.
1717

18-
# What's New in Ghidra 11.3
18+
# What's New in Ghidra 11.4
1919
This release includes new features, enhancements, performance improvements, quite a few bug fixes,
2020
and many pull-request contributions. Thanks to all those who have contributed their time, thoughts,
2121
and code. The Ghidra user community thanks you too!
2222

2323
### The not-so-fine print: Please Read!
24-
Ghidra 11.3 is fully backward compatible with project data from previous releases. However, programs
25-
and data type archives which are created or modified in 11.3 will not be usable by an earlier Ghidra
24+
Ghidra 11.4 is fully backward compatible with project data from previous releases. However, programs
25+
and data type archives which are created or modified in 11.4 will not be usable by an earlier Ghidra
2626
version.
2727

28-
**IMPORTANT:** Ghidra 11.3 requires at minimum JDK 21 to run.
28+
**IMPORTANT:** Ghidra 11.4 requires at minimum JDK 21 to run.
2929

3030
**IMPORTANT:** To use the Debugger or do a full source distribution build, you will need Python3
3131
(3.9 to 3.13 supported) installed on your system.
@@ -59,110 +59,79 @@ process that will provide better results than prior Ghidra versions. You might
5959
fresh import of any program you will continue to reverse engineer to see if the latest Ghidra
6060
provides better results.
6161

62-
## PyGhidra
63-
The PyGhidra Python library, originally developed by the Department of Defense Cyber Crime Center
64-
(DC3) under the name *Pyhidra*, is a Python library that provides direct access to the Ghidra API
65-
within a native CPython 3 interpreter using JPype. PyGhidra contains some conveniences for setting
66-
up analysis on a given sample and running a Ghidra script locally. It also contains a Ghidra plugin
67-
to allow the use of CPython 3 from the Ghidra GUI.
68-
69-
To launch Ghidra in PyGhidra mode, run `./support/pyghidra` (or `support\pyghidra.bat`). See the
70-
*"PyGhidra Mode"* section of the *Getting Started* document and `Ghidra/Features/PyGhidra/README.html`
71-
for more information.
72-
73-
## Visual Studio Code
74-
Ghidra 11.2 introduced a `VSCodeProjectScript.java` GhidraScript to assist in setting up Visual Studio Code
75-
project folders for Ghidra module development and debugging. This GhidraScript has been replaced in
76-
Ghidra 11.3 by 2 new actions, accessible from a *CodeBrowser* tool:
77-
+ *Tools -> Create VSCode Module Project...*
78-
+ "*Edit Script with Visual Studio Code*" button in the Script Manager
79-
80-
The "*Create VSCode Module Project...*" action provides the same capability as the old
81-
`VSCodeProjectScript.java` GhidraScript, creating a Visual Studio Code project folder that contains a
82-
skeleton module which can be used to build a variety of different Ghidra extension points
83-
(Plugins, Analyzers, Loaders, etc). Launchers are also provided to run and debug the module in
84-
Ghidra, as well as a Gradle task to export the module as a distributable Ghidra extension zip file.
85-
86-
The "*Edit Script with Visual Studio Code*" button in the Script Manager enables quick editing and
87-
debugging of the selected script in a Visual Studio Code workspace that is automatically created
88-
behind the scenes in Ghidra's user settings directory. This provides a much snappier and modern
89-
alternative to Eclipse, while maintaining all of the core fuctionality you would expect from an IDE
90-
(auto complete, hover, navigation, etc).
91-
92-
Ghidra will do its best to automatically locate your Visual Studio Code installation, but if cannot
93-
find it, it can be set via the Front-End GUI at *Edit -> Tool Options -> Visual Studio Code
94-
Integration*.
62+
63+
## Search
64+
65+
A new "Search and Replace" feature allows searching for string patterns in a wide variety
66+
of Ghidra elements and replacing that text with a different text sequence. Using this feature, many different
67+
Ghidra elements can be renamed all at once including labels, functions, name-spaces, parameters, data-types,
68+
field names, and enum values. This feature also supports regular expressions (including capture groups).
69+
After initiating a search and replace, a results table is displayed with a list of items that match the
70+
search. From this table, the replace actions can be applied in bulk or individually, one item at a time
71+
as they are reviewed.
72+
73+
## Taint Engine Support
74+
75+
Extended support for using taint engines, particularly CTADL (https://github.com/sandialabs/ctadl)
76+
and AngryGhidra (https://github.com/Nalen98/AngryGhidra), from the decompiler. Allows users to mark
77+
pcode varnodes as sources and sinks, displaying paths from sources to sinks as both address selections
78+
in the disassembly and token selections in the decompiler.
79+
80+
## Dockerized Ghidra
81+
82+
A new capability to build a docker image that demonstrates Ghidra's various entrypoint executions for `headless`,
83+
`ghidra-server`, `bsim-server`, `bsim`, `pyghidra`, and `gui` within the docker container has been included. The Docker
84+
image can be used as is, or can be tailored to your workflow needs. Configuration such as the base
85+
image (linux distro), additional packages, and more is possible using Docker.
86+
87+
See the `docker/README.md` for information about building a docker image for Ghidra and running within the Ghidra container.
88+
89+
90+
## Binary Formats
91+
92+
+ New loaders for the a.out and OMF-51 binary file formats.
93+
+ Support for Mach-O "re-exports".
94+
+ New ability to load Mach-O binaries directly from a Universal Binary without needing to open the File System Browser.
95+
+ DWARF will now load external debug files during analysis as is done for PDB files.
9596

9697
## Debugger
97-
The old "IN-VM" and "GADP" launchers and connectors have been removed, as their replacement
98-
TraceRmi-based implementations have been satisfactorily completed. On that same note, the entire API
99-
and supporting code base for IN-VM and GADP connectors have been removed.
100-
101-
We've begun to explore more kernel-level debugging. Our lldb connector can now debug the macOS
102-
kernel, and our dbgeng connector can now debug a Windows kernel running in a VM via eXDI.
103-
104-
## Emulator
105-
We have introduced a new accelerated p-code emulator that uses Jit-in-Time translation (JIT).
106-
This is *not* currently integrated in the UI but is available for scripting and plugin developers.
107-
Its implementation is named `JitPcodeEmulator`, and it's a near drop-in replacement for `PcodeEmulator`.
108-
See its javadoc for usage and implementation details. The JIT emulator is very new, so there may
109-
still be many bugs.
110-
111-
## Source File Information
112-
Source file and line information can now be added to Ghidra using a Program's SourceFileManager.
113-
The DWARF, PDB, and Go analyzers now record this information by default. Source information can also
114-
be added programmatically; see the example scripts in the *SourceMapping* script category.
115-
Source information can be viewed in the *"Source Map"* Listing Field or the `SourceFilesTablePlugin`,
116-
which is accessible from the Code Browser via *Window -> Source Files and Transforms*.
117-
118-
The *"View Source..."* Listing action, enabled on addresses with source file information, opens a
119-
source file at the correct line in either Eclipse or Visual Studio Code (there is a *"Source Files
120-
and Transforms"* tool option to determine the viewer). The SourceFilesTablePlugin can be used to
121-
modify the source file paths stored in the SourceFileManager before sending them to Eclipse or
122-
Visual Studio Code.
123-
124-
## Function Graph
125-
The Function Graph has had a number of improvements:
126-
+ Added new *"Flow Chart"* layouts
127-
+ Position of the satellite view can be configured
128-
+ Ctrl-Space toggles between the Listing and the Function Graph (starting fully zoomed in vs. fully
129-
zoomed out is controlled by a Function Graph option)
130-
131-
## String Translation and Text Search
132-
+ String translation has an additional translator available using the LibreTranslate service.
133-
The LibreTranslate project (currently hosted at libretranslate.com) is an independent project
134-
that provides an open source translation package that can be self-hosted, meaning you can translate
135-
strings without sending them to a second party to translate, using an existing LibreTranslate server.
136-
For more information search for LibreTranslate in the online Ghidra help pages.
137-
**NOTE:** The LibreTranslate plugin is not enabled by default, and is added in the
138-
*File -> Configure* menu.
139-
140-
+ The ability to search the text of all decompiled functions has been added. Decompilation during
141-
search occurs on the fly, so the latest decompilation results of all functions are used for the
142-
search. The search can take some time depending on the number and size of functions in your binary.
143-
The new action can be found at *Search -> Decompiled Text...*.
98+
99+
There have been numerous improvements, extensions for new targets, better launching and configuration, and bug fixes to the debugger.
100+
101+
## Analysis Speed
102+
103+
Constant and Stack analysis time has been greatly decreased through algorithm improvements and better threading. There has been additional
104+
work to loosen locking of the program database where possible. By locking only when necessary, multiple threads can better analyze the program
105+
and interaction with the GUI during analysis should be more responsive.
106+
107+
## Golang
108+
109+
Golang binary analysis analysis has been improved.
110+
+ Analysis has been improved to model closures, interface methods, and generic functions more accurately.
111+
+ Function signatures for core golang library functions are automatically applied.
112+
+ Decompilation results are improved by filtering some verbose golang garbage collection function logic.
113+
+ Addressed finding the Golang bootstrap information in stripped PE binaries.
114+
115+
## BSim
116+
117+
PostgreSQL for BSim has been updated to version 15.13 and the JDBC driver to 42.7.6. This resolves issues with building PostgreSQL
118+
server on newer releases of Linux and compiler toolchains which compile with -std=c23 option by default. In addition,
119+
building of PostgreSQL for linux_arm_64 and mac_arm_64 based platforms is supported.
120+
121+
+ BSim is now installed in the default Codebrowser tool.
122+
+ Function names now update in BSim search results overview if the name is changed elsewhere in Ghidra.
144123

145124
## Processors
146-
+ The x86 EVEX instruction write and read masking has been implemented for all AVX-512 instructions.
147-
The handling of the mask is necessary as semantics are added for individual AVX-512 instructions.
148-
+ TI_MSP430 decompilation has been improved through numerous changes to the processor's compiler
149-
specifications file.
150-
+ Corrected ARM VFPv2 instructions which were not disassembling correctly.
151-
152-
## Other Improvements
153-
+ Much of Ghidra's standalone documentation has been modernized to the Markdown format. Generated
154-
HTML versions are provided alongside the Markdown files for convenience. Converting all relevant
155-
documents to Markdown remains an ongoing process. **NOTE:** There are no plans to convert the
156-
internal Ghidra help system to Markdown, as the Java Help library does not support it.
157-
+ Libraries can now be loaded into an already-imported program with the *File -> Load Libraries...*
158-
action.
159-
+ The CParser macro pre-processing will now halt on *"#error"* directives. This change had a ripple
160-
effect and uncovered a myriad of bugs which have been addressed. In addition, the interim parsing
161-
output has been improved to allow easier diagnosis when problems in parsing occur due to incorrect
162-
define values or other header file issues.
163-
+ Finally, a new `CreateUEFIGDTArchivesScript.java` parsing script has been added to parse UEFI header files
164-
available from `github.com/tianocore/edk2`. Using a script vice released pre-parsed GDT files allows the
165-
end user to parse the correct version with a configuration fitting their needs.
125+
126+
+ Enhanced support for the x86 AVX-512 processor extension with additional instruction support - including the BF16, FP16 and VNNI extensions.
127+
+ Implemented many AARCH64 Neon instruction semantics to improve decompilation.
128+
+ Upgraded pcodetest framework scripts to python3 and improved command-line options.
129+
130+
## Other Improvements
131+
+ Many calling conventions for various processors/compilers have been improved using the more flexible decompiler rules
132+
when the data types for parameters and return values are known.
133+
+ Upgraded many 3rd party dependencies to address potential bugs and CVE's, including jars for Bouncy Castle,
134+
Apache Commons Compress, Apache Commons Lang3, Apache Commons IO, protobuf, and JUnit.
166135

167136
## Additional Bug Fixes and Enhancements
168137
Numerous other new features, improvements, and bug fixes are fully listed in the

0 commit comments

Comments
 (0)