[package] name = "xgadget" version = "0.11.1" authors = ["Tiemoko Ballo", "d3vco"] edition = "2018" license = "MIT" readme = "README.md" homepage = "https://github.com/entropic-security/xgadget" repository = "https://github.com/entropic-security/xgadget" documentation = "https://docs.rs/xgadget" keywords = ["rop", "jop", "gadget", "x86", "x64"] categories = ["algorithms", "development-tools", "command-line-utilities"] description = "Fast, parallel, cross-variant ROP/JOP gadget search for x86/x64 binaries." include = ["**/*.rs", "**/*.md", "**/*.sh", "Cargo.toml", "LICENSE"] [dependencies] # Library deps iced-x86 = "1" goblin = "0.7" rayon = "1" bitflags = "2" colored = "2" rustc-hash = "1" thiserror = "1" # CLI deps lazy_static = { version = "1", optional = true } clap = { version = "4", features = [ "cargo", "color", "derive", "env", ], optional = true } num_cpus = { version = "1", optional = true } regex = { version = "1", optional = true } term_size = { version = "0.3", optional = true } checksec = { version = "0.0.9", features = [ "elf", "pe", "color", ], optional = true } # TODO: temp duplicate until `checksec` upgrades its `goblin` dep version checksec_goblin = { package = "goblin", version = "0.5", optional = true } memmap = { version = "0.7", optional = true } num-format = { version = "0.4", optional = true } tabled = { version = "0.14", features = ["color"], optional = true } color-eyre = { version = "0.6", default-features = false, optional = true } [dev-dependencies] assert_cmd = "2" criterion = "0.3" dirs = "4" pprof = { version = "0.8", features = ["flamegraph"] } predicates = "2" rand = "0.8" regex = "1" strip-ansi-escapes = "0.2" tempfile = "3" [features] cli-bin = [ "lazy_static", "clap", "num_cpus", "regex", "term_size", "checksec", "checksec_goblin", "memmap", "num-format", "tabled", "color-eyre", ] [lib] name = "xgadget" path = "src/lib.rs" [[bin]] name = "xgadget" path = "src/cli/main.rs" required-features = ["cli-bin"] [[bench]] name = "bench_0_elf_userspace" harness = false [[bench]] name = "bench_1_filter" harness = false [[bench]] name = "bench_2_fmt" harness = false [[bench]] name = "bench_3_elf_kernels" harness = false [profile.release] panic = "unwind" opt-level = 3 debug = false rpath = false lto = "fat" debug-assertions = false codegen-units = 1 incremental = false overflow-checks = false [profile.bench] debug = true # TODO: lock to bench #[target.x86_64-unknown-linux-gnu] #linker = "/usr/bin/clang" #rustflags = ["-Clink-arg=-fuse-ld=lld", "-Clink-arg=-Wl,--no-rosegment"]