Skip to content
packing-boxPublic

About

Python implementation of the packing detection heuristic from the paper "BinStat Tool for Recognition of Packed Executables" of Jin et al.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

BinStat Tweet

Detect packed executables using statistics on the n-grams of their blocks and boosted decision trees.

PyPi Python Versions Read The Docs Build Status Security Coverage Status License

BinStat is an implementation of this paper into a Python package with a console script to detect whether an executable is packed, using statistics on the n-grams of its blocks and boosted decision trees.

Models trained on PE (the default one) and ELF (used for ELF executables) files are included ; scikit-learn is only needed for training your own models.

$ pip install binstat
$ binstat --help
[...]
usage examples:
- binstat detect program.exe
- binstat detect program.exe --threshold 0.6 --ratio
- binstat features program.exe --label yes
- binstat train -p packed/ -n not-packed/ -o model.json --max-blocks 100

💡 Detection Mechanism

  1. Split the executable into blocks of 1024 bytes
  2. Compute the frequencies of the unigrams (bytes) of each block
  3. Compute 13 statistical and information theory measures on these frequencies (Simpson's index, Canberra's distance, entropy, Kullback-Leibler's divergence, ...)
  4. Classify each block as packed or not with boosted decision trees
  5. If at least 50% of the blocks are packed, the input executable is packed ; otherwise, it is not

⭐ Related Projects

You may also like these:

Back to top

About

Python implementation of the packing detection heuristic from the paper "BinStat Tool for Recognition of Packed Executables" of Jin et al.

Topics

Resources

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Used by

Contributors

Languages