From 021fb21871cca01bf4b27bd9d9731c5b8836b651 Mon Sep 17 00:00:00 2001 From: TSR Berry <20988865+TSRBerry@users.noreply.github.com> Date: Sun, 21 May 2023 22:22:49 +0200 Subject: [PATCH] Upgrade to Ghidra 10.3 --- build.gradle | 1 + gradlew | 0 .../adubbz/nx/analyzer/ipc/IPCEmulator.java | 20 +++---- .../java/adubbz/nx/loader/SwitchLoader.java | 21 ++++---- .../nx/loader/common/NXProgramBuilder.java | 54 +++++++++---------- 5 files changed, 43 insertions(+), 53 deletions(-) mode change 100644 => 100755 gradlew diff --git a/build.gradle b/build.gradle index 155ab0f..bb3b2f7 100644 --- a/build.gradle +++ b/build.gradle @@ -60,6 +60,7 @@ configurations { dependencies { api fileTree(dir: ghidraInstallDir + '/Ghidra/Processors', include: "**/*.jar") + implementation 'commons-primitives:commons-primitives:1.0' localDeps group: 'org.lz4', name: 'lz4-java', version: '1.5.1' api configurations.localDeps } diff --git a/gradlew b/gradlew old mode 100644 new mode 100755 diff --git a/src/main/java/adubbz/nx/analyzer/ipc/IPCEmulator.java b/src/main/java/adubbz/nx/analyzer/ipc/IPCEmulator.java index b9b1bc4..251a6e1 100644 --- a/src/main/java/adubbz/nx/analyzer/ipc/IPCEmulator.java +++ b/src/main/java/adubbz/nx/analyzer/ipc/IPCEmulator.java @@ -6,13 +6,6 @@ */ package adubbz.nx.analyzer.ipc; -import java.nio.ByteBuffer; -import java.util.List; -import java.util.function.Consumer; -import java.util.function.Supplier; - -import org.apache.commons.compress.utils.Lists; - import adubbz.nx.util.ByteUtil; import ghidra.app.plugin.processors.sleigh.SleighLanguage; import ghidra.app.util.bin.BinaryReader; @@ -21,10 +14,7 @@ import ghidra.pcode.emulate.BreakTableCallBack; import ghidra.pcode.emulate.Emulate; import ghidra.pcode.error.LowlevelError; -import ghidra.pcode.memstate.MemoryBank; -import ghidra.pcode.memstate.MemoryFaultHandler; -import ghidra.pcode.memstate.MemoryPageBank; -import ghidra.pcode.memstate.MemoryState; +import ghidra.pcode.memstate.*; import ghidra.pcode.utils.Utils; import ghidra.program.database.ProgramDB; import ghidra.program.database.code.CodeManager; @@ -42,6 +32,12 @@ import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; import ghidra.util.task.TaskMonitorAdapter; +import org.apache.commons.compress.utils.Lists; + +import java.nio.ByteBuffer; +import java.util.List; +import java.util.function.Consumer; +import java.util.function.Supplier; public class IPCEmulator { @@ -121,7 +117,7 @@ public boolean unknownAddress(Address address, boolean write) }; this.sLang = (SleighLanguage)this.program.getLanguage(); - this.state = new MemoryState(this.sLang); + this.state = new DefaultMemoryState(this.sLang); // Create banks for ram and registers and add them to our state this.ramBank = new MemoryPageBank(this.sLang.getAddressFactory().getDefaultAddressSpace(), false, 4096, faultHandler); diff --git a/src/main/java/adubbz/nx/loader/SwitchLoader.java b/src/main/java/adubbz/nx/loader/SwitchLoader.java index a11ffbc..36870be 100644 --- a/src/main/java/adubbz/nx/loader/SwitchLoader.java +++ b/src/main/java/adubbz/nx/loader/SwitchLoader.java @@ -27,7 +27,7 @@ import ghidra.app.util.opinion.BinaryLoader; import ghidra.app.util.opinion.LoadSpec; import ghidra.app.util.opinion.LoaderTier; -import ghidra.framework.model.DomainFolder; +import ghidra.framework.model.Project; import ghidra.framework.store.LockException; import ghidra.program.model.address.Address; import ghidra.program.model.address.AddressOutOfBoundsException; @@ -38,6 +38,7 @@ import ghidra.program.model.lang.LanguageCompilerSpecPair; import ghidra.program.model.lang.LanguageID; import ghidra.program.model.listing.Program; +import ghidra.app.util.opinion.Loaded; import ghidra.util.Msg; import ghidra.util.exception.CancelledException; import ghidra.util.task.TaskMonitor; @@ -99,10 +100,7 @@ else if (magic_0x10.equals("KIP1")) } @Override - protected List loadProgram(ByteProvider provider, String programName, - DomainFolder programFolder, LoadSpec loadSpec, List