<tutorial>
	<name>Working with Modules</name>
	<description>Once you have imported data from an external disassembler like IDA Pro you want to start working with it. This tutorial introduces you to all the aspects of modules you need to be familiar with when you start to work with them.&lt;br/&gt;
&lt;br/&gt;
In this tutorial you will learn about the following concepts:&lt;br/&gt;
&lt;ul&gt;
&lt;li&gt;Callgraph and functions of a module&lt;/li&gt;
&lt;li&gt;Module views&lt;/li&gt;
&lt;li&gt;Binary module data&lt;/li&gt;
&lt;/ul&gt;
</description>
	<steps>
		<step>
			<action>0</action>
			<description>This tutorial shows you how to work with modules. Starting with an arbitrary module that already exists in a configured database, the available functionality for this module is explained. At the end of the tutorial you will know about most of the module concepts accessible from the Project Tree.&lt;br/&gt;
&lt;br/&gt;
Please click on the Next button to continue.
</description>
		</step>
		<step>
			<action>0</action>
			<allowed>-2369159756337681560</allowed>
			<allowed>-9044865055464757942</allowed>
			<allowed>8784926684855833953</allowed>
			<allowed>-7789885643476931774</allowed>
			<allowed>-8750454886776173497</allowed>
			<allowed>-5178343179269965998</allowed>
			<allowed>2804136480786366059</allowed>
			<description>If you do not have a database configured and a module imported please do so now. It is recommended that you work with the primes.exe file which you can find in the tutorials directory of your BinNavi installation.&lt;br/&gt;
&lt;br/&gt;
If you have a module imported please click on the next Next button to continue.
</description>
		</step>
		<step>
			<action>-5435176252593734737</action>
			<description>When you click on a module in the Project Tree the right-hand side of the main window shows additional information about the module. Among other data, this information includes the name of the module and an optional description which gives more information about the module.&lt;br/&gt;
&lt;br/&gt;
Please change the name or the description of the module and click on the Save button to save your changes.&lt;br/&gt;
</description>
		</step>
		<step>
			<action>0</action>
			<description>More interesting than the name and description of the module are the functions which can be found inside the module. You can see module functions in the lower half of the right-hand side of the main window when a module is selected in the Project Tree. Additionally you can find the functions again when you select the Native Flowgraphs node of a module in the Project Tree. You can even filter the list of functions by type when you expand the Native Flowgraphs node and click on one of it children.&lt;br/&gt;
&lt;br/&gt;
Please click on the Native Flowgraphs node now. On the right-hand side of the main window you can now see a table that lists all functions that belong to the selected module. In addition to the name and the address of the functions you can see some structural information about the functions too. The table lists the number of basic blocks and the number of edges of all the functions as well as the number of incoming and outgoing function calls.&lt;br/&gt;
&lt;br/&gt;
Above the list of functions you can find a small single-line text field named Filter. If you enter text here you can filter the table according to your input. In the simplest case, only those functions whose name or description contains the filter string are shown. To learn how you can create more complex filters, please consult the BinNavi manual.&lt;br/&gt;
&lt;br/&gt;
Please click on the Next button to continue.&lt;br/&gt;
</description>
		</step>
		<step>
			<action>0</action>
			<description>The functions you have seen in the last step of this tutorial are what we call the native views in BinNavi. Native views are always created from the data that is imported from an external disassembler and they can not be modified after the initial import. Of course you want to modify disassembled data while working whenever you discover new information.&lt;br/&gt;
&lt;br/&gt;
This is where the concept of non-native views come in. Non-native views can be arbitrarily created and modified and they can contain any kind of code (or no code at all). Initially there are no non-native views in a module but while you are working with it you will frequently create new non-native views.&lt;br/&gt;
&lt;br/&gt;
Non-native views are shown when you select the Module Views node of a module in the Project Tree. The only way to create a new non-native view from the main window is to create a copy of an existing view. You do this by drag &amp; dropping an existing view from one of the view tables onto the Module Views node. Note that this is not the normal way to create a new non-native view. In most cases you create new non-native views when saving your modifications of a native view.&lt;br/&gt;
&lt;br/&gt;
After you have created a copy of an existing view please click on the Next button to continue.
</description>
		</step>
		<step>
			<action>0</action>
			<description>Functions are not the only views created for a module during its initial import. For each module the import process creates the so called native callgraph too. This native callgraph shows how the functions of the module call each other. You can find the native callgraph when you click on the Native Callgraph node of a module.&lt;br/&gt;
&lt;br/&gt;
There is no difference in treatment between callgraphs and flowgraphs in BinNavi. That means you can just as easily create copies of callgraphs as you can do of flowgraphs. For this reason it is not necessary to create a non-native callgraph view at this point and we can just move on to the next part of the tutorial.&lt;br/&gt;
&lt;br/&gt;
Please click on the Next button to continue.
</description>
		</step>
		<step>
			<action>0</action>
			<description>The final part of this tutorial is about binary module data that can be associated with each module. Module data is simply the binary file that is the data source of the module. This binary file is not written to the database by default. If you need this data you have to add it manually once you have created the BinNavi module.&lt;br/&gt;
&lt;br/&gt;
Please click on the Next button to continue.
</description>
		</step>
		<step>
			<action>4173682656470933076</action>
			<description>You start working with the module data by clicking on the Data node of a module in the Project Tree. If the Data node is selelected a hex editor is shown on the right-hand side of the main window. Once loaded, the module data is then shown in the hex editor.&lt;br/&gt;
&lt;br/&gt;
When you associate data with a module for the first time, you have to load the data from a local file. Please do this now by clicking on the Load button next to the Store button. Please select the file you want to associate with the active module. For the purpose of this tutorial please select the file primes.exe from the tutorials subdirectory of your BinNavi installation.&lt;br/&gt;
</description>
		</step>
		<step>
			<action>-7058938411200766428</action>
			<allowed>4173682656470933076</allowed>
			<description>Now that you have loaded the module data from the file you can store the module data in the database. This is not always useful if you have a slow connection and a large input file. You do not want to pull a 50 MB file over a slow connection for example. The file primes.exe is rather small though and can therefore safely be stored in the database.&lt;br/&gt;
&lt;br/&gt;
Please click on the Store button now to store the module data in the database.&lt;br/&gt;
</description>
		</step>
		<step>
			<action>6407054355352505148</action>
			<allowed>-7058938411200766428</allowed>
			<description>The next time you load this module you do not have to load the binary data from the file anymore. You can simply click on the left Load button to load the data from the database instead. Binary data is not loaded automatically because of performance reasons.&lt;br/&gt;
&lt;br/&gt;
Please click on the Load button now to reload the data from the database.&lt;br/&gt;
</description>
		</step>
		<step>
			<action>0</action>
			<description>You have now reached the end of this tutorial. At this point you should be familiar with native and non-native views and how they are related to the functions of a module. Furthermore you have learned how to load and view the binary data of a module.&lt;br/&gt;
&lt;br/&gt;
There are other important aspects of modules for example the settings related to debugging and tagging. These topics are covered in other tutorials.&lt;br/&gt;
&lt;br/&gt;
Please click on the Next button to finish this tutorial.
</description>
		</step>
	</steps>
</tutorial>
