QBDI Framework
Easy to use C/C++ APIs
QBDI::VMAction printInstruction(QBDI::VMInstanceRef vm,
QBDI::GPRState* gprState,
QBDI::FPRState* fprState,
void* data) {
const QBDI::InstAnalysis* instAnalysis = vm->getInstAnalysis();
std::cout << std::setbase(16) << instAnalysis->address << " "
<< instAnalysis->disassembly << std::endl << std::setbase(10);
return QBDI::VMAction::CONTINUE;
}
int main() {
uint8_t *fakestack = nullptr;
QBDI::VM *vm = new QBDI::VM();
QBDI::GPRState *state = vm->getGPRState();
QBDI::allocateVirtualStack(state, 0x1000000, &fakestack);
vm->addInstrumentedModuleFromAddr(funcPtr);
vm->addCodeCB(QBDI::PREINST, printInstruction, NULL);
rword retVal;
vm->call(&retVal, funcPtr, {42});
}