Class AutoVersionTrackingTask

java.lang.Object
ghidra.util.task.Task
ghidra.feature.vt.gui.actions.AutoVersionTrackingTask
All Implemented Interfaces:
ghidra.util.task.MonitoredRunnable

public class AutoVersionTrackingTask extends ghidra.util.task.Task
If their options are set, this command runs all of the exact VTProgramCorrelators that return unique matches (i.e., only one of each match is found in each program) for each correlator selected in the autoVT options to run:
  1. Exact Symbol Name correlator
  2. Exact Data correlator
  3. Exact Function Byte correlator
  4. Exact Function Instruction correlator
  5. Exact Function Mnemonic correlator

After running each of the above correlators all matches are accepted since they are exact/unique matches and all markup from the source program functions is applied to the matching destination program functions.

Next, if the autoVT option for this correlator is selected, the command runs the Duplicate Function Instruction correlator to find any non-unique functions with exact instruction bytes. It then compares their operands to try and determine unique matches within matching sets and if found will accept correct matches and apply markup.

If chosen, the command then gets a little more speculative by running the Data Reference Correlator, the Function Reference Correlator, and/or the Combined Function and Data Reference Correlator, which use accepted match information from the previous correlators to find more matches. Only the matches with minimum score/confidence values, as chosen in the autoVT options, will be accepted.

If the user chooses to create implied matches then whenever matches are accepted, matches that can be implied by those matches as new matches will be created. If the user chooses to accept applied matches, then they will be applied if the chosen minimum vote count is met and if the chosen maximum conflict count is not exceeded. All options can be set in the Version Tracking Match Window's Edit -> Tool Options in Version Tracking/Auto Version Tracking option folder.

  • Field Summary

    Fields inherited from class ghidra.util.task.Task

    taskMonitor, waitForTaskCompleted
  • Constructor Summary

    Constructors
    Constructor
    Description
    AutoVersionTrackingTask(VTSession session, ghidra.framework.options.ToolOptions toolOptions)
    Constructor for a modal/blocking AutoVersionTrackingTask
  • Method Summary

    Modifier and Type
    Method
    Description
     
    int
     
    void
    run(ghidra.util.task.TaskMonitor monitor)
     

    Methods inherited from class ghidra.util.task.Task

    addTaskListener, canCancel, cancel, getTaskTitle, getWaitForTaskCompleted, hasProgress, isCancelled, isModal, monitoredRun, notifyTaskListeners, setHasProgress

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AutoVersionTrackingTask

      public AutoVersionTrackingTask(VTSession session, ghidra.framework.options.ToolOptions toolOptions)
      Constructor for a modal/blocking AutoVersionTrackingTask
      Parameters:
      session - The Version Tracking session containing the source, destination, correlator and match information needed for this command.
      toolOptions - the options used when applying matches
      minCombinedReferenceCorrelatorScore - The minimum score used to limit matches created by the Combined Reference Correlator.
      minCombinedReferenceCorrelatorConfidence - The minimum confidence used to limit matches created by the Combined Reference Correlator.
  • Method Details

    • getStatusTextAlignment

      public int getStatusTextAlignment()
      Overrides:
      getStatusTextAlignment in class ghidra.util.task.Task
    • run

      public void run(ghidra.util.task.TaskMonitor monitor) throws ghidra.util.exception.CancelledException
      Specified by:
      run in class ghidra.util.task.Task
      Throws:
      ghidra.util.exception.CancelledException
    • getStatusMsg

      public String getStatusMsg()