git-svn-id: file:///home/svn/incoming/trunk@3107 4d416f70-5f16-0410-b530-b9f4589650da
This commit is contained in:
Matt Miller
2005-11-25 22:23:38 +00:00
parent e09302fa46
commit 51ac5193fd
@@ -892,8 +892,80 @@ of the module's underlying file path and automatically creating a
new instance of the module.
\subsubsection{Plugin management}
\par
One of the new features in the 3.0 version of the framework is the
concept of framework plugins. Unlike modules, framework plugins are
meant to add features to the framework or to change the behavior of
existing aspects of the framework. Plugins have a very loose
definition in terms of the scope in which they can operate. For
instance, a plugin could add an entirely new module type for use by
the framework. Alternatively, a plugin could add commands to the
existing user interfaces that interact with the framework. The
possibilities, as they say, are endless.
\par
The plugin manager can be accessed through the
\texttt{framework.plugins} accessor which is an instance of the
\texttt{Msf::PluginManager} class. To load a plugin, a call can be
made to \texttt{framework.plugins.load} with the path of the plugin
that is to be loaded. Optionally, a second parameter can be passed
to the \texttt{load} method that is a hash of option parameters that
may be useful to the plugin, such as \texttt{LocalInput} and
\texttt{LocalOutput} handles for use with printing strings to the
screen or whatever medium is currently being used. The table shown
in figure \ref{fig-table-plugin-hash} shows the pre-defined hash
elements that can be passed in the option hash.
\begin{figure}[h]
\begin{center}
\begin{tabular}{|l|p{3.5in}|}
\hline
\textbf{Hash Element} & \textbf{Description} \\
\hline
LocalInput & The local input class instance which implements the \texttt{Rex::Ui::Text::Input} interface. \\
LocalOutput & The local input class instance which implements the \texttt{Rex::Ui::Output} interface. \\
ConsoleDriver & The console driver instance of \texttt{Msf::Ui::Console::Driver}. \\
WebDriver & The console driver instance of \texttt{Msf::Ui::Web::Driver}. \\
\hline
\end{tabular}
\caption{Module types and their framework accessors}
\label{fig-table-plugin-hash}
\end{center}
\end{figure}
\par
All plugins are reference counted. This is to make it possible to
implement singleton plugins that could possibly be loaded more than
once but will only have one underlying instance. The reference
count to an instance of a plugin is automatically incremented each
time \texttt{load} is called on it.
\par
To unload a framework plugin, a call can be made to
\texttt{framework.plugins.unload} passing the instance of the plugin
previously loaded as the first parameter. Since all plugins are
reference counted, a plugin will not actually be unloaded until its
reference count drops to zero.
\par
For more detail on the implementation of framework plugins, please
see chapter \ref{framework-plugins}.
\subsubsection{Recon management}
\par
The reconnaissance manager is used to provide an interface for
reporting information about hosts, services, and other
reconnaissance entities. These reports are tracked internally by
the recon manager which is implemented by the
\texttt{Msf::ReconManager} class. The recon manager can be accessed
through the \texttt{framework.reconmgr} accessor.
\par
This area of the framework is currently undergoing design review and
therefore does not have any documentation at this time.
\section{Framework Base}
\subsection{Configuration}
\subsection{Logging}
@@ -919,6 +991,8 @@ new instance of the module.
\subsection{Discovery}
\subsection{Analyzer}
\chapter{Framework Plugins}
\label{framework-plugins}
\section{User-interface Plugins}
\chapter{Methodologies}
\section{Writing an Exploit}