Skip to content

Commit f1a79bd

Browse files
committed
WIP ship Minidump view
Still need to do some prelim PE/ELF parsing to get linear sweep to run probably just going to throw this up as an example for glenn whenever he gets back to containers
1 parent fdff8c8 commit f1a79bd

File tree

4 files changed

+304
-217
lines changed

4 files changed

+304
-217
lines changed

Cargo.lock

Lines changed: 15 additions & 15 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

view/minidump/CMakeLists.txt

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
cmake_minimum_required(VERSION 3.9 FATAL_ERROR)
2+
3+
project(view_minidump)
4+
5+
file(GLOB_RECURSE PLUGIN_SOURCES CONFIGURE_DEPENDS
6+
${PROJECT_SOURCE_DIR}/Cargo.toml
7+
${PROJECT_SOURCE_DIR}/src/*.rs)
8+
9+
file(GLOB API_SOURCES CONFIGURE_DEPENDS
10+
${PROJECT_SOURCE_DIR}/../../binaryninjacore.h
11+
${PROJECT_SOURCE_DIR}/../../rust/binaryninjacore-sys/build.rs
12+
${PROJECT_SOURCE_DIR}/../../rust/binaryninjacore-sys/Cargo.toml
13+
${PROJECT_SOURCE_DIR}/../../rust/binaryninjacore-sys/src/*
14+
${PROJECT_SOURCE_DIR}/../../rust/Cargo.toml
15+
${PROJECT_SOURCE_DIR}/../../rust/src/*/*.rs)
16+
17+
if(CMAKE_BUILD_TYPE MATCHES Debug)
18+
set(TARGET_DIR ${PROJECT_BINARY_DIR}/target/debug)
19+
set(CARGO_OPTS --target-dir=${PROJECT_BINARY_DIR}/target)
20+
else()
21+
set(TARGET_DIR ${PROJECT_BINARY_DIR}/target/release)
22+
set(CARGO_OPTS --target-dir=${PROJECT_BINARY_DIR}/target --release)
23+
set(OUTPUT_PDB_NAME ${CMAKE_SHARED_LIBRARY_PREFIX}view_minidump.pdb)
24+
endif()
25+
26+
set(OUTPUT_FILE ${CMAKE_STATIC_LIBRARY_PREFIX}view_minidump${CMAKE_SHARED_LIBRARY_SUFFIX})
27+
set(PLUGIN_PATH ${TARGET_DIR}/${OUTPUT_FILE})
28+
29+
add_custom_target(view_minidump ALL DEPENDS ${PLUGIN_PATH})
30+
add_dependencies(view_minidump binaryninjaapi)
31+
32+
find_program(RUSTUP_PATH rustup REQUIRED HINTS ~/.cargo/bin)
33+
if(CARGO_API_VERSION)
34+
set(RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_API_VERSION} cargo build)
35+
else()
36+
set(RUSTUP_COMMAND ${RUSTUP_PATH} run ${CARGO_STABLE_VERSION} cargo build)
37+
endif()
38+
39+
if(APPLE)
40+
if(UNIVERSAL)
41+
if(CMAKE_BUILD_TYPE MATCHES Debug)
42+
set(AARCH64_LIB_PATH ${PROJECT_BINARY_DIR}/target/aarch64-apple-darwin/debug/${OUTPUT_FILE})
43+
set(X86_64_LIB_PATH ${PROJECT_BINARY_DIR}/target/x86_64-apple-darwin/debug/${OUTPUT_FILE})
44+
else()
45+
set(AARCH64_LIB_PATH ${PROJECT_BINARY_DIR}/target/aarch64-apple-darwin/release/${OUTPUT_FILE})
46+
set(X86_64_LIB_PATH ${PROJECT_BINARY_DIR}/target/x86_64-apple-darwin/release/${OUTPUT_FILE})
47+
endif()
48+
49+
add_custom_command(
50+
OUTPUT ${PLUGIN_PATH}
51+
COMMAND ${CMAKE_COMMAND} -E env
52+
MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR}
53+
${RUSTUP_COMMAND} --target=aarch64-apple-darwin ${CARGO_OPTS}
54+
COMMAND ${CMAKE_COMMAND} -E env
55+
MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR}
56+
${RUSTUP_COMMAND} --target=x86_64-apple-darwin ${CARGO_OPTS}
57+
COMMAND mkdir -p ${TARGET_DIR}
58+
COMMAND lipo -create ${AARCH64_LIB_PATH} ${X86_64_LIB_PATH} -output ${PLUGIN_PATH}
59+
COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
60+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
61+
DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES})
62+
else()
63+
if(CMAKE_BUILD_TYPE MATCHES Debug)
64+
set(LIB_PATH ${PROJECT_BINARY_DIR}/target/debug/${OUTPUT_FILE})
65+
else()
66+
set(LIB_PATH ${PROJECT_BINARY_DIR}/target/release/${OUTPUT_FILE})
67+
endif()
68+
69+
add_custom_command(
70+
OUTPUT ${PLUGIN_PATH}
71+
COMMAND ${CMAKE_COMMAND} -E env MACOSX_DEPLOYMENT_TARGET=10.14 BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS}
72+
COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
73+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
74+
DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES})
75+
endif()
76+
elseif(WIN32)
77+
add_custom_command(
78+
OUTPUT ${PLUGIN_PATH}
79+
COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS}
80+
COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
81+
COMMAND ${CMAKE_COMMAND} -E copy ${TARGET_DIR}/${OUTPUT_PDB_NAME} ${BN_CORE_PLUGIN_DIR}
82+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
83+
DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES})
84+
else()
85+
add_custom_command(
86+
OUTPUT ${PLUGIN_PATH}
87+
COMMAND ${CMAKE_COMMAND} -E env BINARYNINJADIR=${BN_CORE_OUTPUT_DIR} ${RUSTUP_COMMAND} ${CARGO_OPTS}
88+
COMMAND ${CMAKE_COMMAND} -E copy ${PLUGIN_PATH} ${BN_CORE_PLUGIN_DIR}
89+
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
90+
DEPENDS ${PLUGIN_SOURCES} ${API_SOURCES})
91+
endif()

view/minidump/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
[package]
2-
name = "minidump_bn"
2+
name = "view_minidump"
33
version = "0.1.0"
44
edition = "2021"
55
license = "Apache-2.0"
@@ -11,4 +11,4 @@ crate-type = ["cdylib"]
1111
binaryninja.workspace = true
1212
binaryninjacore-sys.workspace = true
1313
log = "0.4"
14-
minidump = "0.23.0"
14+
minidump = "0.24.1"

0 commit comments

Comments
 (0)