From 3c4f0e72b8ddd34e9081383b902b084fa641aa40 Mon Sep 17 00:00:00 2001 From: KeybadeBlox Date: Wed, 18 Feb 2026 18:18:24 -0500 Subject: [PATCH] Miscellaneous Ghidra script tweaks No behavioural changes. --- ghidra/ghidra_scripts/EnhancedExport.java | 2 +- ghidra/ghidra_scripts/EnhancedImport.java | 24 ++++++++++++----------- ghidra/ghidra_scripts/MSVC7Mangle.java | 2 +- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/ghidra/ghidra_scripts/EnhancedExport.java b/ghidra/ghidra_scripts/EnhancedExport.java index 64a6270..03237c4 100644 --- a/ghidra/ghidra_scripts/EnhancedExport.java +++ b/ghidra/ghidra_scripts/EnhancedExport.java @@ -16,7 +16,7 @@ import java.util.Arrays; import java.util.Optional; -public class EnhancedExport extends GhidraScript{ +public class EnhancedExport extends GhidraScript { @Override public void run() throws Exception { final FileWriter out = new FileWriter(askFile("Specify output file", "OK")); diff --git a/ghidra/ghidra_scripts/EnhancedImport.java b/ghidra/ghidra_scripts/EnhancedImport.java index ae58711..935ee87 100644 --- a/ghidra/ghidra_scripts/EnhancedImport.java +++ b/ghidra/ghidra_scripts/EnhancedImport.java @@ -4,6 +4,7 @@ import ghidra.app.script.GhidraScript; import ghidra.app.services.DataTypeQueryService; +import ghidra.app.util.NamespaceUtils; import ghidra.program.model.address.Address; import ghidra.program.model.data.ArrayDataType; import ghidra.program.model.data.DataType; @@ -27,7 +28,7 @@ import java.util.List; import java.util.Optional; -public class EnhancedImport extends GhidraScript{ +public class EnhancedImport extends GhidraScript { @Override public void run() throws Exception { final FileReader in = new FileReader(askFile("Select input file", "OK")); @@ -86,16 +87,17 @@ public class EnhancedImport extends GhidraScript{ /* Creates namespaces from the given name, returning the deepest one Returns null if the qualified name is in the global namespace. */ - final String[] parts = qualifiedName.split("::"); - - if (parts.length < 2) return null; - - final String[] names = Arrays.copyOfRange(parts, 0, parts.length - 1); - - Namespace ns = null; - for (final String name : names) ns = createNamespace(ns, name); - - return ns; + return qualifiedName.contains("::") ? + NamespaceUtils.createNamespaceHierarchy( + qualifiedName.substring( // Cut off symbol name + 0, + qualifiedName.length() - "::".length() - + unqualified(qualifiedName).length() + ), + null, + currentProgram, + SourceType.USER_DEFINED + ) : null; } private Optional makeType(final String type) throws Exception { diff --git a/ghidra/ghidra_scripts/MSVC7Mangle.java b/ghidra/ghidra_scripts/MSVC7Mangle.java index 744142c..5b2224e 100644 --- a/ghidra/ghidra_scripts/MSVC7Mangle.java +++ b/ghidra/ghidra_scripts/MSVC7Mangle.java @@ -73,7 +73,7 @@ import java.util.stream.IntStream; import java.util.zip.CRC32; -public class MSVC7Mangle extends GhidraScript{ +public class MSVC7Mangle extends GhidraScript { @Override public void run() throws Exception { // Get selected ranges from arguments if invoked headless