Releases: QBDI/QBDI
Releases · QBDI/QBDI
QBDI 0.11.0
- Fix ARM instrumentation for 'mov pc, lr' (#241)
- Add switchStackAndCall API (#245)
- Rename
QBDI::InstAnalysis::module
andQBDI::InstAnalysis::symbol
toQBDI::InstAnalysis::moduleName
andQBDI::InstAnalysis::symbolName
. The same changed applied in C, C++, Python and JS API, but Python and JS API deprecated but still support the previous name. - Update LLVM to LLVM17 (#253)
- Support copy and pickle for GPRState and FPRState in PyQBDI (#247, #248)
- Support python 3.12 (#247)
QBDI 0.10.0
QBDI 0.9.0
- Change internal log system (#174).
- Fix templates (#186)
- Fix Frida-QBDI for Frida 15.0.0 (#192)
- Change behavior of
addInstrumentedModuleFromAddr
to work with mmap region (#193) - Add Priority to InstCallback API (#194).
- Support for X86
loop
,loope
andloopne
instructions (#200) - Add support for
FS
andGS
segment in X86_64 (#190). - Hide LLVM symbols from shared library and QBDIPreload (#205)
- Support python 3.10 for PyQBDI (#206)
- Add VMAction
SKIP_INST
andSKIP_PATCH
(#197) - Add tutorial for basic block VMEvent (#165)
- Support C++ lambda with capture. (#207)
- Fix a bug where some symbols were missing in QBDIPreload (#209)
- Remove new name of libc in QBDIPreload (#211)
- Support of some self-modifying code (#212).
- Add tutorial for ExecBroker VMEvent (#166)
- Change
getVersion
out parameter to return version to the form0xMMmmpp
(#214)
Internal update:
- Add static library licenses in LICENSE.txt (#169)
- Format code with clang-format and cmake-format (#175)
- Fix integer overflow in cache optimisation (#168)
- Refactor build system, add llvm build in main cmake with FetchContent, move all LLVM object in a new LLVMCPU class, split internal class, split state by architecture (#178, #179 and #188)
- Update LLVM to LLVM 13.0.0, remove zlib dependency (#189, #196)
- Remove empty Patch not associated to an MCInst (#195)
- Compile assembly with
--noexecstack
to have arw-
stack when using QBDI on linux (#201) - Use build directory to build the documentation (#213)
- Use Doxygen 1.9.2 in readthedocs (#214)
QBDI 0.8.0
- Fix android compilation (#126)
- Fix instrumentation of Pusha and Popa on X86 (#127)
- Fix getBBMemoryAccess (#128)
- Refactor ExecBlockManager to work with unaligned instruction on X86 and X86-64 (#129)
- Drop early support for ARM. The support hasn't been tested since 0.6.2.
- Rework cmake package export to import X86 and X86_64 version of QBDI in one CMake (#146 and #132)
- Add
QBDI::VM::getCachedInstAnalysis
to retrieve an InstAnalysis from an address. The address must be cached in the VM. (#148) - Change in
InstAnalysis
andOperandAnalysis
(#153) - Add Instrumentation rule callback
QBDI_InstrRuleDataCBK
andQBDI::InstrRuleDataCBK
(#151) - Support SIMD MemoryAccess and change :cpp:struct:
QBDI::MemoryAccess
structure (#154) - Add VM Options. (#144)
- Rework documentation (#156)
Internal update:
- Update LLVM to LLVM 10.0.1 (#104 and #139)
- Reduce LLVM library included in QBDI static library and reduce QBDI package size (#139 and #70)
- Replace GTest by Catch2 (#140)
- Refactor code and switch to cpp17 (#140 and #155)
- Use Github Actions to build dev-next package of QBDI (linux, osx and android) and PyQBDI (linux and osx) (#147 and #159)
- Rewrite frida-qbdi.js and use sphinx-js for frida-QBDI documentation (#146).
A version of frida greater or equals to 14.0 is needed to run frida-qbdi.js (need support of ES2019). - Refactor MemoryAccess Code and add new tests (#154)
- Handle VMCallback return value (#155)
- Optimize Context Switch and FPRState restoration (#144)
- Add commit hash in devel version (#158)
QBDI 0.7.1
QBDI 0.7.0
- Add support for the x86 architecture
- Add new platforms related to Android: android-X86 and android-X86_64
- Improve MemoryMap structure by adding the module’s full path if available (#62, #71)
- Create docker images for QBDI (available on DockerHub qbdi/qbdi) (#56)
- Fix and improve operands analysis involved in memory accesses (#58)
QBDI 0.6.2
- Add support for a public CI (based on Travis and AppVeyor)
- Fix instruction operands analysis (#57, #59)
- Add missing MEMORY_READ enum value in Python bindings (#61)
- Fix cache misbehavior on corner cases (#49, #51)
- Add missing memory access instructions on x86_64 (#45, #47, #72)
- Enable asserts in Debug builds (#48)
QBDI 0.6.1
Two major bug fixes:
- Fixing a performance regression with the addCodeAddrCB (#42):
Since 0.6, this API would trigger a complete cache flush forcing the engine to regenerate
all the instrumented code after each call. Since this API is used inside VM:run(), this
had the effect of completely canceling precaching optimization where used. - Fixing support for AVX host without AVX2 support (#19):
Context switching was wrongly using AVX2 instructions instead of AVX instructions causing
segfaults under hosts supporting AVX but not AVX2.
QBDI 0.6.0
Mostly a maintenance update:
- Important performance improvement in the core engine (#30)
This slightly changes the behavior of VMEvents. - Fix the addCodeAddrCB API (#37)
- atexit and getCurrentProcessMap in python bindings (#35)
- Fix getInstAnalysis on BASIC_BLOCK_ENTRY (#28)
- Various documentation improvements (#34, #37, #38, #40) and an API uniformisation (#29)
0.5.0 final release
This is the first public release of QBDI.
This is not perfect, there are areas of improvement, but it is a first step in the right direction :-)