Python binding for QBDI
Project description
Introduction
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. In addition of C/C++ API, Python and JS/frida bindings are available to script QBDI. Information about what is a DBI framework and how QBDI works can be found in the documentation introduction.
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). QBDI is also fully integrated with Frida, a reference dynamic instrumentation toolkit, allowing anybody to use their combined powers.
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 |
Supported |
x86 |
Android, Linux, macOS, Windows |
Supported |
Supported |
ARM |
Android, Linux |
Supported (*) |
Supported (*) |
AArch64 |
Android, Linux, macOS |
Supported (*) |
Supported (*) |
* The ARM and AArch64 instruction sets are supported but in early support.
Installation
Python API (PyQBDI)
PyQBDI is available through PyPI. The wheel package can be either downloaded or installed with the following command:
pip install PyQBDI
The PyQBDI package is self-contained so completely independent from the C/C++ package.
Devel packages
There is no strict development timeline or scheduled release plan for the QBDI project. All the new features and fixes are merged onto the dev-next branch. Devel packages can be downloaded in the artefacts of:
Github Actions for Linux PyQBDI
Github Actions for OSX PyQBDI
Github Actions for windows PyQBDI
Compilation
The PyQDBI library (apart from the wheel package) can be built by solely passing the ‘-DQBDI_TOOLS_PYQBDI=ON’ option to the CMake build system.
However, if you want to build the wheel package, you can run these commands:
git clone https://github.com/QBDI/QBDI.git python -m pip install --upgrade pip python -m pip install setuptools wheel build python -m build -w
A 32-bit version of Python is mandatory for the X86 architecture whereas a 64-bit one is required for the X86-64 architecture.
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.11.0-cp312-cp312-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9c90f38689810ff8348400520acc9b772625fd58e50c30f615c1e76bd1611a98 |
|
MD5 | 9df6c20a3fb8ad618b69d5d90085f5fe |
|
BLAKE2b-256 | 33bdf7ff738625c4f48693ab9ed515f8e5b1d8438d1b6d30c83d97097eb02d59 |
Hashes for PyQBDI-0.11.0-cp312-cp312-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 0e309c03ef239a5f2e0a4ff8bdda8677e7184a6b6c3b5a4534315850f81f71b4 |
|
MD5 | cd3049ba810b53b8d23694aeaf9e3c02 |
|
BLAKE2b-256 | b7780452a3b2df9eaba739295ba389c25b8c340bb31a1321807bc81ce728a6fa |
Hashes for PyQBDI-0.11.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a297a604ffa110d62d463dd2c3932212e50916e68534d4c1a3c2925172e537ea |
|
MD5 | 6029fb3f13f8663d3a644ca13d22281e |
|
BLAKE2b-256 | 23463d7d7a826e954fcd46de7bf0277db791f8ed47e2a9c60bd48d7dab60606c |
Hashes for PyQBDI-0.11.0-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3af75713160a8cdb5a99c59313c0777a9be18bde65113521ea96503cd8df8ade |
|
MD5 | 3687ad4e5e1e7df4e01fca7092ac9998 |
|
BLAKE2b-256 | af868c69c424734f1d1f166e2b71c80c80849c9fbea89ed460fd1211cea8a00f |
Hashes for PyQBDI-0.11.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 64008cf546bf3aa37bb3470e21febc23b9d9a203dece93c1669bf23239fafd7d |
|
MD5 | 8e5ae2db666eebb8838b075065a3a8c1 |
|
BLAKE2b-256 | 722468176fd1e6c1fd439440a851e19e3a77ecd0b167175e53ba4aec40c631ac |
Hashes for PyQBDI-0.11.0-cp312-cp312-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cfdce1d387a3b95f4f595c9361176d137f8db07d45161a635a8130821d3fb06 |
|
MD5 | a23c8aca0e9ee0f261b3fca6374802ea |
|
BLAKE2b-256 | 47695eea2760aa0a958117411628a00807dfaaa93a59d98690ac7baf1f0df86b |
Hashes for PyQBDI-0.11.0-cp312-cp312-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 2cc12ecba5227783f886dc6c36ce763be04708aa9a27dfe20d7ea107a3c62d75 |
|
MD5 | c6d02f17aff5d48c8fe977daf71f8ab2 |
|
BLAKE2b-256 | 6bc9d85958cd247feec8f8dd445ad75aa588efdab9c295814f38847cb0286cc7 |
Hashes for PyQBDI-0.11.0-cp312-cp312-linux_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | c599a33528731989c60e01d44493c83cfc9eea95fd2a3be44c5049cd338f3ff6 |
|
MD5 | b6391e5a39b7c036b6e12ac282d20fc5 |
|
BLAKE2b-256 | 357ca9c87954a657a77e2996576a2e8c1995f043b8d64bb35831578746099b7e |
Hashes for PyQBDI-0.11.0-cp311-cp311-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | e56fcb514bcfda0289423fc8edc1493c9a7e68036194e0d9db992d423f26c94c |
|
MD5 | b053050dbe6c2db0adf99bb5e8d1acb0 |
|
BLAKE2b-256 | 77d27bd886ddbbcd1482c92443fa5a14f809033b1afb139f509e7a95f797170c |
Hashes for PyQBDI-0.11.0-cp311-cp311-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b924bb36d36b93dd178439b9db180a3b008206e249acc756beb3a2cde6a21ced |
|
MD5 | df01cf4a8f90bb0465aaeed63351505e |
|
BLAKE2b-256 | de202131cebb6d6f204e905c21c2c45d393a31213196a3889c7554d433f07eec |
Hashes for PyQBDI-0.11.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 86aaddce71789f95e8a6d7c0cc16844d63b19374dd987709598861428e86afe8 |
|
MD5 | 1985d30f052e8998a34d50f10f1b15cc |
|
BLAKE2b-256 | c50b5db096b5005e0ca82094c882376710c82d82aedb7b47e09cf39bf5da8e8c |
Hashes for PyQBDI-0.11.0-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bb2323f1831bb0b8462ad9bbc2ef34ac49f08ee0bc22edf00a9e830a85d5391f |
|
MD5 | 2099c8f020fd219a194bdf35e44799d6 |
|
BLAKE2b-256 | a206aa291e2fc2980fc55c2d989e6eb8fd8a7633b63719445ae80b852e3c6e7d |
Hashes for PyQBDI-0.11.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5639254e49bdba650f8438292f0f43582880fc3f12bc4d9a668eadc963e7aae8 |
|
MD5 | 81da1cc8e933b31f6651520f48a76ff0 |
|
BLAKE2b-256 | e313fdf94153124d37e1637a43e8276f507c358f981ee5d421a9d24c4fe1d859 |
Hashes for PyQBDI-0.11.0-cp311-cp311-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 815884b30e6c6d857995493a8fe51b11978adfe404ca1dc20a614ec6a62cab20 |
|
MD5 | 1cbb06c4f55ef32a7792257d9f886928 |
|
BLAKE2b-256 | 88671eb342ba3b799062b45759f87210e5cfe85476c5e33cc196d9d2e3c801af |
Hashes for PyQBDI-0.11.0-cp311-cp311-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | bce1917e91fe72e75d5b174932b592b2f6fc87fb82439ea9042839826c73b44b |
|
MD5 | dff23c7aca817a5e30c7575e610dff4c |
|
BLAKE2b-256 | f2be61498f9ace903a0265a29d445fd45ef57000bde1bf4e2670940b3a7c5c63 |
Hashes for PyQBDI-0.11.0-cp311-cp311-linux_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 6ac4b4a8f75265ed7f599ceb4e1fa367abb6c87969b35c27ca01c7e40ce079bd |
|
MD5 | bdd0cc4fcc4ba02b7e7616abacb1e7bd |
|
BLAKE2b-256 | 37b345b470992373a4451b3ae1afcc899d57df3c044d1e7b6f1c10605e7d2633 |
Hashes for PyQBDI-0.11.0-cp310-cp310-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cbef5be9ebb72a55aeb700ad76289cfd3a0318b45c3ca69618959ecdf6141cdc |
|
MD5 | b6bbc84200d39983be66c1325dddca0d |
|
BLAKE2b-256 | fdc60bdc2feba477cb22ccbee1f815d3bca4bec5e0989d2d281cc085d0acc430 |
Hashes for PyQBDI-0.11.0-cp310-cp310-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 08c669df0cddab3773600d270fd4127895b45e0299c6f253803dfcb3c1273e45 |
|
MD5 | 2373b88ee175a0d9ed2a6d2ee7a38524 |
|
BLAKE2b-256 | f6f1e17c584eb4f84d86563562c719a626b9c07ee4df47697b885c23acf03996 |
Hashes for PyQBDI-0.11.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 1e642cefd3aa00a9419df8ccf95b9df371db5976be73695ec17fa53b11ffe43e |
|
MD5 | 771071fbec17879794c6042656ec4480 |
|
BLAKE2b-256 | 8b329453b9f6eb1fd4ba295c34d98fca532cd0e7b84b688d3b23f19b8a5963b1 |
Hashes for PyQBDI-0.11.0-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 47753d303198a9b3b686fdd9b439430fcccf9715577750e177dd5321fe2228f5 |
|
MD5 | 8240e843dcef64b06560f8f7b75fa0ba |
|
BLAKE2b-256 | 392737fd89381649ea6b1ce9acc24d1654f75bf65ab5eef133170ff84bd7523f |
Hashes for PyQBDI-0.11.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d21d016bcc4145f590b506de9d0a966e1176fb81cce027b26ecf524fa980dd57 |
|
MD5 | 8df6134da191a225cd9cd718e5792a7e |
|
BLAKE2b-256 | e5de7baa8f27ff8e99444e869b05d42c3d80331401e8c3d75136aea2ce4bb5c5 |
Hashes for PyQBDI-0.11.0-cp310-cp310-macosx_11_0_arm64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9447e50bdc2163b95122cee0125ea7efe74a185c76b3c1a7b9ac1603f04b86e1 |
|
MD5 | 7ec40cefeb1d40c853450939f23d2cd4 |
|
BLAKE2b-256 | 6c62abdbc699bf5da9ad02b024f1a1cf9ec90cee6b2f0e66441fa5d730a4d72e |
Hashes for PyQBDI-0.11.0-cp310-cp310-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ad9b3a0dec46278e0339ad9591283a9929d40b64e0be908372fcf1b215bd9022 |
|
MD5 | 138483e27c38465eb316deafd04b1b2d |
|
BLAKE2b-256 | 01b29e915026333407b9e690ea99e37f1b2dc09749bdb34d93e19eaff33db288 |
Hashes for PyQBDI-0.11.0-cp310-cp310-linux_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | cdb15a2710fde80e99c74c3223fb60d3100de842da12b936627cd96207410911 |
|
MD5 | 476fa3c0e9cc2a7dcfa80b08f89c92e4 |
|
BLAKE2b-256 | 693562be220a104ca2a1d77f365c6d286bf13a16afc669d19f1ecdfb2cc46769 |
Hashes for PyQBDI-0.11.0-cp39-cp39-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | fd3387d032534312c9369b079836e108383228ff86c794ef634ba2d9bc4c7bd7 |
|
MD5 | 3365d363b841c2634032fe4cc7a10db4 |
|
BLAKE2b-256 | e9eb0df89d3a224442677c83238b2653cfed83271a3348ef75d6f7797f1dac82 |
Hashes for PyQBDI-0.11.0-cp39-cp39-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b59d86af2f1d26675ac195020c4805604aaf84086086aca2931a434052c3aed3 |
|
MD5 | 0976813a56acdfcabc81ed4b9cc592b6 |
|
BLAKE2b-256 | 5e15ef43f2ab166c2f8ea794fa14c0df569b4b3ff832004e2e6ff267a4e654db |
Hashes for PyQBDI-0.11.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 40b8ed946bed08dd51beb2b8e20af44bb3c43d9a7da05ba50cc60378cac5bdf1 |
|
MD5 | 061128d70c885214f948a1c532b3b894 |
|
BLAKE2b-256 | 1b49bbaeeead65cd58f6a4c84aa4153e5d549e1bcdfd9a8fffdc373750c4000e |
Hashes for PyQBDI-0.11.0-cp39-cp39-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 9ef9d535c0a3066088606b22cd75dc857183860d3bebb060850f99b34debde8d |
|
MD5 | 86aad24f1dfd092c9d8ed0b4d16b67a3 |
|
BLAKE2b-256 | 914a5741e6ecfae6920c3cd88fe33aac687feeca99f32297ef6a424392222d9e |
Hashes for PyQBDI-0.11.0-cp39-cp39-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b920bd34ea5ecf6188042a102839ffc4af0a3f849145a66963d3a24a92cd2e8e |
|
MD5 | 151bac84599e88931eab5d20bd319e96 |
|
BLAKE2b-256 | b63f8294464a0a287cc4157eb2b2edab7365db739658929bcc5f727d218b3022 |
Hashes for PyQBDI-0.11.0-cp39-cp39-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 50f6da058e89bb9168b1d36bddc092dcb260075bc56a30f7074113b840893548 |
|
MD5 | 3a6b63c5d14d4c397a935248e201dc85 |
|
BLAKE2b-256 | 7174eed5edea52d0aa47d70bc3e2c14ff6b54d660ea598ef9a79e99053d77a2a |
Hashes for PyQBDI-0.11.0-cp39-cp39-linux_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | ddf6aede3fbf936f1b8fbaf0ae5770937338d593e01d0e98fbb3c082472f106f |
|
MD5 | 61ea92b99bdba0a039a0313c34e99a3e |
|
BLAKE2b-256 | 3836096c44062fb73ba0ba09e09c14b18e882a663db19f33e454af274b580ac8 |
Hashes for PyQBDI-0.11.0-cp38-cp38-win_amd64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 42590ddbd48860afb2369c541a6e32377babfe5efcd48429de3f2389043ba62d |
|
MD5 | fc03ee8d2b8cfe378ee84041a9a55a3f |
|
BLAKE2b-256 | 133428de3998cc2d79c2c18bba1a1b1417f1de8d1c68c88b9400a25fcd21ff38 |
Hashes for PyQBDI-0.11.0-cp38-cp38-win32.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b708dcfe5d3c9d48f8b61edb1fed6ed793fa35f1e1c689a047f8cdc60c52b023 |
|
MD5 | 4b348e2ff52e93bb4ef1afc21d46388f |
|
BLAKE2b-256 | 150d2323d842bbe7a7ed2faae7764c17f9b6eb4519221157678fc4eaec950abe |
Hashes for PyQBDI-0.11.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 41fad7f55d06fea3f90d2d07ce3d382cf7745015a07a72a1b9ad28d555521e83 |
|
MD5 | e04f1e15017269ca595ab870f1ec2044 |
|
BLAKE2b-256 | 301177cb609caa77fb27b06a557bcf47638e8396316baec54bb00a6e7b1c1b0c |
Hashes for PyQBDI-0.11.0-cp38-cp38-manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4e26f301c35b94503728fd92ed56e6ddd6c036d56ccbf35c1ec8db53e631cb5d |
|
MD5 | 9d08c38f58018a7bf497e669baf4c616 |
|
BLAKE2b-256 | dcce2eb18f9ad350b935c20cce0e46ecc511c28f7ded156096376df6300a7e01 |
Hashes for PyQBDI-0.11.0-cp38-cp38-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 73582cb7dd8262e5cc4407603ff4dbb5d3ed61f1a25aa4475f925da50a252eff |
|
MD5 | c2676c96e8cacd417d50150bd5931571 |
|
BLAKE2b-256 | 551fabc0011cc0658735a829a3d1d5f559b850235616f3ac6e70d2fdfe41b0f7 |
Hashes for PyQBDI-0.11.0-cp38-cp38-macosx_10_14_x86_64.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | be44ba9b5bfba3657beab1e7ed35612e8a50db54ed044aee5839f678b3833d03 |
|
MD5 | 7cb93027444326124b5f525000f4fe65 |
|
BLAKE2b-256 | 89efdc224c359acf7bef6627d25960e28281b0f7d891a4cfa995404e4f0db8fe |
Hashes for PyQBDI-0.11.0-cp38-cp38-linux_armv7l.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | d0b64237d48c051780bf82adaadf75f1a77b2a8bea6966f1d1f93d06698230fc |
|
MD5 | 1d072a256e982b9f41262a16f26377bc |
|
BLAKE2b-256 | ec80f397d4b0ed77a6bf54978c6e23d175450aa9f5d2a5fee8cf4df21a7ffed1 |