Merge branch 'GP-0_ryanmkurtz_PR-7885_cyberkaida_stripped-rust-detect'

This commit is contained in:
Ryan Kurtz 2025-03-20 13:28:59 -04:00
commit 85b24c686d
2 changed files with 13 additions and 5 deletions

View file

@ -21,6 +21,7 @@ public class RustConstants {
public static final CategoryPath RUST_CATEGORYPATH = new CategoryPath("/rust"); public static final CategoryPath RUST_CATEGORYPATH = new CategoryPath("/rust");
public static final byte[] RUST_SIGNATURE_1 = "RUST_BACKTRACE".getBytes(); public static final byte[] RUST_SIGNATURE_1 = "RUST_BACKTRACE".getBytes();
public static final byte[] RUST_SIGNATURE_2 = "/rustc/".getBytes(); public static final byte[] RUST_SIGNATURE_2 = "/rustc/".getBytes();
public static final byte[] RUST_SIGNATURE_3 = "RUST_MIN_STACK".getBytes();
public static final String RUST_EXTENSIONS_PATH = "extensions/rust/"; public static final String RUST_EXTENSIONS_PATH = "extensions/rust/";
public static final String RUST_EXTENSIONS_UNIX = "unix"; public static final String RUST_EXTENSIONS_UNIX = "unix";
public static final String RUST_EXTENSIONS_WINDOWS = "windows"; public static final String RUST_EXTENSIONS_WINDOWS = "windows";

View file

@ -38,6 +38,10 @@ import ghidra.xml.XmlParseException;
public class RustUtilities { public class RustUtilities {
/** /**
* Checks if a given {@link MemoryBlock} contains a Rust signature * Checks if a given {@link MemoryBlock} contains a Rust signature
* <p>
* This may be used by loaders to determine if a program was compiled with rust.
* If the program is determined to be rust, then the compiler property is set to
* {@link RustConstants#RUST_COMPILER}.
* *
* @param block The {@link MemoryBlock} to scan for Rust signatures * @param block The {@link MemoryBlock} to scan for Rust signatures
* @return True if the given {@link MemoryBlock} is not null and contains a Rust signature; * @return True if the given {@link MemoryBlock} is not null and contains a Rust signature;
@ -55,6 +59,9 @@ public class RustUtilities {
if (containsBytes(bytes, RustConstants.RUST_SIGNATURE_2)) { if (containsBytes(bytes, RustConstants.RUST_SIGNATURE_2)) {
return true; return true;
} }
if (containsBytes(bytes, RustConstants.RUST_SIGNATURE_3)) {
return true;
}
return false; return false;
} }