Now we actually use the ListViewItem object we create on every iteration
instead of creating one and only passing the string property value. ~38%
speed increase each iteration on DEBUG and RELEASE configurations.
<h1>Reproduction of the issue</h1>
- Open up a keylogger form and make sure no entries are selected.
- Invoke the "ItemActivate" method by pressing enter.
- Since no items are selected, it cannot index the 0th item of lstLogs' SelectedItems, causing an exception that is uncaught and crashes the server.
Added FrmMain instance null check to safely exit a thread in the
FrmKeylogger form in the case of client-server disconnection. The
FrmKeylogger spawns a thread that waits for the enabled button to be set
to true, after successfully receiving all the log files from the client.
If the server were to somehow not process the button being enabled it
would hang in the while loop leaving the entire process to be left in
memory due to the thread being open.
-added hookless keylogger class with unicode support
-logs on keylogger class are saved in html format
-added keylogger form using webbrowser to load the log as an html file
-added context menu keylogger option under surveillance
-started keylogger setting enable/disable on client file execution
(didn't complete this, wasn't sure how to do it properly. just added
the setting in the settings class and in program class for the logic.
only thing left is the server side stuff)
left todo:
-encryption/decryption of logs if desired
-options to enable/disable when building client, etc...