Codebase list rust-serde-xml-rs / 54d9ded
goblin: rebase of the patches Sylvestre Ledru 4 years ago
3 changed file(s) with 9 addition(s) and 86 deletion(s). Raw diff Collapse all Expand all
0 --- a/tests/archive.rs
1 +++ b/tests/archive.rs
2 @@ -50,6 +50,7 @@
3 }
4
0 Index: goblin/tests/archive.rs
1 ===================================================================
2 --- goblin.orig/tests/archive.rs
3 +++ goblin/tests/archive.rs
4 @@ -63,6 +63,7 @@ fn get_libgoblin_rlib() -> PathBuf {
5 // Cannot run this on Windows because *.rlib type on Windows is unknown
6 #[cfg(not(windows))]
57 #[test]
68 +#[ignore]
79 fn parse_self() {
8 use std::fs;
9 use std::io::Read;
10 let path = get_libgoblin_rlib();
11 let buffer = fs::read(path).expect("run `cargo build` first?");
+0
-78
src/goblin/debian/patches/remove-dll-example.diff less more
0 --- a/examples/dotnet_pe_analysis.rs
1 +++ /dev/null
2 @@ -1,75 +0,0 @@
3 -/// Demonstrates how to read additional metadata (i.e. .Net runtime ones) from PE context
4 -
5 -use goblin::container::Endian;
6 -use goblin::pe::data_directories::DataDirectory;
7 -use goblin::pe::PE;
8 -use goblin::pe::utils::get_data;
9 -use scroll::ctx::TryFromCtx;
10 -use scroll::Pread;
11 -
12 -#[repr(C)]
13 -#[derive(Debug, Pread)]
14 -pub struct CliHeader {
15 - pub cb: u32,
16 - pub major_version: u16,
17 - pub minor_version: u16,
18 - pub metadata: DataDirectory,
19 - pub flags: u32,
20 - pub entry_point_token: u32,
21 -}
22 -
23 -#[repr(C)]
24 -#[derive(Debug)]
25 -struct MetadataRoot<'a> {
26 - pub signature: u32,
27 - pub major_version: u16,
28 - pub minor_version: u16,
29 - _reserved: u32,
30 - pub length: u32,
31 - pub version: &'a str,
32 -}
33 -
34 -impl<'a> TryFromCtx<'a, Endian> for MetadataRoot<'a> {
35 - type Error = scroll::Error;
36 - fn try_from_ctx(src: &'a [u8], endian: Endian) -> Result<(Self, usize), Self::Error> {
37 - let offset = &mut 0;
38 - let signature = src.gread_with(offset, endian)?;
39 - let major_version = src.gread_with(offset, endian)?;
40 - let minor_version = src.gread_with(offset, endian)?;
41 - let reserved = src.gread_with(offset, endian)?;
42 - let length = src.gread_with(offset, endian)?;
43 - let version = src.gread(offset)?;
44 - Ok((
45 - Self {
46 - signature,
47 - major_version,
48 - minor_version,
49 - _reserved: reserved,
50 - length,
51 - version,
52 - },
53 - *offset,
54 - ))
55 - }
56 -}
57 -
58 -fn main() {
59 - let file = include_bytes!("../assets/dotnet_executable_example.dll");
60 - let file = &file[..];
61 - let pe = PE::parse(file).unwrap();
62 - if pe.header.coff_header.machine != 0x14c {
63 - panic!("Is not a .Net executable");
64 - }
65 - let optional_header = pe.header.optional_header.expect("No optional header");
66 - let file_alignment = optional_header.windows_fields.file_alignment;
67 - let cli_header = optional_header
68 - .data_directories
69 - .get_clr_runtime_header()
70 - .expect("No CLI header");
71 - let sections = &pe.sections;
72 -
73 - let cli_header_value: CliHeader = get_data(file, sections, cli_header, file_alignment).unwrap();
74 - println!("{:#?}", cli_header_value);
75 - let metadata_root: MetadataRoot = get_data(file, sections, cli_header_value.metadata, file_alignment).unwrap();
76 - println!("{:#?}", metadata_root);
77 -}
0 remove-dll-example.diff
10 ignore_test_parse_self.diff