Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
2e7f2bd
feat: increased lints for better data integrity and avoiding maliciou…
BinFlip May 4, 2026
8620c28
feat: extracted ssa functionality into standalone 'analyssa' crate
BinFlip May 9, 2026
2d83481
fix: CI/CD issues from ssa migration
BinFlip May 9, 2026
75c9201
feat: updated analyssa to 0.2.0 and fixed several discovered bugs as …
BinFlip Jun 4, 2026
356d3fe
fix: analyssa crate path
BinFlip Jun 4, 2026
5b03078
fix: clippy warnings for rust 1.96
BinFlip Jun 4, 2026
29623f2
feat: updated dependencies
BinFlip Jun 25, 2026
e9fc6fc
fix: largen support for newer analyssa versions and it's broader OP set
BinFlip Jun 25, 2026
31eb0d0
fix: exception handler promotion to 'FAT' missing for > 20 clauses
BinFlip Jun 25, 2026
d65595e
feat: bumped version to 0.8.1
BinFlip Jun 25, 2026
25d66d4
fix: z3 CI/CD failure due to link errors
BinFlip Jun 25, 2026
6059d7f
Merge remote-tracking branch 'backup/master' into develop
BinFlip Jun 26, 2026
0659f77
fix: CI/CD docrs workflow
BinFlip Jul 3, 2026
581c2ce
feat: updated dependencies
BinFlip Jul 3, 2026
a8408cb
fix: addressing #218 - fat exception header size
BinFlip Jul 3, 2026
6a696dc
Merge remote-tracking branch 'backup/master' into develop
BinFlip Jul 3, 2026
16d212a
Merge remote-tracking branch 'backup/master' into develop
BinFlip Jul 3, 2026
8bdf2f7
ci: bump codecov/codecov-action from 6 to 7 (#208)
dependabot[bot] Jul 3, 2026
5414d29
ci: bump actions/checkout from 6 to 7 (#219)
dependabot[bot] Jul 3, 2026
3e260a2
v0.8.3
BinFlip Jul 17, 2026
e4e580e
Merge remote-tracking branch 'origin/master' into develop
BinFlip Jul 17, 2026
e2d68c8
fix: clippy warnings
BinFlip Jul 17, 2026
f3c9d9d
fix: possible stackoverflows due to missing limits
BinFlip Jul 22, 2026
ce9ccd6
feat: bumped dependency versions
BinFlip Jul 22, 2026
3ecac18
fix: applied new rustfmt
BinFlip Jul 22, 2026
0f00c66
feat: updated analyssa to 0.4.0
BinFlip Jul 25, 2026
1740089
feat: optimization of emulation and CFF tracer
BinFlip Jul 26, 2026
1c8c3e5
fix: stopped cleanup from removing types needed by other candidate types
Jul 25, 2026
2375fe1
refactor: cleanup type reachability as a single worklist drain
BinFlip Jul 27, 2026
965a08f
fix: keep the enclosing type of a live nested type
BinFlip Jul 27, 2026
543bc34
fix: stobj accepts reference types
BinFlip Jul 27, 2026
6000c6d
fix: ldelema uses the shared array index extraction
BinFlip Jul 27, 2026
a8ae0ec
fix: stfld through a pointer to a value-type array element
BinFlip Jul 27, 2026
ac04afe
fix: ConfuserEx decryptor index accepts any integer width
BinFlip Jul 27, 2026
f4c71ab
fix: ConfuserEx LZMA header variant and expanded payloads
BinFlip Jul 27, 2026
80389a8
fix: withhold technique cleanup while decryptors are still called
BinFlip Jul 27, 2026
17bcdf7
test: guard against cleanup over-removal on virtualized samples
BinFlip Jul 27, 2026
f6c5f21
docs: changelog entries for the cleanup and ConfuserEx constants fixes
BinFlip Jul 27, 2026
8a78e9b
fix: fmt + clippy
BinFlip Jul 27, 2026
7402177
ci: publish on GitHub release instead of push to master
BinFlip Jul 27, 2026
dd48289
chore: retire the develop branch from CI configuration
BinFlip Jul 27, 2026
a0ba5a0
chore: prepare 0.8.4
BinFlip Jul 27, 2026
1d262e9
ci: check the CLI manifest version too
BinFlip Jul 27, 2026
ad0372a
Merge master into develop to resolve release-history divergence
BinFlip Jul 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 0 additions & 3 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ updates:
# Rust dependencies
- package-ecosystem: "cargo"
directory: "/"
target-branch: "develop"
schedule:
interval: "weekly"
day: "monday"
Expand All @@ -32,7 +31,6 @@ updates:
# Fuzzing dependencies
- package-ecosystem: "cargo"
directory: "/fuzz"
target-branch: "develop"
schedule:
interval: "weekly"
day: "monday"
Expand All @@ -47,7 +45,6 @@ updates:
# GitHub Actions
- package-ecosystem: "github-actions"
directory: "/"
target-branch: "develop"
schedule:
interval: "weekly"
day: "monday"
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: CI

on:
push:
branches: [ master, develop ]
branches: [ master ]
pull_request:
branches: [ master, develop ]
branches: [ master ]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
Expand Down
174 changes: 56 additions & 118 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,26 +1,60 @@
name: Release and Publish

# Publishing is driven by publishing a GitHub release, not by pushing to a
# branch. Create the release and its tag when you intend to ship; until then
# nothing reaches crates.io, so merging to any branch is always safe.
on:
push:
branches: [ main, master ]
paths-ignore:
- '**.md'
- 'docs/**'
- '.github/**'
- '!.github/workflows/release.yml'
release:
types: [published]

env:
CARGO_TERM_COLOR: always

jobs:
# First ensure all tests pass
# Derive the version from the release tag and hold it against Cargo.toml, so a
# mistyped tag fails here rather than shipping under the wrong version.
version:
name: Resolve Version
runs-on: ubuntu-latest
outputs:
version: ${{ steps.version.outputs.version }}

steps:
- name: Checkout code
uses: actions/checkout@v7
with:
ref: ${{ github.event.release.tag_name }}

- name: Resolve and verify version
id: version
run: |
TAG="${{ github.event.release.tag_name }}"
VERSION="${TAG#v}"
FAILED=0
for MANIFEST in dotscope/Cargo.toml dotscope-cli/Cargo.toml; do
DECLARED=$(grep '^version = ' "$MANIFEST" | head -1 | cut -d '"' -f 2)
if [ "$VERSION" != "$DECLARED" ]; then
echo "::error::Release tag ${TAG} implies version ${VERSION}, but ${MANIFEST} declares ${DECLARED}"
FAILED=1
fi
done
if [ "$FAILED" -ne 0 ]; then
exit 1
fi
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Releasing v${VERSION}"

# Then ensure all tests pass
test:
name: Pre-Release Tests
runs-on: ubuntu-latest
needs: version

steps:
- name: Checkout code
uses: actions/checkout@v7
with:
ref: ${{ github.event.release.tag_name }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand Down Expand Up @@ -57,111 +91,11 @@ jobs:
- name: Check documentation
run: cargo doc --no-deps

# Create GitHub release
create-release:
name: Create Release
runs-on: ubuntu-latest
needs: test
outputs:
version: ${{ steps.version.outputs.version }}
release_created: ${{ steps.check_release.outputs.created }}

steps:
- name: Checkout code
uses: actions/checkout@v7
with:
fetch-depth: 0

- name: Get version from Cargo.toml
id: version
run: |
VERSION=$(grep '^version = ' dotscope/Cargo.toml | head -1 | cut -d '"' -f 2)
echo "version=$VERSION" >> $GITHUB_OUTPUT
echo "Version: $VERSION"

- name: Check if release exists
id: check_release
run: |
if gh release view "v${{ steps.version.outputs.version }}" >/dev/null 2>&1; then
echo "created=false" >> $GITHUB_OUTPUT
echo "Release v${{ steps.version.outputs.version }} already exists, skipping"
else
echo "created=true" >> $GITHUB_OUTPUT
fi
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

- name: Generate changelog
id: changelog
if: steps.check_release.outputs.created == 'true'
run: |
LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "")

if [ -z "$LATEST_TAG" ]; then
CHANGELOG=$(git log --pretty=format:"- %s (%h)" --no-merges)
else
CHANGELOG=$(git log ${LATEST_TAG}..HEAD --pretty=format:"- %s (%h)" --no-merges)
fi

if [ -z "$CHANGELOG" ]; then
CHANGELOG="- Initial release"
fi

echo "CHANGELOG<<EOF" >> $GITHUB_OUTPUT
echo "$CHANGELOG" >> $GITHUB_OUTPUT
echo "EOF" >> $GITHUB_OUTPUT

- name: Create Release
if: steps.check_release.outputs.created == 'true'
run: |
VERSION="v${{ steps.version.outputs.version }}"
cat <<BODY > release_body.md
## Changes in ${VERSION}

${{ steps.changelog.outputs.CHANGELOG }}

## Installation

### Library

Add this to your \`Cargo.toml\`:

\`\`\`toml
[dependencies]
dotscope = "${{ steps.version.outputs.version }}"
\`\`\`

Or install via cargo:

\`\`\`bash
cargo add dotscope
\`\`\`

### CLI Tool

Download the pre-built binary for your platform from the assets below and extract it.

| Platform | Asset |
|----------|-------|
| Linux (x86_64) | \`dotscope-${VERSION}-x86_64-unknown-linux-gnu.zip\` |
| macOS (Apple Silicon) | \`dotscope-${VERSION}-aarch64-apple-darwin.zip\` |
| Windows (x86_64) | \`dotscope-${VERSION}-x86_64-pc-windows-msvc.zip\` |

> **Note:** Z3 is an optional compile-time dependency used only for the \`z3\` feature (CFF reconstruction). The pre-built CLI binaries do **not** require Z3 at runtime.
BODY

gh release create "$VERSION" \
--title "Release ${VERSION}" \
--notes-file release_body.md
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Build CLI binaries for all platforms
# Build CLI binaries for all platforms and attach them to the release
build-cli:
name: Build CLI (${{ matrix.name }})
runs-on: ${{ matrix.os }}
needs: create-release
if: needs.create-release.outputs.release_created == 'true'
needs: [version, test]
strategy:
fail-fast: false
matrix:
Expand All @@ -182,6 +116,8 @@ jobs:
steps:
- name: Checkout code
uses: actions/checkout@v7
with:
ref: ${{ github.event.release.tag_name }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand All @@ -200,31 +136,32 @@ jobs:
if: runner.os != 'Windows'
run: |
cd target/${{ matrix.target }}/release
zip dotscope-v${{ needs.create-release.outputs.version }}-${{ matrix.target }}.zip ${{ matrix.artifact }}
mv dotscope-v${{ needs.create-release.outputs.version }}-${{ matrix.target }}.zip ${{ github.workspace }}/
zip dotscope-v${{ needs.version.outputs.version }}-${{ matrix.target }}.zip ${{ matrix.artifact }}
mv dotscope-v${{ needs.version.outputs.version }}-${{ matrix.target }}.zip ${{ github.workspace }}/

- name: Package binary (Windows)
if: runner.os == 'Windows'
run: |
cd target/${{ matrix.target }}/release
Compress-Archive -Path ${{ matrix.artifact }} -DestinationPath "${{ github.workspace }}\dotscope-v${{ needs.create-release.outputs.version }}-${{ matrix.target }}.zip"
Compress-Archive -Path ${{ matrix.artifact }} -DestinationPath "${{ github.workspace }}\dotscope-v${{ needs.version.outputs.version }}-${{ matrix.target }}.zip"
shell: pwsh

- name: Upload release asset
run: gh release upload "v${{ needs.create-release.outputs.version }}" "dotscope-v${{ needs.create-release.outputs.version }}-${{ matrix.target }}.zip" --clobber
run: gh release upload "${{ github.event.release.tag_name }}" "dotscope-v${{ needs.version.outputs.version }}-${{ matrix.target }}.zip" --clobber
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# Publish to crates.io
publish:
name: Publish to crates.io
runs-on: ubuntu-latest
needs: [test, create-release]
if: needs.create-release.outputs.release_created == 'true'
needs: [version, test]

steps:
- name: Checkout code
uses: actions/checkout@v7
with:
ref: ${{ github.event.release.tag_name }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand All @@ -244,12 +181,13 @@ jobs:
verify-docs:
name: Verify Documentation
runs-on: ubuntu-latest
needs: [test, create-release]
if: needs.create-release.outputs.release_created == 'true'
needs: [version, test]

steps:
- name: Checkout code
uses: actions/checkout@v7
with:
ref: ${{ github.event.release.tag_name }}

- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
Expand Down
1 change: 0 additions & 1 deletion .gitlab-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -94,4 +94,3 @@ pages:
- public
only:
- master
- develop
Loading
Loading