[package] name = "memflow" version = "0.2.3" authors = ["ko1N ", "Aurimas Blažulionis <0x60@pm.me>"] edition = "2018" description = "core components of the memflow physical memory introspection framework" documentation = "https://docs.rs/memflow" readme = "../README.md" homepage = "https://memflow.github.io" repository = "https://github.com/memflow/memflow" license = "MIT" keywords = [ "memflow", "introspection", "memory", "dma" ] categories = [ "memory-management", "os" ] rust-version = "1.74.0" [badges] maintenance = { status = "actively-developed" } codecov = { repository = "github", branch = "master", service = "github" } [dependencies] memflow-derive = { version = "0.2", path = "../memflow-derive" } dataview = { version = "1.0", default-features = false } log = { version = "0.4", default-features = false } # we keep bitflags on version 1.x due to the various issues with cbindgen macro expansion and other issues bitflags = "1.3" coarsetime = { version = "0.1", optional = true } x86_64 = { version = "0.14", default-features = false } rand = { version = "0.8", optional = true } rand_xorshift = { version = "0.3", optional = true } bumpalo = { version = "3.15", features = ["collections"] } no-std-compat = { version = "0.4", features = ["alloc"] } itertools = { version = "0.12", default-features = false } memmap = { version = "0.7", optional = true } hashbrown = "0.14" fixed-slice-vec = "0.10" cglue = { version = "=0.2.14", default-features = false } rangemap = "1.5" # no-std smallvec = { version = "1.13", default-features = false } # plugins libloading = { version = "0.8", optional = true } dirs = { version = "5.0", optional = true } # enable unsafe_alignment for now, this is UB, but the idea is to fix pelite in upstream pelite = { version = "=0.9.0", optional = true, default-features = false, features = ["unsafe_alignment"] } # we pin abi_stable to prevent abi incompatabilities by different versions abi_stable = { version = "=0.10.3", optional = true } once_cell = { version = "1.19", optional = true } goblin = { version = "0.8.1", optional = true, features = ["pe32", "pe64", "elf32", "elf64", "mach32", "mach64"] } serde = { version = "1.0", optional = true, default-features = false, features = ["derive", "alloc"] } toml = { version = "0.8", optional = true } # plugin analyzer num-traits = { version = "0.2", optional = true } # registry serde_json = { version = "1.0", optional = true } chrono = { version = "0.4", optional = true, features = ["serde"] } [dev-dependencies] rand = { version = "0.8" } rand_xorshift = "0.3" clap = { version = "4.5", features = ["cargo"] } simplelog = "0.12" rayon = "1.5" colored = "2.0" [features] default = ["std", "serde_derive", "plugins", "os_helpers", "filemap", "memmapfiles", "64_bit_mem"] #trace_mmu = [] # enables debug traces in the mmu (very verbose) dummy_mem = ["rand", "rand_xorshift"] std = ["coarsetime", "no-std-compat/std", "cglue/std"] serde_derive = ["serde", "cglue/serde"] memmapfiles = ["toml", "serde_derive"] plugins = ["libloading", "dirs", "goblin", "os_helpers", "abi_stable", "cglue/layout_checks", "log/std", "once_cell", "num-traits", "serde_json", "chrono"] filemap = ["memmap"] 64_bit_mem = [] os_helpers = ["goblin", "pelite"] # Until https://github.com/m4b/goblin/pull/386 is merged unstable_goblin_lossy_macho = [] # use 128 bit addressing. # If 64_bit_mem is also enabled, 64-bit mode takes precedence. # This is because 128-bit mode is not necessary to date, and u128 is not FFI-safe. 128_bit_mem = [] [[example]] name = "read_bench" path = "examples/read_bench.rs" [[example]] name = "multithreading" path = "examples/multithreading.rs" [[example]] name = "integration" path = "examples/integration.rs" [[example]] name = "process_list" path = "examples/process_list.rs" [[example]] name = "kernel_modules" path = "examples/kernel_modules.rs" [[example]] name = "kernel_exports" path = "examples/kernel_exports.rs" [[example]] name = "kernel_maps" path = "examples/kernel_maps.rs" [[example]] name = "keyboard" path = "examples/keyboard.rs" [[example]] name = "target_list" path = "examples/target_list.rs"