What is Peach
Installing
Tutorials
Methodology
Introduction
FAQ
Peach 3
Peach Pits
 General Conf
 Data Modeling
 State Modeling
 Agents
  Monitors
 Test
  Publishers
  Loggers
Running
Minset
Peach 2.3

License

Process Monitor

The Process monitor controls a process during a fuzzing run. It has a number of features:

  • Restart a process when it dies

  • Log a fault if a process exits early

  • Restart a process on every iteration

  • Terminate a process is the cpu usage is low

  • Interact with StateModel to allow waiting for process exit

  • Interact with StateModel to allow for delayed starting of a process

Parameters

  • Executable — Executable to launch

  • Arguments — Command line arguments (optional)

  • RestartOnEachTest — Restart process on each iteration (optional, defaults to false)

  • FaultOnEarlyExit — Trigger fault if process exits (optional, defaults to false)

  • NoCpuKill — Disable process killing when CPU usage nears zero (optional, defaults to false)

  • StartOnCall — Start process on a call action from the StateModel (this value and the method value must match), (optional)

  • WaitForExitOnCall — Wait for process to exit on state model call (this value and the method value must match), (optional)

  • WaitForExitTimeout — Wait timeout value. Triggers fault when timeout hit. (optional, default disabled)

Examples

Start process
<Agent name="Local">
        <Monitor class="Process">
                <Param name="Executable" value="notepad.exe" />
                <Param name="Arguments" value="README.txt" />
        </Monitor>
</Agent>
Restart process on each test
<Agent name="Local">
        <Monitor class="Process">
                <Param name="Executable" value="notepad.exe" />
                <Param name="Arguments" value="README.txt" />
                <Param name="RestartOnEachTest" value="true" />
        </Monitor>
</Agent>
Start process from state model
<StateModel name="TheStateModel">
        <State name="initial">
                <Action type="call" method="ScoobySnacks" />
        </State>
</StateModel>

<Agent name="Local">
        <Monitor class="Process">
                <Param name="Executable" value="notepad.exe" />
                <Param name="Arguments" value="README.txt" />
                <Param name="StartOnCall" value="ScoobySnacks" />
        </Monitor>
</Agent>
Wait for process to exit in state model
<StateModel name="TheStateModel">
        <State name="initial">
                <!-- This action will block until process exits -->
                <Action type="call" method="ScoobySnacks" />
        </State>
</StateModel>

<Agent name="Local">
        <Monitor class="Process">
                <Param name="Executable" value="notepad.exe" />
                <Param name="Arguments" value="README.txt" />
                <Param name="WaitForExitOnCall" value="ScoobySnacks" />
        </Monitor>
</Agent>