|
|
|
[package]
|
|
|
|
name = "memflow"
|
|
|
|
version = "0.2.1"
|
|
|
|
authors = ["ko1N <ko1N1337@gmail.com>", "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.70.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.0", default-features = false }
|
|
|
|
log = { version = "^0.4.14", 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.20", optional = true }
|
|
|
|
smallvec = { version = "^1.7.0", default-features = false }
|
|
|
|
x86_64 = { version = "0.14.8", default-features = false }
|
|
|
|
rand = { version = "^0.8.4", optional = true }
|
|
|
|
rand_xorshift = { version = "^0.3", optional = true }
|
|
|
|
bumpalo = { version = "^3.11.1", features = ["collections"] }
|
|
|
|
no-std-compat = { version = "^0.4.1", features = ["alloc"] }
|
|
|
|
itertools = { version = "^0.12.0", default-features = false }
|
|
|
|
memmap = { version = "^0.7.0", optional = true }
|
|
|
|
hashbrown = "^0.14"
|
|
|
|
fixed-slice-vec = "^0.10.0"
|
|
|
|
cglue = { version = ">=0.2.10", default-features = false }
|
|
|
|
rangemap = "^1.0"
|
|
|
|
|
|
|
|
# plugins
|
|
|
|
libloading = { version = "^0.8.1", optional = true }
|
|
|
|
dirs = { version = "^5.0.1", 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.9", optional = true }
|
|
|
|
|
|
|
|
goblin = { version = "0.8", optional = true, features = ["pe32", "pe64", "elf32", "elf64", "mach32", "mach64"] }
|
|
|
|
serde = { version = "^1.0.133", optional = true, default-features = false, features = ["derive", "alloc"] }
|
|
|
|
toml = { version = "^0.8", optional = true }
|
|
|
|
|
|
|
|
[dev-dependencies]
|
|
|
|
rand = { version = "^0.8.4" }
|
|
|
|
rand_xorshift = "^0.3"
|
|
|
|
clap = { version = "^4.0.15", features = ["cargo"] }
|
|
|
|
simplelog = "^0.12.0"
|
|
|
|
rayon = "^1.5.1"
|
|
|
|
colored = "^2.0.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"]
|
|
|
|
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"
|