Skip to main content

Crate innospect

Crate innospect 

Source
Expand description

Parse and inspect Inno Setup installer binaries.

This crate provides typed access to the internal structures of an Inno Setup installer executable, from the PE loader stub through the compressed setup header down to individual records and embedded files.

Format research is tracked in RESEARCH.md at the crate root and is the source of truth for what each layer of the parser implements.

§Stable Identifiers

Public discriminator enums expose stable core::fmt::Display strings, and most also expose as_str(). Consumers may persist those strings in databases and compare them across crate releases. New variants on #[non_exhaustive] enums are added in minor-version releases; once a variant’s display string is published, that string is a compatibility surface and will not be renamed.

§Architecture

The crate is organized in layers that mirror the on-disk format:

  • PE overlay detection (overlay): Locates the Inno Setup loader table (SetupLdr) and the setup payload appended after the PE sections.
  • Decompression (decompress): Handles zlib, LZMA, and LZMA2 decompression of the setup header and data streams.
  • Low-level structures (header, records): View types for each structure in the setup header (TSetupHeader, file/registry/ ini/run records, language tables, Pascal script, and the file location table).
  • High-level API (InnoInstaller): Ties everything together into a convenient exploration interface for analysis use cases.

Re-exports§

pub use error::Error;
pub use extract::FileReader;
pub use header::Architecture;
pub use header::AutoNoYes;
pub use header::CompressMethod;
pub use header::EntryCounts;
pub use header::HeaderAnsi;
pub use header::HeaderOption;
pub use header::HeaderString;
pub use header::HeaderTail;
pub use header::ImageAlphaFormat;
pub use header::LanguageDetectionMethod;
pub use header::PrivilegesRequired;
pub use header::PrivilegesRequiredOverride;
pub use header::SetupHeader;
pub use header::UninstallLogMode;
pub use header::WizardStyle;
pub use header::YesNoAuto;
pub use installer::Compression;
pub use installer::EncryptionInfo;
pub use installer::EncryptionMode;
pub use installer::InnoInstaller;
pub use overlay::OffsetTable;
pub use overlay::OffsetTableSource;
pub use overlay::SetupLdrFamily;
pub use overlay::pe::LocatorMode as PeLocatorMode;
pub use records::component::ComponentEntry;
pub use records::component::ComponentFlag;
pub use records::dataentry::DataChecksum;
pub use records::dataentry::DataEntry;
pub use records::dataentry::DataFlag;
pub use records::dataentry::SignMode;
pub use records::delete::DeleteEntry;
pub use records::delete::DeleteTargetType;
pub use records::directory::DirectoryEntry;
pub use records::directory::DirectoryFlag;
pub use records::file::FileEntry;
pub use records::file::FileEntryType;
pub use records::file::FileFlag;
pub use records::file::FileVerification;
pub use records::file::FileVerificationKind;
pub use records::icon::CloseOnExit;
pub use records::icon::IconEntry;
pub use records::icon::IconFlag;
pub use records::ini::IniEntry;
pub use records::ini::IniFlag;
pub use records::isssigkey::ISSigKeyEntry;
pub use records::language::LanguageCodepage;
pub use records::language::LanguageEntry;
pub use records::message::MessageEntry;
pub use records::permission::PermissionEntry;
pub use records::registry::RegistryEntry;
pub use records::registry::RegistryFlag;
pub use records::registry::RegistryHive;
pub use records::registry::RegistryValueType;
pub use records::run::RunEntry;
pub use records::run::RunFlag;
pub use records::run::RunWait;
pub use records::task::TaskEntry;
pub use records::task::TaskFlag;
pub use records::type_::SetupTypeKind;
pub use records::type_::TypeEntry;
pub use records::windows::Bitness;
pub use version::Variant;
pub use version::Version;
pub use version::VersionFlags;
pub use ::pascalscript;

Modules§

analysis
Higher-level views over the typed-record streams.
decompress
Decompression layer.
error
Error type for the innospect crate.
extract
File-content extraction.
header
Parsed view of the TSetupHeader record.
installer
High-level InnoInstaller entry point.
overlay
PE-overlay-locator pipeline.
records
Setup record parsing and iteration.
version
Inno Setup version marker parsing and the Version / Variant / VersionFlags types.