Pretty simple VMM hypercall fuzzer

Usage: -i -m tools.vmm.hypercallfuzz [-a <mode>,<vector_reg>,<maxval>,<iterations>]

  • modeHypercall fuzzing mode
    • exhaustive : Fuzz all arguments exhaustively in range [0:<maxval>] (default)

    • random : Send random values in all registers in range [0:<maxval>]

  • vector_reg : Hypercall vector register

  • maxval : Maximum value of each register

  • iterations : Number of iterations in random mode

  • []: optional line

>>> -i -m tools.vmm.hypercallfuzz
>>> -i -m tools.vmm.hypercallfuzz -a random,22,0xFFFF,1000
Additional options set within the module:
  • DEFAULT_VECTOR_MAXVAL : Default maximum value

  • DEFAULT_MAXVAL_EXHAUSTIVE : Default maximum value for exhaustive testing

  • DEFAULT_MAXVAL_RANDOM : Default maximum value for random testing

  • DEFAULT_RANDOM_ITERATIONS : Default iterations for random testing

  • _FLUSH_LOG_EACH_ITER : Set to flush log after each iteration

  • _LOG_ALL_GPRS : Display log of each iteration values


  • Returns a Warning by default

  • System may be in an unknown state, further evaluation may be needed


  • This module is designed to run in a VM environment

  • Behavior on physical HW is undefined