GP-4836 cleanup "Executable Format" option usage

This commit is contained in:
dev747368 2024-08-09 19:34:35 +00:00
parent 5047c00359
commit ffaa3398ca
14 changed files with 45 additions and 80 deletions

View file

@ -31,7 +31,6 @@ import ghidra.app.util.opinion.ElfLoader;
import ghidra.pcode.emulate.EmulateExecutionState; import ghidra.pcode.emulate.EmulateExecutionState;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.listing.Instruction; import ghidra.program.model.listing.Instruction;
import ghidra.program.model.listing.Program;
import ghidra.program.model.symbol.*; import ghidra.program.model.symbol.*;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.exception.NotFoundException; import ghidra.util.exception.NotFoundException;
@ -61,8 +60,7 @@ public class EmuX86DeobfuscateExampleScript extends GhidraScript {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
String format = String format = currentProgram.getExecutableFormat();
currentProgram.getOptions(Program.PROGRAM_INFO).getString("Executable Format", null);
if (currentProgram == null || !currentProgram.getName().startsWith(PROGRAM_NAME) || if (currentProgram == null || !currentProgram.getName().startsWith(PROGRAM_NAME) ||
!"x86:LE:64:default".equals(currentProgram.getLanguageID().toString()) || !"x86:LE:64:default".equals(currentProgram.getLanguageID().toString()) ||

View file

@ -33,7 +33,6 @@ import ghidra.pcode.emulate.EmulateExecutionState;
import ghidra.program.model.address.*; import ghidra.program.model.address.*;
import ghidra.program.model.lang.InsufficientBytesException; import ghidra.program.model.lang.InsufficientBytesException;
import ghidra.program.model.listing.Function; import ghidra.program.model.listing.Function;
import ghidra.program.model.listing.Program;
import ghidra.program.model.symbol.*; import ghidra.program.model.symbol.*;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.exception.NotFoundException; import ghidra.util.exception.NotFoundException;
@ -64,8 +63,7 @@ public class EmuX86GccDeobfuscateHookExampleScript extends GhidraScript {
@Override @Override
protected void run() throws Exception { protected void run() throws Exception {
String format = String format = currentProgram.getExecutableFormat();
currentProgram.getOptions(Program.PROGRAM_INFO).getString("Executable Format", null);
if (currentProgram == null || !currentProgram.getName().startsWith(PROGRAM_NAME) || if (currentProgram == null || !currentProgram.getName().startsWith(PROGRAM_NAME) ||
!"x86:LE:64:default".equals(currentProgram.getLanguageID().toString()) || !"x86:LE:64:default".equals(currentProgram.getLanguageID().toString()) ||

View file

@ -25,7 +25,6 @@ import ghidra.app.util.bin.format.coff.*;
import ghidra.app.util.importer.MessageLog; import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.BinaryLoader; import ghidra.app.util.opinion.BinaryLoader;
import ghidra.framework.cmd.BinaryAnalysisCommand; import ghidra.framework.cmd.BinaryAnalysisCommand;
import ghidra.framework.options.Options;
import ghidra.program.flatapi.FlatProgramAPI; import ghidra.program.flatapi.FlatProgramAPI;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
@ -46,9 +45,7 @@ public class CoffBinaryAnalysisCommand extends FlatProgramAPI
@Override @Override
public boolean canApply(Program program) { public boolean canApply(Program program) {
try { try {
Options options = program.getOptions(Program.PROGRAM_INFO); if (!BinaryLoader.BINARY_NAME.equals(program.getExecutableFormat())) {
String format = options.getString("Executable Format", null);
if (!BinaryLoader.BINARY_NAME.equals(format)) {
return false; return false;
} }

View file

@ -27,7 +27,6 @@ import ghidra.app.util.bin.format.elf.ElfDynamicType.ElfDynamicValueType;
import ghidra.app.util.importer.MessageLog; import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.BinaryLoader; import ghidra.app.util.opinion.BinaryLoader;
import ghidra.framework.cmd.BinaryAnalysisCommand; import ghidra.framework.cmd.BinaryAnalysisCommand;
import ghidra.framework.options.Options;
import ghidra.program.flatapi.FlatProgramAPI; import ghidra.program.flatapi.FlatProgramAPI;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressOverflowException; import ghidra.program.model.address.AddressOverflowException;
@ -54,9 +53,7 @@ public class ElfBinaryAnalysisCommand extends FlatProgramAPI
@Override @Override
public boolean canApply(Program program) { public boolean canApply(Program program) {
try { try {
Options options = program.getOptions(Program.PROGRAM_INFO); if (!BinaryLoader.BINARY_NAME.equals(program.getExecutableFormat())) {
String format = options.getString("Executable Format", null);
if (!BinaryLoader.BINARY_NAME.equals(format)) {
return false; return false;
} }
Memory memory = program.getMemory(); Memory memory = program.getMemory();

View file

@ -27,7 +27,6 @@ import ghidra.app.util.bin.format.macho.commands.UnsupportedLoadCommand;
import ghidra.app.util.importer.MessageLog; import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.BinaryLoader; import ghidra.app.util.opinion.BinaryLoader;
import ghidra.framework.cmd.BinaryAnalysisCommand; import ghidra.framework.cmd.BinaryAnalysisCommand;
import ghidra.framework.options.Options;
import ghidra.program.flatapi.FlatProgramAPI; import ghidra.program.flatapi.FlatProgramAPI;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataType;
@ -63,9 +62,7 @@ public class MachoBinaryAnalysisCommand extends FlatProgramAPI
@Override @Override
public boolean canApply(Program program) { public boolean canApply(Program program) {
try { try {
Options options = program.getOptions(Program.PROGRAM_INFO); if (!BinaryLoader.BINARY_NAME.equals(program.getExecutableFormat())) {
String format = options.getString("Executable Format", null);
if (!BinaryLoader.BINARY_NAME.equals(format)) {
return false; return false;
} }
Memory memory = program.getMemory(); Memory memory = program.getMemory();

View file

@ -19,7 +19,6 @@ import ghidra.app.services.*;
import ghidra.app.util.importer.MessageLog; import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.ElfLoader; import ghidra.app.util.opinion.ElfLoader;
import ghidra.app.util.opinion.MachoLoader; import ghidra.app.util.opinion.MachoLoader;
import ghidra.framework.options.Options;
import ghidra.program.model.address.AddressSetView; import ghidra.program.model.address.AddressSetView;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.program.util.ExternalSymbolResolver; import ghidra.program.util.ExternalSymbolResolver;
@ -57,8 +56,7 @@ public class ExternalSymbolResolverAnalyzer extends AbstractAnalyzer {
return false; return false;
} }
Options options = program.getOptions(Program.PROGRAM_INFO); String format = program.getExecutableFormat();
String format = options.getString("Executable Format", null);
return ElfLoader.ELF_NAME.equals(format) || MachoLoader.MACH_O_NAME.equals(format); return ElfLoader.ELF_NAME.equals(format) || MachoLoader.MACH_O_NAME.equals(format);
} }

View file

@ -91,8 +91,7 @@ public class MachoFunctionStartsAnalyzer extends AbstractAnalyzer {
@Override @Override
public boolean canAnalyze(Program program) { public boolean canAnalyze(Program program) {
Options options = program.getOptions(Program.PROGRAM_INFO); String format = program.getExecutableFormat();
String format = options.getString("Executable Format", null);
isDyld = DyldCacheLoader.DYLD_CACHE_NAME.equals(format); isDyld = DyldCacheLoader.DYLD_CACHE_NAME.equals(format);
return isDyld || MachoLoader.MACH_O_NAME.equals(format); return isDyld || MachoLoader.MACH_O_NAME.equals(format);
} }

View file

@ -22,7 +22,6 @@ import ghidra.app.plugin.core.analysis.rust.RustConstants;
import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler; import ghidra.app.plugin.core.datamgr.archive.DataTypeManagerHandler;
import ghidra.app.util.opinion.*; import ghidra.app.util.opinion.*;
import ghidra.framework.Application; import ghidra.framework.Application;
import ghidra.framework.options.Options;
import ghidra.program.model.data.FileDataTypeManager; import ghidra.program.model.data.FileDataTypeManager;
import ghidra.program.model.listing.Program; import ghidra.program.model.listing.Program;
import ghidra.util.Msg; import ghidra.util.Msg;
@ -116,13 +115,12 @@ public class DataTypeArchiveUtility {
public static List<String> getArchiveList(Program program) { public static List<String> getArchiveList(Program program) {
List<String> list = new ArrayList<String>(); List<String> list = new ArrayList<String>();
Options props = program.getOptions(Program.PROGRAM_INFO); String format = program.getExecutableFormat();
String format = props.getString("Executable Format", "");
int size = program.getAddressFactory().getDefaultAddressSpace().getSize(); int size = program.getAddressFactory().getDefaultAddressSpace().getSize();
if (format.equals(PeLoader.PE_NAME) || if (PeLoader.PE_NAME.equals(format) ||
(format.equals(CoffLoader.COFF_NAME) && isVisualStudio(program))) { (CoffLoader.COFF_NAME.equals(format) && isVisualStudio(program))) {
// TODO: add in win7/win10 // TODO: add in win7/win10
if (size == 64) { if (size == 64) {
list.add("windows_vs12_64"); list.add("windows_vs12_64");
@ -131,7 +129,7 @@ public class DataTypeArchiveUtility {
list.add("windows_vs12_32"); list.add("windows_vs12_32");
} }
} }
else if (format.equals(MachoLoader.MACH_O_NAME)) { else if (MachoLoader.MACH_O_NAME.equals(format)) {
// list.add("Cocoa"); // no more cocoa puffs for you // list.add("Cocoa"); // no more cocoa puffs for you
// TODO: should we have a 64/32 version? // TODO: should we have a 64/32 version?
// TODO: multiple OSX versions // TODO: multiple OSX versions

View file

@ -20,7 +20,6 @@ import ghidra.app.services.AnalyzerType;
import ghidra.app.util.bin.*; import ghidra.app.util.bin.*;
import ghidra.app.util.importer.MessageLog; import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.BinaryLoader; import ghidra.app.util.opinion.BinaryLoader;
import ghidra.framework.options.Options;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressSetView; import ghidra.program.model.address.AddressSetView;
import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataType;
@ -48,9 +47,7 @@ public class CramFsAnalyzer extends AbstractAnalyzer {
@Override @Override
public boolean canAnalyze(Program program) { public boolean canAnalyze(Program program) {
try { try {
Options options = program.getOptions(Program.PROGRAM_INFO); if (!BinaryLoader.BINARY_NAME.equals(program.getExecutableFormat())) {
String format = options.getString("Executable Format", null);
if (!BinaryLoader.BINARY_NAME.equals(format)) {
return false; return false;
} }
Language language = program.getLanguage(); Language language = program.getLanguage();

View file

@ -24,7 +24,6 @@ import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.*; import ghidra.app.util.opinion.*;
import ghidra.file.formats.dump.DumpFile; import ghidra.file.formats.dump.DumpFile;
import ghidra.file.formats.dump.DumpFileReader; import ghidra.file.formats.dump.DumpFileReader;
import ghidra.framework.options.Options;
import ghidra.framework.store.LockException; import ghidra.framework.store.LockException;
import ghidra.program.database.mem.FileBytes; import ghidra.program.database.mem.FileBytes;
import ghidra.program.model.address.*; import ghidra.program.model.address.*;
@ -53,8 +52,7 @@ public class Apport extends DumpFile {
super(reader, dtm, options, monitor); super(reader, dtm, options, monitor);
this.log = log; this.log = log;
Options props = program.getOptions(Program.PROGRAM_INFO); program.setExecutableFormat(PeLoader.PE_NAME);
props.setString("Executable Format", PeLoader.PE_NAME);
initManagerList(null); initManagerList(null);
header = new ApportHeader(reader, 0L, monitor); header = new ApportHeader(reader, 0L, monitor);

View file

@ -24,9 +24,7 @@ import ghidra.app.util.bin.StructConverter;
import ghidra.app.util.opinion.PeLoader; import ghidra.app.util.opinion.PeLoader;
import ghidra.file.formats.dump.*; import ghidra.file.formats.dump.*;
import ghidra.file.formats.dump.cmd.ModuleToPeHelper; import ghidra.file.formats.dump.cmd.ModuleToPeHelper;
import ghidra.framework.options.Options;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.program.model.listing.Program;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
@ -44,8 +42,7 @@ public class Minidump extends DumpFile {
super(reader, dtm, options, monitor); super(reader, dtm, options, monitor);
Options props = program.getOptions(Program.PROGRAM_INFO); program.setExecutableFormat(PeLoader.PE_NAME);
props.setString("Executable Format", PeLoader.PE_NAME);
initManagerList(null); initManagerList(null);
createBlocks = createBlocks =

View file

@ -29,9 +29,7 @@ import ghidra.app.util.opinion.PeLoader;
import ghidra.app.util.pdb.pdbapplicator.*; import ghidra.app.util.pdb.pdbapplicator.*;
import ghidra.file.formats.dump.*; import ghidra.file.formats.dump.*;
import ghidra.file.formats.dump.cmd.ModuleToPeHelper; import ghidra.file.formats.dump.cmd.ModuleToPeHelper;
import ghidra.framework.options.Options;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.program.model.listing.Program;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.exception.CancelledException; import ghidra.util.exception.CancelledException;
import ghidra.util.exception.DuplicateNameException; import ghidra.util.exception.DuplicateNameException;
@ -109,8 +107,7 @@ public class Pagedump extends DumpFile {
addins.add("ntoskrnl"); addins.add("ntoskrnl");
addins.add("ntkrnlmp"); addins.add("ntkrnlmp");
Options props = program.getOptions(Program.PROGRAM_INFO); program.setExecutableFormat(PeLoader.PE_NAME);
props.setString("Executable Format", PeLoader.PE_NAME);
initManagerList(addins); initManagerList(addins);
createBlocks = OptionUtils.getBooleanOptionValue(CREATE_MEMORY_BLOCKS_OPTION_NAME, options, createBlocks = OptionUtils.getBooleanOptionValue(CREATE_MEMORY_BLOCKS_OPTION_NAME, options,

View file

@ -24,9 +24,7 @@ import ghidra.app.util.OptionUtils;
import ghidra.app.util.opinion.PeLoader; import ghidra.app.util.opinion.PeLoader;
import ghidra.file.formats.dump.*; import ghidra.file.formats.dump.*;
import ghidra.file.formats.dump.cmd.ModuleToPeHelper; import ghidra.file.formats.dump.cmd.ModuleToPeHelper;
import ghidra.framework.options.Options;
import ghidra.program.model.data.*; import ghidra.program.model.data.*;
import ghidra.program.model.listing.Program;
import ghidra.util.Msg; import ghidra.util.Msg;
import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitor;
@ -42,8 +40,7 @@ public class Userdump extends DumpFile {
super(reader, dtm, options, monitor); super(reader, dtm, options, monitor);
Options props = program.getOptions(Program.PROGRAM_INFO); program.setExecutableFormat(PeLoader.PE_NAME);
props.setString("Executable Format", PeLoader.PE_NAME);
initManagerList(null); initManagerList(null);
createBlocks = createBlocks =

View file

@ -22,7 +22,6 @@ import ghidra.app.util.importer.MessageLog;
import ghidra.app.util.opinion.BinaryLoader; import ghidra.app.util.opinion.BinaryLoader;
import ghidra.app.util.opinion.DyldCacheUtils; import ghidra.app.util.opinion.DyldCacheUtils;
import ghidra.file.analyzers.FileFormatAnalyzer; import ghidra.file.analyzers.FileFormatAnalyzer;
import ghidra.framework.options.Options;
import ghidra.program.model.address.Address; import ghidra.program.model.address.Address;
import ghidra.program.model.address.AddressSetView; import ghidra.program.model.address.AddressSetView;
import ghidra.program.model.data.DataType; import ghidra.program.model.data.DataType;
@ -105,9 +104,7 @@ public class DyldCacheAnalyzer extends FileFormatAnalyzer {
@Override @Override
public boolean canAnalyze(Program program) { public boolean canAnalyze(Program program) {
Options options = program.getOptions("Program Information"); if (!BinaryLoader.BINARY_NAME.equals(program.getExecutableFormat())) {
String format = options.getString("Executable Format", null);
if (!BinaryLoader.BINARY_NAME.equals(format)) {
return false; return false;
} }
return DyldCacheUtils.isDyldCache(program); return DyldCacheUtils.isDyldCache(program);