Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,11 @@
/research
/tests/samples/*.exe
/tests/samples/*.bin
# Built fixtures (`tests/samples/build/build-wine.sh`). Not `build/` itself:
# `build/full/app.exe` is a payload the scripts compile in, not an output.
/tests/samples/plain/*.exe
/tests/samples/encrypted/*.exe
/tests/samples/full/*.exe
/tests/samples/code/*.exe
/tests/samples/quarantine/*.exe
Cargo.lock
38 changes: 38 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,43 @@ All notable changes to this project are documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.0] - 2026-09-26

### Changed

- **Breaking:** raised `pascalscript` to 0.2.0. innospect re-exports it as
`innospect::pascalscript`, so its API changes reach callers of this crate:
`ProcDisasm::branch_target()` / `branch_targets()` are removed
(`Instruction::branch_targets()` now returns every branch form in IFPS-blob
coordinates), `FlagGoto`'s field is renamed `offset`, and
`SetStackPointerToCopy` is now `SetStackPointerToCopy { dest, src }`. The release
also fixes the decoding of `cm_spc` (any procedure containing it failed to decode)
and the coordinates of `flaggoto` and the exception-handler sections, and adds
procedure signatures, stack maps and operand accessors. See the `pascalscript`
changelog for details.
- Raised `lzma-rust2` from 0.18 to 0.21 (no source changes needed; drops the
`multiversion` transitive dependency) and `encoding_rs` to 0.8.42.

### Tests

- Every fixture is now built from a script in `tests/samples/build/` by the official
Inno Setup compilers running under Wine in Docker (`build-wine.sh`, with the compiler
matrix in `versions.txt`), replacing the Windows build host and its PowerShell
toolchain. Rebuilt this way, 34 of the 35 existing fixtures parse identically; the
35th, `enc-full-tool6_7_0.exe`, had been built from an older `encrypted-full.iss` and
is rebuilt from the current one.
- The third-party HeidiSQL and ImageMagick installers are replaced by `full.iss`, built
with Inno Setup 6.4.0 and 6.1.0 to cover the same formats and compression layouts.
Every value the tests assert is stated in the script or its payload, so the
assertions are now exact rather than lower bounds.
- Added `code.iss` (`code-tool6_4_3.exe`), a compiled `[Code]` script, with tests that
every script branch lands on an instruction of its own procedure and every
procedure's stack frame matches its declaration.
- The fixtures are committed, and a missing one now fails the integration tests instead
of skipping them. The new `every_matrix_fixture_is_present` test derives the expected
set from `versions.txt` and fails on any fixture that is missing or not in the matrix,
and the encrypted walker requires both euFiles and euFull samples.

## [0.1.4] - 2026-09-18

### Changed
Expand Down Expand Up @@ -81,6 +118,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0

- Initial published release.

[0.2.0]: https://github.com/ATRAPSLLC/innospect/compare/v0.1.4...v0.2.0
[0.1.4]: https://github.com/ATRAPSLLC/innospect/compare/v0.1.3...v0.1.4
[0.1.3]: https://github.com/ATRAPSLLC/innospect/compare/v0.1.2...v0.1.3
[0.1.2]: https://github.com/ATRAPSLLC/innospect/compare/v0.1.1...v0.1.2
Expand Down
8 changes: 4 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "innospect"
version = "0.1.4"
version = "0.2.0"
edition = "2024"
rust-version = "1.88"
description = "Parse and inspect Inno Setup installer binaries"
Expand Down Expand Up @@ -30,18 +30,18 @@ indexing_slicing = "deny"
[dependencies]
bitflags = "2.13.2"
goblin = "0.10.7"
encoding_rs = "0.8.41"
encoding_rs = "0.8.42"
codepage = "0.1.3"
flate2 = { version = "1.1.10", default-features = false, features = ["zlib-rs"] }
lzma-rust2 = { version = "0.18", default-features = false, features = ["std", "optimization"] }
lzma-rust2 = { version = "0.21", default-features = false, features = ["std", "optimization"] }
bzip2 = "0.6.1"
sha1 = "0.11.0"
sha2 = "0.11.0"
md-5 = "0.11.0"
pbkdf2 = { version = "0.13.0", default-features = false }
hmac = "0.13.0"
chacha20 = { version = "0.10.2", features = ["xchacha"] }
pascalscript = "0.1.3"
pascalscript = "0.2.0"

[dev-dependencies]
lzma-rs = "0.3"
Loading
Loading