mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2026-05-22 23:29:07 +08:00
define a set that contains noreturn syscalls
hardcode noreturn function list Make LinuxSyscallsScript mark no-return functions This patch makes the script ResolveX86orX64LinuxSyscallsScript.javarecognize syscalls that do not return, and mark these functions asno-return. The list of non-return functions is read fromElfFunctionsThatDoNotReturn.
This commit is contained in:
@@ -65,6 +65,9 @@ public class ResolveX86orX64LinuxSyscallsScript extends GhidraScript {
|
||||
//native "syscall" instruction
|
||||
private static final String SYSCALL_X64_CALLOTHER = "syscall";
|
||||
|
||||
//a set of names of all syscalls that do not return
|
||||
private static final Set<String> noreturnSyscalls = Set.of("exit", "exit_group");
|
||||
|
||||
//tests whether an instruction is making a system call
|
||||
private Predicate<Instruction> tester;
|
||||
|
||||
@@ -179,6 +182,11 @@ public class ResolveX86orX64LinuxSyscallsScript extends GhidraScript {
|
||||
}
|
||||
callee = createFunction(callTarget, funcName);
|
||||
callee.setCallingConvention(callingConvention);
|
||||
|
||||
//check if the function name is one of the non-returning syscalls
|
||||
if (noreturnSyscalls.contains(funcName)) {
|
||||
callee.setNoReturn(true);
|
||||
}
|
||||
}
|
||||
Reference ref = currentProgram.getReferenceManager().addMemoryReference(callSite,
|
||||
callTarget, overrideType, SourceType.USER_DEFINED, Reference.MNEMONIC);
|
||||
|
||||
Reference in New Issue
Block a user