From 1ae9218ebaeb63f58b6c75ec4abdfabcbe77d36b Mon Sep 17 00:00:00 2001 From: ghidra007 Date: Fri, 18 Mar 2022 13:39:41 +0000 Subject: [PATCH] GP-1832 improved isGcc checks in RecoverClassesFromRTTI script. --- .../ghidra_scripts/RecoverClassesFromRTTIScript.java | 7 +++---- .../classrecovery/RTTIGccClassRecoverer.java | 6 +++--- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/Ghidra/Features/Decompiler/ghidra_scripts/RecoverClassesFromRTTIScript.java b/Ghidra/Features/Decompiler/ghidra_scripts/RecoverClassesFromRTTIScript.java index fa5e7774f6..2b9f24a1b3 100644 --- a/Ghidra/Features/Decompiler/ghidra_scripts/RecoverClassesFromRTTIScript.java +++ b/Ghidra/Features/Decompiler/ghidra_scripts/RecoverClassesFromRTTIScript.java @@ -69,6 +69,7 @@ import ghidra.app.util.bin.format.dwarf4.next.sectionprovider.DWARFSectionProvid import ghidra.app.util.bin.format.dwarf4.next.sectionprovider.DWARFSectionProviderFactory; import ghidra.app.util.bin.format.pdb.PdbParserConstants; import ghidra.app.util.importer.MessageLog; +import ghidra.app.util.opinion.ElfLoader; import ghidra.framework.options.Options; import ghidra.framework.plugintool.PluginTool; import ghidra.program.model.address.*; @@ -574,8 +575,7 @@ public class RecoverClassesFromRTTIScript extends GhidraScript { */ private boolean isGcc() { - boolean isELF = currentProgram.getExecutableFormat().contains("ELF"); - if (!isELF) { + if (!ElfLoader.ELF_NAME.equals(currentProgram.getExecutableFormat())) { return false; } @@ -591,11 +591,10 @@ public class RecoverClassesFromRTTIScript extends GhidraScript { return false; } - if (!commentBlock.isLoaded()) { + if (!commentBlock.isInitialized()) { return false; } - // check memory bytes in block for GCC: bytes byte[] gccBytes = { (byte) 0x47, (byte) 0x43, (byte) 0x43, (byte) 0x3a }; byte[] maskBytes = { (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff }; diff --git a/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIGccClassRecoverer.java b/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIGccClassRecoverer.java index 412dde27c5..a4406abc38 100644 --- a/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIGccClassRecoverer.java +++ b/Ghidra/Features/Decompiler/ghidra_scripts/classrecovery/RTTIGccClassRecoverer.java @@ -21,6 +21,7 @@ import java.util.*; import ghidra.app.cmd.label.DemanglerCmd; import ghidra.app.util.NamespaceUtils; import ghidra.app.util.demangler.*; +import ghidra.app.util.opinion.ElfLoader; import ghidra.framework.plugintool.PluginTool; import ghidra.program.flatapi.FlatProgramAPI; import ghidra.program.model.address.*; @@ -133,8 +134,7 @@ public class RTTIGccClassRecoverer extends RTTIClassRecoverer { private boolean isGcc() { - boolean isELF = program.getExecutableFormat().contains("ELF"); - if (!isELF) { + if (!ElfLoader.ELF_NAME.equals(program.getExecutableFormat())) { return false; } @@ -149,7 +149,7 @@ public class RTTIGccClassRecoverer extends RTTIClassRecoverer { return false; } - if (!commentBlock.isLoaded()) { + if (!commentBlock.isInitialized()) { return false; }