mirror of
https://codeberg.org/KeybadeBlox/JSRF-Decompilation.git
synced 2026-02-20 10:17:03 +03:00
Use enhanced for loops in Ghidra mangler script
This commit is contained in:
parent
1e8ae0f72f
commit
e0c9fc4c83
1 changed files with 12 additions and 17 deletions
|
|
@ -59,7 +59,6 @@ import ghidra.program.model.symbol.Namespace;
|
||||||
import ghidra.program.model.symbol.Reference;
|
import ghidra.program.model.symbol.Reference;
|
||||||
import ghidra.program.model.symbol.SourceType;
|
import ghidra.program.model.symbol.SourceType;
|
||||||
import ghidra.program.model.symbol.Symbol;
|
import ghidra.program.model.symbol.Symbol;
|
||||||
import ghidra.program.model.symbol.SymbolIterator;
|
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
|
@ -86,12 +85,8 @@ public class MSVC7Mangle extends GhidraScript{
|
||||||
setCurrentSelection(addr);
|
setCurrentSelection(addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
final SymbolIterator iter = currentProgram.getSymbolTable()
|
for (final Symbol s : currentProgram.getSymbolTable()
|
||||||
.getPrimarySymbolIterator(currentSelection, true);
|
.getPrimarySymbolIterator(currentSelection, true)) {
|
||||||
|
|
||||||
while (iter.hasNext() && !monitor.isCancelled()) {
|
|
||||||
final Symbol s = iter.next();
|
|
||||||
|
|
||||||
mangle(s);
|
mangle(s);
|
||||||
|
|
||||||
// Also mangle everything referenced inside functions
|
// Also mangle everything referenced inside functions
|
||||||
|
|
@ -303,9 +298,9 @@ public class MSVC7Mangle extends GhidraScript{
|
||||||
scalar deleting destructor.
|
scalar deleting destructor.
|
||||||
*/
|
*/
|
||||||
final Reference[] refs = getReferencesTo(f.getEntryPoint());
|
final Reference[] refs = getReferencesTo(f.getEntryPoint());
|
||||||
for (int i = 0; i < refs.length; i++) {
|
for (final Reference ref : refs) {
|
||||||
final Data data = getDataContaining (refs[i].getFromAddress());
|
final Data data = getDataContaining (ref.getFromAddress());
|
||||||
final Function func = getFunctionContaining(refs[i].getFromAddress());
|
final Function func = getFunctionContaining(ref.getFromAddress());
|
||||||
|
|
||||||
if (data != null) {
|
if (data != null) {
|
||||||
final Symbol s = getSymbolAt(data.getRoot()
|
final Symbol s = getSymbolAt(data.getRoot()
|
||||||
|
|
@ -481,12 +476,12 @@ public class MSVC7Mangle extends GhidraScript{
|
||||||
// freaks out at is actually useful (and Optional still
|
// freaks out at is actually useful (and Optional still
|
||||||
// helped us out here)
|
// helped us out here)
|
||||||
String mangledArgs = "";
|
String mangledArgs = "";
|
||||||
for (int i = 0; i < args.length; i++) {
|
for (final DataType arg : args) {
|
||||||
final String mangledArg = mangleType(args[i], dict, loc);
|
final String mangledArg = mangleType(arg, dict, loc);
|
||||||
|
|
||||||
mangledArgs += mangledArg.length() == 1 ?
|
mangledArgs += mangledArg.length() == 1 ?
|
||||||
mangledArg :
|
mangledArg :
|
||||||
backref(args[i], argDict).orElse(mangledArg);
|
backref(arg, argDict).orElse(mangledArg);
|
||||||
}
|
}
|
||||||
return mangledArgs + (f.hasVarArgs() ? "Z" : "@");
|
return mangledArgs + (f.hasVarArgs() ? "Z" : "@");
|
||||||
}
|
}
|
||||||
|
|
@ -592,8 +587,8 @@ public class MSVC7Mangle extends GhidraScript{
|
||||||
ins = ins.getNext()
|
ins = ins.getNext()
|
||||||
) {
|
) {
|
||||||
final Reference[] refs = ins.getReferencesFrom();
|
final Reference[] refs = ins.getReferencesFrom();
|
||||||
for (int i = 0; i < refs.length; i++) {
|
for (final Reference ref : refs) {
|
||||||
final Symbol symbol = getSymbolAt(refs[i].getToAddress());
|
final Symbol symbol = getSymbolAt(ref.getToAddress());
|
||||||
|
|
||||||
// Guard against spurious references to nonexisting things
|
// Guard against spurious references to nonexisting things
|
||||||
if (
|
if (
|
||||||
|
|
@ -605,10 +600,10 @@ public class MSVC7Mangle extends GhidraScript{
|
||||||
d.getBaseDataType() instanceof Undefined ||
|
d.getBaseDataType() instanceof Undefined ||
|
||||||
d.getBaseDataType() instanceof DefaultDataType
|
d.getBaseDataType() instanceof DefaultDataType
|
||||||
) &&
|
) &&
|
||||||
refs[i].getSource() != SourceType.USER_DEFINED
|
ref.getSource() != SourceType.USER_DEFINED
|
||||||
)
|
)
|
||||||
) {
|
) {
|
||||||
removeReference(refs[i]);
|
removeReference(ref);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue