Name Description Size
authenticode.rs 12128
certificate_table.rs 6901
characteristic.rs Constants for flags that indicate attributes of the object or image file. These flags are used in the [`goblin::pe::header::CoffHeader::characteristics`](crate::pe::header::CoffHeader::characteristics) field. 6060
data_directories.rs 5087
debug.rs 6186
dll_characteristic.rs Constants for characteristics of image files. These constants are used in the [`goblin::pe::optional_header::WindowsFields::dll_characteristics`](crate::pe::optional_header::WindowsFields::dll_characteristics) field. The values 0x0001, 0x0002, 0x0004, 0x0008 are reserved for future use and must be zero. 1498
exception.rs Exception handling and stack unwinding for x64. Exception information is exposed via the [`ExceptionData`] structure. If present in a PE file, it contains a list of [`RuntimeFunction`] entries that can be used to get [`UnwindInfo`] for a particular code location. Unwind information contains a list of unwind codes which specify the operations that are necessary to restore registers (including the stack pointer RSP) when unwinding out of a function. Depending on where the instruction pointer lies, there are three strategies to unwind: 1. If the RIP is within an epilog, then control is leaving the function, there can be no exception handler associated with this exception for this function, and the effects of the epilog must be continued to compute the context of the caller function. To determine if the RIP is within an epilog, the code stream from RIP on is examined. If that code stream can be matched to the trailing portion of a legitimate epilog, then it's in an epilog, and the remaining portion of the epilog is simulated, with the context record updated as each instruction is processed. After this, step 1 is repeated. 2. Case b) If the RIP lies within the prologue, then control has not entered the function, there can be no exception handler associated with this exception for this function, and the effects of the prolog must be undone to compute the context of the caller function. The RIP is within the prolog if the distance from the function start to the RIP is less than or equal to the prolog size encoded in the unwind info. The effects of the prolog are unwound by scanning forward through the unwind codes array for the first entry with an offset less than or equal to the offset of the RIP from the function start, then undoing the effect of all remaining items in the unwind code array. Step 1 is then repeated. 3. If the RIP is not within a prolog or epilog and the function has an exception handler, then the language-specific handler is called. The handler scans its data and calls filter functions as appropriate. The language-specific handler can return that the exception was handled or that the search is to be continued. It can also initiate an unwind directly. For more information, see [x64 exception handling]. [`ExceptionData`]: struct.ExceptionData.html [`RuntimeFunction`]: struct.RuntimeFunction.html [`UnwindInfo`]: struct.UnwindInfo.html [x64 exception handling]: https://docs.microsoft.com/en-us/cpp/build/exception-handling-x64?view=vs-2017 40132
export.rs 21943
header.rs 47637
import.rs 14164
mod.rs A PE32 and PE32+ parser 29657
optional_header.rs The module for the PE optional header ([`OptionalHeader`]) and related items. 31241
options.rs 804
relocation.rs 5204
section_table.rs 12271
subsystem.rs Constants for subsystems required to run image files. These constants are used in the [`goblin::pe::optional_header::WindowsFields::subsystem`](crate::pe::optional_header::WindowsFields::subsystem) field. 1403
symbol.rs 20481
utils.rs 6242