{"id":13480850,"url":"https://github.com/QBDI/QBDI","last_synced_at":"2025-03-27T11:31:01.911Z","repository":{"id":27884391,"uuid":"108147444","full_name":"QBDI/QBDI","owner":"QBDI","description":"A Dynamic Binary Instrumentation framework based on LLVM.","archived":false,"fork":false,"pushed_at":"2024-08-27T13:39:02.000Z","size":3334,"stargazers_count":1414,"open_issues_count":15,"forks_count":161,"subscribers_count":68,"default_branch":"dev-next","last_synced_at":"2024-10-29T14:55:04.512Z","etag":null,"topics":["dbi","frida","instrumentation","llvm","reverse-engineering"],"latest_commit_sha":null,"homepage":"https://qbdi.quarkslab.com","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/QBDI.png","metadata":{"files":{"readme":"README-pypi.rst","changelog":"CHANGELOG","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-24T15:33:03.000Z","updated_at":"2024-10-29T07:19:01.000Z","dependencies_parsed_at":"2023-02-15T09:01:35.170Z","dependency_job_id":"ab2e6853-f669-44fc-931d-fc03a700105e","html_url":"https://github.com/QBDI/QBDI","commit_stats":{"total_commits":569,"total_committers":19,"mean_commits":29.94736842105263,"dds":"0.20913884007029881","last_synced_commit":"6f841fbaa368609b67e635d4f384002b09dc44b4"},"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QBDI%2FQBDI","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QBDI%2FQBDI/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QBDI%2FQBDI/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/QBDI%2FQBDI/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/QBDI","download_url":"https://codeload.github.com/QBDI/QBDI/tar.gz/refs/heads/dev-next","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245773156,"owners_count":20669719,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dbi","frida","instrumentation","llvm","reverse-engineering"],"created_at":"2024-07-31T17:00:45.838Z","updated_at":"2025-03-27T11:31:01.901Z","avatar_url":"https://github.com/QBDI.png","language":"C++","funding_links":[],"categories":["C++","Starchart","\u003ca id=\"b2fca17481b109a9b3b0bc290a1a1381\"\u003e\u003c/a\u003eQBDI"],"sub_categories":["\u003ca id=\"e72b766bcd3b868c438a372bc365221e\"\u003e\u003c/a\u003e工具"],"readme":"Introduction\n============\n\n.. image:: https://readthedocs.org/projects/qbdi/badge/?version=stable\n    :target: https://qbdi.readthedocs.io/en/stable/?badge=stable\n    :alt: Documentation Status\n\n.. image:: https://img.shields.io/github/v/release/QBDI/QBDI\n    :target: https://github.com/QBDI/QBDI/releases\n\n.. image:: https://img.shields.io/pypi/pyversions/PyQBDI\n    :target: https://pypi.org/project/PyQBDI/\n\n.. image:: https://img.shields.io/pypi/v/PyQBDI\n    :target: https://pypi.org/project/PyQBDI/\n\nQuarkslaB Dynamic binary Instrumentation (QBDI) is a modular, cross-platform and cross-architecture\nDBI framework. It aims to support Linux, macOS, Android, iOS and Windows operating systems running on\nx86, x86-64, ARM and AArch64 architectures. In addition of C/C++ API, Python and JS/frida bindings are\navailable to script QBDI. Information about what is a DBI framework and how QBDI\nworks can be found in the `documentation introduction \u003chttps://qbdi.readthedocs.io/en/stable/intro.html\u003e`_.\n\nQBDI modularity means it doesn't contain a preferred injection method and it is designed to be\nused in conjunction with an external injection tool. QBDI includes a tiny (``LD_PRELOAD`` based)\nLinux and macOS injector for dynamic executables (QBDIPreload).\nQBDI is also fully integrated with `Frida \u003chttps://frida.re\u003e`_, a reference dynamic instrumentation toolkit,\nallowing anybody to use their combined powers.\n\nA current limitation is that QBDI doesn't handle signals, multithreading (it doesn't deal with new\nthreads creation) and C++ exception mechanisms.\nHowever, those system-dependent features will probably not be part of the core library (KISS),\nand should be integrated as a new layer (to be determined how).\n\nStatus\n++++++\n\n.. role:: green\n.. role:: yellow\n.. role:: orange\n.. role:: red\n\n=======   ==============================   ========================   =================================\nCPU       Operating Systems                Execution                  Memory Access Information\n=======   ==============================   ========================   =================================\nx86-64    Android, Linux, macOS, Windows   :green:`Supported`         :green:`Supported`\nx86       Android, Linux, macOS, Windows   :green:`Supported`         :green:`Supported`\nARM       Android, Linux                   :yellow:`Supported (*)`    :yellow:`Supported (*)`\nAArch64   Android, Linux, macOS            :yellow:`Supported (*)`    :yellow:`Supported (*)`\n=======   ==============================   ========================   =================================\n\n\\* The ARM and AArch64 instruction sets are supported but in early support.\n\nInstallation\n============\n\nPython API (PyQBDI)\n+++++++++++++++++++\n\nPyQBDI is available through PyPI. The wheel package can be either `downloaded \u003chttps://pypi.org/project/PyQBDI/#files\u003e`__ or installed with the following command:\n\n    pip install PyQBDI\n\nThe PyQBDI package is self-contained so completely independent from the C/C++ package.\n\nDevel packages\n++++++++++++++\n\nThere is no strict development timeline or scheduled release plan for the QBDI project.\nAll the new features and fixes are merged onto the ``dev-next`` branch.\nDevel packages can be downloaded in the artefacts of `Github Actions \u003chttps://github.com/QBDI/QBDI/actions/workflows/python.yml?query=branch%3Adev-next\u003e`__.\n\nCompilation\n===========\n\nThe PyQDBI library (apart from the wheel package) can be built by solely passing the **'-DQBDI_TOOLS_PYQBDI=ON'** option to the CMake build system.\n\nHowever, if you want to build the wheel package, you can run these commands::\n\n    git clone https://github.com/QBDI/QBDI.git\n    python -m pip install --upgrade pip\n    python -m pip install setuptools wheel build\n    python -m build -w\n\nA 32-bit version of Python is mandatory for the X86 architecture whereas a 64-bit one is required for the X86-64 architecture.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQBDI%2FQBDI","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FQBDI%2FQBDI","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FQBDI%2FQBDI/lists"}