import ghidra.app.script.GhidraScript; import ghidra.program.model.listing.Function; import ghidra.program.model.symbol.Symbol; import ghidra.program.model.symbol.SymbolIterator; import ghidra.program.model.symbol.SymbolType; public class Diag extends GhidraScript { @Override public void run() throws Exception { int nf = 0; for (Function f : currentProgram.getFunctionManager().getFunctions(true)) { nf++; } println("FUNCTION_COUNT " + nf); String[] keys = {"Soothe2", "Spectral", "FilterGraph", "DigitalFilter", "IIRFilter", "LowPass", "ModuleBase", "Decryptor", "processBlock", "process"}; SymbolIterator si = currentProgram.getSymbolTable().getAllSymbols(true); int shown = 0; while (si.hasNext()) { Symbol s = si.next(); String name = s.getName(true); if (name == null) name = s.getName(); if (name == null) continue; for (String k : keys) { if (name.toLowerCase().contains(k.toLowerCase())) { println("SYMB " + name + " " + s.getAddress() + " " + s.getSymbolType()); shown++; break; } } } println("SYM_TOTAL " + shown); } }