Python binding for QBDI
Project description
QuarkslaB Dynamic binary Instrumentation (QBDI) is a modular, cross-platform and cross-architecture DBI framework. It aims to support Linux, macOS, Android, iOS and Windows operating systems running on x86, x86-64, ARM and AArch64 architectures. Information about what is a DBI framework and how QBDI works can be found in the user documentation introduction (User Documentation).
QBDI modularity means it doesn’t contain a preferred injection method and it is designed to be used in conjunction with an external injection tool. QBDI includes a tiny (LD_PRELOAD based) Linux and macOS injector for dynamic executables (QBDIPreload), which acts as the foundation for our Python bindings (pyQBDI). QBDI is also fully integrated with Frida, a reference dynamic instrumentation toolkit, allowing anybody to use their combined powers.
x86-64 support is mature (even if SIMD memory access are not yet reported). The support of x86 is new and some bug may occur. ARM architecture is a work in progress but already sufficient to execute simple CLI program like ls or cat. AArch64 is planned, but currently unsupported.
A current limitation is that QBDI doesn’t handle signals, multithreading (it doesn’t deal with new threads creation) and C++ exception mechanisms. However, those system-dependent features will probably not be part of the core library (KISS), and should be integrated as a new layer (to be determined how).
Status
CPU |
Operating Systems |
Execution |
Memory Access Information |
---|---|---|---|
x86-64 |
Android, Linux, macOS, Windows |
Supported |
Partial (only non SIMD) |
x86 |
Android, Linux, macOS, Windows |
Supported |
Partial (only non SIMD) |
ARM |
Linux, Android, iOS |
Planned (*) |
Planned (*) |
AArch64 |
Android |
Planned (*) |
Planned (*) |
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distributions
Hashes for PyQBDI-0.7.1-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6d79e899eee574a98d9c8eddd9aa119e770b768cc12c02b375b400b2aa70c575 |
|
MD5 | 0de1ad81e97d316ce684a1f158bb4bcb |
|
BLAKE2b-256 | 8295d6062f8b95051f66ca84763b33ae21e9aae1a0b58d721a07840a10bfa08d |
Hashes for PyQBDI-0.7.1-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b1398b70885fa8ffc5584140be4c28e1aa05cb5278f0fd20168133552da4f90f |
|
MD5 | c687e3c3fc9bb33bd05550ab8458c519 |
|
BLAKE2b-256 | 169e74740ffca4dcc492a304c3aee3e879f39ca48ca45c094093a4e79734259c |
Hashes for PyQBDI-0.7.1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8934ddbb32cc16560eb8a263b6a544c63830688e3ec08ab7e4f8487788e0816f |
|
MD5 | 11952f4f4a54710c133216523508dc16 |
|
BLAKE2b-256 | 5f0e151fdba215ded6b63eac941394c75c157956527bed8b8f32c798483f08f6 |
Hashes for PyQBDI-0.7.1-cp38-cp38-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e967f39d284289e7fa147baeb8806140229aca0a044ddcaee100520c0cd54146 |
|
MD5 | 99668540fa567885aacf3b7920891788 |
|
BLAKE2b-256 | 6df0844345f1a0279c149ba86105a3e8d30a833e806cc6b33ab208d0a0ad29f8 |
Hashes for PyQBDI-0.7.1-cp38-cp38-macosx_10_13_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 33092431bba2ab17aa65ea1f526f32008302cccfce7777418ee35e418027fad6 |
|
MD5 | 3186ddd5d8803a38ddea0f2bcba3fd6b |
|
BLAKE2b-256 | e0c69d882966e31018a50f9697bc0e851255a84b3c6751e9366cb1f75edf361b |
Hashes for PyQBDI-0.7.1-cp37-cp37m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 594fade96e311b1f012aacaf391d141179c005e10cce95ab6d5e1405673cc602 |
|
MD5 | 236b12dc4be368de02bb4040ecbb7e70 |
|
BLAKE2b-256 | a8d22bce54d50174a8db82a1ff4909ba13a78d666f9efbb5528f842c29c7063c |
Hashes for PyQBDI-0.7.1-cp37-cp37m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 26d1a83b675efa82035fc468dfbc42001409ce980befb789dd523bef201fd100 |
|
MD5 | 506833314c41f90d1e9dd97ceca32119 |
|
BLAKE2b-256 | f8ca53fc59ef51afc4486937c43b6ac38ebd01f8bd3799a066b66afcb5fa58e0 |
Hashes for PyQBDI-0.7.1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 18f36c0ea93c22eccbcf583d733ea518544df3e32aabec40d1bc2b878fd7d612 |
|
MD5 | 694783b45ed851f55abc1ebcb4028730 |
|
BLAKE2b-256 | 15730a349bbdad3b34dd32a96abd3649fa384e58682c1b4e031b9d560cca7bd7 |
Hashes for PyQBDI-0.7.1-cp37-cp37m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1b28df19b5237244ad44d95820309a2ac586ac806be831945d55e841e84ce889 |
|
MD5 | 2164af2d698a162a9100ad0d515d8644 |
|
BLAKE2b-256 | ea818e160d77edd15f4fc91d83a618e63a2c584250b2c6d1bc7bdfaa4aa073ba |
Hashes for PyQBDI-0.7.1-cp37-cp37m-macosx_10_13_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08281d6b893604236b8f32e2c72bcc386b1d55819d6279f48a745e3cfa4dfb99 |
|
MD5 | 4cc61c0100578bbfbfd883ecfb23a8a4 |
|
BLAKE2b-256 | e1287ecda6e5bac1e2de4e074c9d6adda2f09376d3fe6b293218ef85e1068671 |
Hashes for PyQBDI-0.7.1-cp36-cp36m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2d5810cdcc1ce8d02d6a2211a8deb14138517bccf06c4221ceb2286cf5d90cd3 |
|
MD5 | a7e586f2946d729660dabf40f218a869 |
|
BLAKE2b-256 | 474a65978f80cc7b9549f057634e037447ad6692130351f67a7ff51fadbc3ba4 |
Hashes for PyQBDI-0.7.1-cp36-cp36m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08df5d6ccc66ceac0f54e73f012cc1765c48b3e3d3739e307b2ade60e0a0946e |
|
MD5 | 9d2c96d5e7a387a4ff5ce00d97c9f2b9 |
|
BLAKE2b-256 | 7e8ee2a55924c07ae2e5c37a0570aee206f691fa569db3c67f687b120dae21aa |
Hashes for PyQBDI-0.7.1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 97545f566435bae1b4eb6c4405711956691186ce3081d3e8d6e131252e99f621 |
|
MD5 | ba788c000ff30e39c548e5db01c87f99 |
|
BLAKE2b-256 | ed4dfc4e41fa65522ebef11fa37def85e8d3033fc2300fa71d916a9c2e7f32c7 |
Hashes for PyQBDI-0.7.1-cp36-cp36m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a13c1f616fecb472f0bea13df5db7976962317988ab6f2c9345a534d4eeb0b32 |
|
MD5 | 46d7f16ee88348e9c2f470651b45801f |
|
BLAKE2b-256 | 2655987de2280bab5af955bd2e4068bbba58d6d884b0fadf231a01e4541ebfe9 |
Hashes for PyQBDI-0.7.1-cp36-cp36m-macosx_10_13_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 8e3c1b3968cf1f2957f0b329b43a9bee17d322f825397f4dbfbbe25bcb7cd346 |
|
MD5 | a88acea2db408c2b068484263f5d77bf |
|
BLAKE2b-256 | 4297c4da20464a9891ae54f6e3e138a2bcd1aa9f9ce86fe45ebc7f743c22c7e2 |
Hashes for PyQBDI-0.7.1-cp35-cp35m-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6acd6fba019df1a6b7ac51c0923fc3909b08876e269d9834dc9debd73de34a4a |
|
MD5 | 3186ab1a9b8289c1a518bdf23c17545a |
|
BLAKE2b-256 | 04317ff02ed1caa5509b834fe954cd16bd6b54222903301acf514a3e0aa52045 |
Hashes for PyQBDI-0.7.1-cp35-cp35m-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c0477f950408298502b4c1d83f58146c7d3b4f6b9b561b553d20946a080f4bbd |
|
MD5 | 31a93dcef132b0edf150fae7003402db |
|
BLAKE2b-256 | 285e39066571451fb1db3a48b9c031b85ca0fec0e85c1a263dae010fb14841e1 |
Hashes for PyQBDI-0.7.1-cp35-cp35m-manylinux2010_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ea58384fc446c188e6a6233a6ad9d1df1c156ee398a416879bebe7e63a52c2a0 |
|
MD5 | fb98895314d2705a0300e15631f90948 |
|
BLAKE2b-256 | 2c2441ef71642b2cedaa62a9dc1c117cbe05fa1ab81d242602d1993cb78fb6de |
Hashes for PyQBDI-0.7.1-cp35-cp35m-manylinux2010_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a6ab2be18f123f66ca7cda1680a1477d97487f3bcc950129e325557832f3023c |
|
MD5 | 651a2a9c04164c84fe293342ecb4120a |
|
BLAKE2b-256 | a2fbb3833f8f8c678bc2bc5b41705403b6c0577c91a5141647508f79d08b1660 |