From 04b63229646ffec37c8d1fd043c95cab1ba9fc32 Mon Sep 17 00:00:00 2001 From: Ryan Kurtz Date: Wed, 25 Mar 2026 09:07:49 -0400 Subject: [PATCH] GP-0: Stronger ObjcMessageAnalzyer.canAnalyze() check (prevents it from running on Swift-only programs) --- .../plugin/core/analysis/ObjcMessageAnalyzer.java | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/analysis/ObjcMessageAnalyzer.java b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/analysis/ObjcMessageAnalyzer.java index 3b18d0836b..f2f594b55a 100644 --- a/Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/analysis/ObjcMessageAnalyzer.java +++ b/Ghidra/Features/Decompiler/src/main/java/ghidra/app/plugin/core/analysis/ObjcMessageAnalyzer.java @@ -89,7 +89,18 @@ public class ObjcMessageAnalyzer extends AbstractAnalyzer { @Override public boolean canAnalyze(Program program) { - return Objc2Constants.isObjectiveC2(program); + if (Objc2Constants.isObjectiveC2(program)) { + Memory mem = program.getMemory(); + if (mem.getBlock(Objc2Constants.OBJC2_STUBS) != null) { + return true; + } + for (Symbol s : program.getSymbolTable().getExternalSymbols()) { + if (s.getName().startsWith(Objc1Constants.OBJC_MSG_SEND)) { + return true; + } + } + } + return false; } @Override