An implementation of probabilistic disassembly for ELF binaries.
Project description
probdisasm
This is still a major work in progress.
Background
probdisasm is a disassembler based on two concepts: superset disassembly and probabilistic analysis. Superset disassembly attempts to decode an instruction for each byte or offset in the binary or executable section. Probabilistic analysis then refines the results by assigning a probability to each decoded instruction based on "hints" such as control flow patterns and data flow edges. The goal for this repository is to implement the approach specified in the paper, "Probabilistic disassembly" by Miller et al and to further extend it to support new static and machine learning based hints.
Why not the original artifact
We found that the implementation did not fully explore or implement the algorithm from the paper. We have tried integrating ML and other probalistic methods in the past, but with the lack of activity in the BAP ecosphere and the non probalisitc based engine in the BAP plugin we felt that we and the community could benefit for a more accessible version of the idea for future research.
Installation
Rust
cargo add probdisasm
Python
uv add probdisasm
Usage
Credit
This work is based heavily on the following paper.
@inproceedings{10.1109/ICSE.2019.00121,
author = {Miller, Kenneth and Kwon, Yonghwi and Sun, Yi and Zhang, Zhuo and Zhang, Xiangyu and Lin, Zhiqiang},
title = {Probabilistic disassembly},
year = {2019},
publisher = {IEEE Press},
url = {https://doi.org/10.1109/ICSE.2019.00121},
doi = {10.1109/ICSE.2019.00121},
booktitle = {Proceedings of the 41st International Conference on Software Engineering},
location = {Montreal, Quebec, Canada},
series = {ICSE '19}
}
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distributions
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file probdisasm-0.2.2.tar.gz.
File metadata
- Download URL: probdisasm-0.2.2.tar.gz
- Upload date:
- Size: 14.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cf6467a91427e629c8330d9d4ce4a88a9167aaa8445c0ef1d0bf7817944bf40a
|
|
| MD5 |
8bec25b8947079fd14a21d86d951a828
|
|
| BLAKE2b-256 |
03e3490ea99edff072ed43c612e7f243b64d4e22cf42749c7275ea1374d2277e
|
Provenance
The following attestation bundles were made for probdisasm-0.2.2.tar.gz:
Publisher:
pypi_publish.yml on Program-Understanding/probdisasm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
probdisasm-0.2.2.tar.gz -
Subject digest:
cf6467a91427e629c8330d9d4ce4a88a9167aaa8445c0ef1d0bf7817944bf40a - Sigstore transparency entry: 1608013520
- Sigstore integration time:
-
Permalink:
Program-Understanding/probdisasm@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Program-Understanding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Trigger Event:
push
-
Statement type:
File details
Details for the file probdisasm-0.2.2-cp39-abi3-win_amd64.whl.
File metadata
- Download URL: probdisasm-0.2.2-cp39-abi3-win_amd64.whl
- Upload date:
- Size: 1.3 MB
- Tags: CPython 3.9+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7d705cf8da6d8cacc47df0bafa659c794cf18c64d61e148e3e9295dc0427d19f
|
|
| MD5 |
b94a523471191618201b5c6b061b720d
|
|
| BLAKE2b-256 |
78b5a53ad5df80b2a802fc2a3edd2b0dd7eb6ce466aab7e27c35ca636e70d90d
|
Provenance
The following attestation bundles were made for probdisasm-0.2.2-cp39-abi3-win_amd64.whl:
Publisher:
pypi_publish.yml on Program-Understanding/probdisasm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
probdisasm-0.2.2-cp39-abi3-win_amd64.whl -
Subject digest:
7d705cf8da6d8cacc47df0bafa659c794cf18c64d61e148e3e9295dc0427d19f - Sigstore transparency entry: 1608013900
- Sigstore integration time:
-
Permalink:
Program-Understanding/probdisasm@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Program-Understanding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Trigger Event:
push
-
Statement type:
File details
Details for the file probdisasm-0.2.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: probdisasm-0.2.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 1.7 MB
- Tags: CPython 3.9+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
234c28894e256a2697e49b6c0740e0371b80d774b36240d0679015b3b5f8aaa1
|
|
| MD5 |
6480b9cac665069f9a152b6d42ef2710
|
|
| BLAKE2b-256 |
8fd8b050d27637712b6aa6a88d0b65aa0bee09f86e5bcfb9a78f2fc3ddbd8746
|
Provenance
The following attestation bundles were made for probdisasm-0.2.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
pypi_publish.yml on Program-Understanding/probdisasm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
probdisasm-0.2.2-cp39-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
234c28894e256a2697e49b6c0740e0371b80d774b36240d0679015b3b5f8aaa1 - Sigstore transparency entry: 1608013717
- Sigstore integration time:
-
Permalink:
Program-Understanding/probdisasm@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Program-Understanding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Trigger Event:
push
-
Statement type:
File details
Details for the file probdisasm-0.2.2-cp39-abi3-macosx_11_0_arm64.whl.
File metadata
- Download URL: probdisasm-0.2.2-cp39-abi3-macosx_11_0_arm64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.9+, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c8e617a42fb3406da009b0db0eb90c721d134d16c2474f9567c6c564be9e5389
|
|
| MD5 |
72175fcf76e8e98b88a20b3792089c3c
|
|
| BLAKE2b-256 |
28158330f7ccda0d4753db4622970ed9b5c76555a68cf9b194e6e214daaed403
|
Provenance
The following attestation bundles were made for probdisasm-0.2.2-cp39-abi3-macosx_11_0_arm64.whl:
Publisher:
pypi_publish.yml on Program-Understanding/probdisasm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
probdisasm-0.2.2-cp39-abi3-macosx_11_0_arm64.whl -
Subject digest:
c8e617a42fb3406da009b0db0eb90c721d134d16c2474f9567c6c564be9e5389 - Sigstore transparency entry: 1608014712
- Sigstore integration time:
-
Permalink:
Program-Understanding/probdisasm@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Program-Understanding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Trigger Event:
push
-
Statement type:
File details
Details for the file probdisasm-0.2.2-cp39-abi3-macosx_10_12_x86_64.whl.
File metadata
- Download URL: probdisasm-0.2.2-cp39-abi3-macosx_10_12_x86_64.whl
- Upload date:
- Size: 1.4 MB
- Tags: CPython 3.9+, macOS 10.12+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
397c25f88bc1a5d8f9661718dd56be04ec00e3a5abe8d26137165c6bf377110f
|
|
| MD5 |
4513b81cc847d9d88b0f0c4595314b5f
|
|
| BLAKE2b-256 |
421f3510d7419ee51f6ca530bc0b8973e19b962ab9e5909e7f271944572a4c3d
|
Provenance
The following attestation bundles were made for probdisasm-0.2.2-cp39-abi3-macosx_10_12_x86_64.whl:
Publisher:
pypi_publish.yml on Program-Understanding/probdisasm
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
probdisasm-0.2.2-cp39-abi3-macosx_10_12_x86_64.whl -
Subject digest:
397c25f88bc1a5d8f9661718dd56be04ec00e3a5abe8d26137165c6bf377110f - Sigstore transparency entry: 1608014218
- Sigstore integration time:
-
Permalink:
Program-Understanding/probdisasm@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Branch / Tag:
refs/tags/v0.2.2 - Owner: https://github.com/Program-Understanding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi_publish.yml@8bf3ec84aeae4a5f8e82da2462f425f9f2cf494f -
Trigger Event:
push
-
Statement type: