Xeno-rat
Loading...
Searching...
No Matches
Plugin.Main Class Reference
Collaboration diagram for Plugin.Main:

Classes

struct  PROCESSENTRY32
 
class  ProcessNode
 

Public Member Functions

async Task Run (Node node)
 Sends a byte array to the specified node and then runs the ChatForm application.
 
async Task Run (Node node)
 Asynchronously runs the node and handles communication with connected nodes.
 
bool CanWrite (string path)
 Checks if the specified path is writable.
 
long BytesToLong (byte[] data, int offset=0)
 Converts a byte array to a long integer.
 
byte[] LongToBytes (long data)
 Converts a long integer to an array of bytes.
 
async Task Run (Node node)
 Runs the specified node and performs different actions based on the received opcode.
 
void BlueScreen ()
 Triggers a blue screen of death (BSOD) by raising a hard error.
 
async Task ShowMessageBox (Node node)
 Displays a message box with the specified text.
 
void OpenCDtray ()
 Opens the CD tray.
 
void CloseCdtray ()
 Closes the CD tray.
 
void MonitorOff ()
 Turns off the monitor.
 
void MonitorOn ()
 Turns on the monitor.
 
void SetVolume (int vol)
 Sets the volume level of the default audio endpoint device.
 
async Task StartLoop (Node node)
 Starts a loop to continuously receive and process commands from the specified node.
 
string ChromeExePath ()
 Retrieves the file path of the Chrome executable.
 
string FirefoxExePath ()
 Retrieves the path to the Firefox executable.
 
void recvThread (Socket sock, Node client)
 Receives data from the client and sends a response back using the specified socket.
 
void sendThread (Socket sock, Node client)
 Listens for incoming data on the specified sock and sends it to the client .
 
void FirefoxForwarder (Node node, string FireFoxPath)
 Forwards the given node to the specified Firefox path.
 
void ChromeForwarder (Node node, string ChromePath)
 Opens a new instance of Google Chrome with remote debugging enabled and connects to it using a socket.
 
void Run (Node node)
 Sends a byte array to the specified node, checks for available browsers, and forwards the request to the selected browser.
 
static int SetProcessDpiAwareness (int awareness)
 Sets the awareness level of the current process to the specified DPI awareness level.
 
async Task Run (Node node)
 Runs the specified node and performs various operations based on the received data.
 
async Task ScreenShotThread ()
 Takes a screenshot and sends it to the ImageNode asynchronously.
 
async Task< bool > AcceptSubSubNode (Node node)
 Asynchronously accepts a sub-node and adds it to the current node's sub-nodes.
 
delegate IntPtr HookCallbackDelegate (int nCode, IntPtr wParam, IntPtr lParam)
 
static IntPtr SetWindowsHookEx (int idHook, HookCallbackDelegate lpfn, IntPtr wParam, uint lParam)
 Sets an application-defined hook procedure for a hook.
 
static bool UnhookWindowsHookEx (IntPtr hhk)
 Unhooks a Windows hook or a hook procedure installed in a hook chain by the SetWindowsHookEx function.
 
static IntPtr GetModuleHandle (string lpModuleName)
 Retrieves a module handle for the specified module.
 
static IntPtr CallNextHookEx (IntPtr hhk, int nCode, IntPtr wParam, IntPtr lParam)
 Passes the hook information to the next hook procedure in the hook chain. A hook procedure can call this function either before or after processing the hook information.
 
async Task Run (Node node)
 Asynchronously runs the keylogger on the specified node, sending key data to the node when available.
 
async Task sendKeyData (string open_application, string charectar)
 Sends the specified key data to the connected node asynchronously.
 
IntPtr HookCallback (int nCode, IntPtr wParam, IntPtr lParam)
 Callback function for keyboard hook.
 
static short GetKeyState (int keyCode)
 Retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off—alternating each time the key is pressed).
 
async Task Run (Node node)
 Runs the specified node and performs audio operations.
 
async Task recvThread (Node node)
 Asynchronously receives data from the specified node and processes it based on the received commands.
 
async Task Run (Node node)
 Asynchronously runs the specified node and performs various operations based on the received opcode.
 
async Task RecvThread (Node node)
 Asynchronously receives data from the specified node and processes it accordingly.
 
async Task Run (Node node)
 Asynchronously runs the node and sends process information to the connected node.
 
bool DeleteRegistrySubkey (string path)
 Deletes the specified registry subkey.
 
bool DeleteRegistryValue (string path, string keyname)
 Deletes a registry value from the specified path and key name.
 
async Task Run (Node node)
 Asynchronously runs the specified node and handles communication with it.
 
async Task Run (Node node)
 Asynchronously runs the node communication process.
 
static int SetProcessDpiAwareness (int awareness)
 Sets the DPI awareness for the current process.
 
async Task Run (Node node)
 Asynchronously runs the specified node and performs various actions based on the received data.
 
async Task ScreenShotThread ()
 Takes screenshots and sends them to the connected image node.
 
async Task< bool > AcceptSubSubNode (Node node)
 Asynchronously accepts a subnode and adds it to the parent node.
 
async Task Run (Node node)
 Runs the specified node and handles communication with it.
 
async Task CreateProc (string path, Node node)
 Creates a new process using the specified file path and redirects its standard input and output to the provided Node.
 
async Task Run (Node node)
 Asynchronously runs the specified node and performs various operations based on the received data.
 
async Task Run (Node node)
 Runs the specified node and performs actions based on the received data.
 
async Task Run (Node node)
 Runs different system commands based on the input data received from the node and sends back the result.
 
async Task Run (Node node)
 Runs the specified node and performs necessary operations, such as sending a byte array to indicate connection, setting the monkier if video devices are available, and handling exceptions during the receive operation.
 
async void Capture (object sender, NewFrameEventArgs eventArgs)
 Captures a frame and sends it to the specified ImageNode if playing is true.
 
async Task RecvThread (Node node)
 Asynchronous method to handle receiving data from a node.
 

Static Public Member Functions

static byte[] SerializeLoginList (List< Chromium.Login > loginList)
 Serializes a list of Chromium logins into a byte array.
 
static byte[] SerializeCookieList (List< Chromium.Cookie > cookieList)
 Serializes a list of Chromium cookies into a byte array.
 
static byte[] SerializeWebHistoryList (List< Chromium.WebHistory > historyList)
 Serializes a list of web history items into a byte array.
 
static byte[] SerializeDownloadList (List< Chromium.Download > downloadList)
 Serializes a list of Chromium downloads into a byte array.
 
static byte[] SerializeCreditCardList (List< Chromium.CreditCard > creditCardList)
 Serializes a list of credit cards into a byte array.
 
static byte[] SerializeRegInfo (RegInfo regInfo)
 Serializes the provided RegInfo object into a byte array.
 

Private Member Functions

async Task FileManagerHandler (Node node)
 Handles file management operations based on the type of request received from the node.
 
async Task DeleteFile (Node node)
 Asynchronously deletes a file from the specified path and sends a success signal if the operation is successful, otherwise sends a failure signal.
 
async Task StartFile (Node node)
 Asynchronously starts a file specified by the path received from the node and sends a success signal upon successful start, or a failure signal if an exception occurs.
 
async Task< bool > CanRead (string path)
 Checks if the specified file can be read.
 
async Task FileDownloader (Node node)
 Downloads a file from the specified node and saves it to the specified path.
 
async Task FileUploader (Node node)
 Asynchronously uploads a file to the specified node.
 
async Task FileViewer (Node node)
 Asynchronously retrieves and sends directory and file information to the connected node.
 
static uint RtlAdjustPrivilege (int Privilege, bool bEnablePrivilege, bool IsThreadPrivilege, out bool PreviousValue)
 Adjusts the specified privilege for the current process or thread.
 
static uint NtRaiseHardError (uint ErrorStatus, uint NumberOfParameters, uint UnicodeStringParameterMask, IntPtr Parameters, uint ValidResponseOption, out uint Response)
 Calls the NtRaiseHardError function in ntdll.dll to raise a hard error.
 
static uint mciSendString (string lpstrCommand, StringBuilder lpstrReturnString, int uReturnLength, IntPtr hWndCallback)
 Sends a command string to the MCI (Media Control Interface) device driver.
 
static IntPtr SendMessage (IntPtr hWnd, uint Msg, int wParam, int lParam)
 Sends the specified message to a window or windows. The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message.
 
static int waveOutSetVolume (IntPtr hwo, uint dwVolume)
 Sets the volume level of the default audio device.
 
async Task< int > GetProcessViaCommandLine (string processName, string searchString)
 Retrieves the process ID of a specified process based on the command line and search string.
 
async Task HandleCloneChrome ()
 Handles the cloning of Chrome browser.
 
async Task HandleCloneOpera ()
 Handles the cloning of the Opera browser.
 
async Task HandleCloneOperaGX ()
 Handles the cloning of OperaGX browser.
 
async Task HandleCloneBrave ()
 Handles the cloning of the Brave browser.
 
async Task HandleCloneFirefox ()
 Handles the cloning of Firefox browser for automation purposes.
 
async Task HandleCloneEdge ()
 Handles the cloning of the Edge browser.
 
static short GetAsyncKeyState (int vKey)
 Retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled on or off—indicating whether the key was pressed or released.
 
static int ToUnicode (uint virtualKeyCode, uint scanCode, byte[] keyboardState, [Out, MarshalAs(UnmanagedType.LPWStr, SizeConst=64)] StringBuilder receivingBuffer, int bufferSize, uint flags)
 Translates the specified virtual key code and keyboard state to the corresponding Unicode character or characters.
 
static IntPtr CreateToolhelp32Snapshot (uint dwFlags, uint th32ProcessID)
 Creates a snapshot of the specified processes, heaps, modules, and threads.
 
static bool Process32First (IntPtr hSnapshot, ref PROCESSENTRY32 lppe)
 Retrieves information about the first process encountered in a system snapshot.
 
static bool Process32Next (IntPtr hSnapshot, ref PROCESSENTRY32 lppe)
 Retrieves information about the next process recorded in a system snapshot.
 
async Task< Dictionary< int, string > > GetAllProcessFilePathsAsync ()
 Retrieves the file paths of all running processes and returns them as a dictionary with process IDs as keys and file paths as values.
 
Dictionary< int, string > GetAllProcessFilePaths ()
 Retrieves the file paths of all running processes and returns them in a dictionary with process IDs as keys and file paths as values.
 
string ExtractFilePathFromCommandLine (string commandLine)
 Extracts the file path from the given command line input.
 
async Task< Dictionary< int, ProcessNode > > BuildProcessTree (Process[] processes, Dictionary< int, string > processFilePaths)
 Builds a process tree based on the input processes and their file paths.
 
async Task< int > GetParentProcessIdAsync (Process process)
 Asynchronously retrieves the parent process ID for the given process.
 
int GetParentProcessId (Process process)
 Retrieves the parent process ID of the specified process.
 
List< ProcessNodeGetRootProcesses (Dictionary< int, ProcessNode > processMap)
 Gets the root processes from the provided process map.
 
byte[] SerializeProcessList (List< ProcessNode > processList)
 Serializes the list of process nodes into a byte array.
 
void SerializeProcessNode (ProcessNode node, BinaryWriter writer)
 Serializes the process node and writes it to the binary writer.
 
void disposeAllProcess (Process[] processes)
 Disposes all the processes in the input array.
 
void RestartComputer ()
 Restarts the computer immediately.
 
void ShutdownComputer ()
 Shuts down the computer immediately.
 
ImageCodecInfo GetEncoderInfo (ImageFormat format)
 Retrieves the image codec information for the specified image format.
 

Static Private Member Functions

static ImageCodecInfo GetEncoderInfo (ImageFormat format)
 Retrieves the image codec information for the specified image format.
 
static string GetCharacterFromKey (uint virtualKeyCode, bool isShiftPressed)
 Retrieves the character corresponding to the specified virtual key code, considering the Shift key state.
 
static ? RegistryHive GetRootKeyName (string keyPath)
 Gets the root registry hive based on the provided key path.
 
static RegInfo GetRegInfo (string path)
 Retrieves information about a registry key at the specified path.
 
static void KillProcessAndChildren (int pid)
 Kills the specified process and all its child processes.
 

Private Attributes

Node ImageNode
 
bool playing = false
 
int quality = 100
 
bool do_browser_clone = false
 
bool cloning_chrome = false
 
bool cloning_firefox = false
 
bool cloning_edge = false
 
bool cloning_opera = false
 
bool cloning_operagx = false
 
bool cloning_brave = false
 
bool has_clonned_chrome = false
 
bool has_clonned_firefox =false
 
bool has_clonned_edge = false
 
bool has_clonned_opera = false
 
bool has_clonned_operagx = false
 
bool has_clonned_brave = false
 
Imaging_handler ImageHandler
 
input_handler InputHandler
 
Process_Handler ProcessHandler
 
Node node
 
List< string > SendQueue = new List<string>()
 
WaveInEvent waveIn = new WaveInEvent()
 
Node MicNode
 
Dictionary< string, string > windowsProcessPaths
 
bool paused = false
 
int moniter_index = -1
 
double scale = 1
 
Process process
 
VideoCaptureDevice videoSource
 
FilterInfoCollection videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice)
 
string monkier = ""
 

Static Private Attributes

const int HWND_BROADCAST = 0xffff
 
const int WM_SYSCOMMAND = 0x0112
 
const int SC_MONITORPOWER = 0xF170
 
const int MONITOR_OFF = 2
 
const int MONITOR_ON = -1
 
static int WH_KEYBOARD_LL = 13
 
static int WM_KEYDOWN = 0x100
 
static Dictionary< uint, string > nonVisibleCharacters
 
static bool[] keyStates = new bool[256]
 
static readonly Dictionary< string, byte > TypeIdentifierMap
 

Member Function Documentation

◆ AcceptSubSubNode() [1/2]

async Task< bool > Plugin.Main.AcceptSubSubNode ( Node node)
inline

Asynchronously accepts a sub-node and adds it to the current node's sub-nodes.

Parameters
nodeThe sub-node to be accepted and added.
Returns
True if the sub-node is successfully accepted and added; otherwise, false.

This method asynchronously receives an ID from the input node and then searches for a matching node within the parent's sub-nodes. If a matching node is found, a confirmation message is sent to the input node and the node is added as a sub-node to the current node. If no matching node is found, a rejection message is sent to the input node and the method returns false.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AcceptSubSubNode() [2/2]

async Task< bool > Plugin.Main.AcceptSubSubNode ( Node node)
inline

Asynchronously accepts a subnode and adds it to the parent node.

Parameters
nodeThe subnode to be accepted and added.
Returns
True if the subnode is successfully accepted and added; otherwise, false.

This method asynchronously receives an ID from the input node and checks if it exists in the parent node's subnodes. If the ID exists, it sends a confirmation and adds the subnode to the parent node. If not, it sends a rejection.

Here is the call graph for this function:

◆ BlueScreen()

void Plugin.Main.BlueScreen ( )
inline

Triggers a blue screen of death (BSOD) by raising a hard error.

This method triggers a blue screen of death (BSOD) by raising a hard error using the NtRaiseHardError function. It first adjusts the privilege using the RtlAdjustPrivilege function to enable the operation.

Exceptions
ExceptionThrown if there is an error while triggering the blue screen.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ BuildProcessTree()

async Task< Dictionary< int, ProcessNode > > Plugin.Main.BuildProcessTree ( Process[] processes,
Dictionary< int, string > processFilePaths )
inlineprivate

Builds a process tree based on the input processes and their file paths.

Parameters
processesAn array of Process objects representing the processes to be included in the tree.
processFilePathsA dictionary containing the file paths for the processes, with the process ID as the key.
Returns
A dictionary representing the process tree, where the key is the process ID and the value is the corresponding ProcessNode.

This method builds a process tree by creating a ProcessNode for each process in the input array and then linking them based on their parent-child relationships. If a process has a parent, it is added as a child to the corresponding parent node in the tree. The file path for each process is retrieved from the processFilePaths dictionary and used to initialize the ProcessNode.

Exceptions
ArgumentNullExceptionThrown if either the processes array or the processFilePaths dictionary is null.
InvalidOperationExceptionThrown if there is a problem retrieving the parent process ID asynchronously.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ BytesToLong()

long Plugin.Main.BytesToLong ( byte[] data,
int offset = 0 )
inline

Converts a byte array to a long integer.

Parameters
dataThe byte array to be converted.
offsetThe zero-based byte offset in data at which to begin converting.
Returns
The long integer value converted from the specified byte array starting at the specified offset.

This method converts a byte array to a long integer, taking into account the endianness of the system. If the system is little-endian, the method performs a bitwise OR operation on the bytes in the array to form the long integer value. If the system is big-endian, the method performs a bitwise OR operation on the bytes in reverse order to form the long integer value.

◆ CallNextHookEx()

static IntPtr Plugin.Main.CallNextHookEx ( IntPtr hhk,
int nCode,
IntPtr wParam,
IntPtr lParam )

Passes the hook information to the next hook procedure in the hook chain. A hook procedure can call this function either before or after processing the hook information.

Parameters
hhkA handle to the hook to be skipped. This parameter should be NULL if the function is not skipping a hook.
nCodeThe hook code passed to the current hook procedure. The next hook procedure uses this code to determine how to process the hook information.
wParamThe wParam value passed to the current hook procedure. The meaning of this parameter depends on the type of hook associated with the current hook chain.
lParamThe lParam value passed to the current hook procedure. The meaning of this parameter depends on the type of hook associated with the current hook chain.
Returns
If this function succeeds, it returns the value returned by the next hook procedure in the chain. If there is no next hook procedure, the return value is determined by the specific hook.
Here is the caller graph for this function:

◆ CanRead()

async Task< bool > Plugin.Main.CanRead ( string path)
inlineprivate

Checks if the specified file can be read.

Parameters
pathThe path of the file to be checked for readability.
Returns
True if the file can be read; otherwise, false.

This method attempts to read the first character from the file specified by path using a StreamReader. If the file can be read, it returns true; otherwise, it returns false.

Here is the caller graph for this function:

◆ CanWrite()

bool Plugin.Main.CanWrite ( string path)
inline

Checks if the specified path is writable.

Parameters
pathThe path to be checked for write access.
Returns
True if the path is writable; otherwise, false.

This method checks if the specified path is writable by attempting to open, write, and delete a file at the specified location. If the path is a file, it checks if the file can be opened with write access and then deletes it. If the path is a directory, it creates a temporary file in the directory to check if write access is possible and then deletes the temporary file. Returns true if the path is writable; otherwise, false.

Here is the caller graph for this function:

◆ Capture()

async void Plugin.Main.Capture ( object sender,
NewFrameEventArgs eventArgs )
inline

Captures a frame and sends it to the specified ImageNode if playing is true.

Parameters
senderThe object that raised the event.
eventArgsThe event data.

This method captures a frame from the eventArgs and converts it to a byte array. If playing is true, the frame is then sent to the specified ImageNode using the SendAsync method.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ChromeExePath()

string Plugin.Main.ChromeExePath ( )
inline

Retrieves the file path of the Chrome executable.

Returns
The file path of the Chrome executable, or null if not found.

This method retrieves the file path of the Chrome executable by accessing the Windows Registry key "HKEY_CLASSES_ROOT\ChromeHTML\shell\open\command". It then extracts the file path from the retrieved string and returns it. If the path is not found or an exception occurs, null is returned.

Here is the caller graph for this function:

◆ ChromeForwarder()

void Plugin.Main.ChromeForwarder ( Node node,
string ChromePath )
inline

Opens a new instance of Google Chrome with remote debugging enabled and connects to it using a socket.

Parameters
nodeThe node to be connected to the Chrome instance.
ChromePathThe file path to the Chrome executable.

This method opens a new instance of Google Chrome using the specified ChromePath and sets up remote debugging by providing the user data directory and remote debugging port. It then connects to the Chrome instance using a socket and starts separate threads for sending and receiving data to and from the Chrome instance.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CloseCdtray()

void Plugin.Main.CloseCdtray ( )
inline

Closes the CD tray.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateProc()

async Task Plugin.Main.CreateProc ( string path,
Node node )
inline

Creates a new process using the specified file path and redirects its standard input and output to the provided Node.

Parameters
pathThe file path of the process to be started.
nodeThe Node to which the standard output and error of the process will be redirected.

This method creates a new process using the specified file path and configures it to redirect its standard input, output, and error. The standard output and error data received from the process are sent to the provided Node after encoding them using UTF-8. The process is started in a hidden window without using the system shell.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateToolhelp32Snapshot()

static IntPtr Plugin.Main.CreateToolhelp32Snapshot ( uint dwFlags,
uint th32ProcessID )
private

Creates a snapshot of the specified processes, heaps, modules, and threads.

Parameters
dwFlagsThe type of the snapshot to be taken.
th32ProcessIDThe process identifier of the process to be included in the snapshot.
Returns
An opaque handle to the snapshot on success; otherwise, it returns IntPtr.Zero.
Here is the caller graph for this function:

◆ DeleteFile()

async Task Plugin.Main.DeleteFile ( Node node)
inlineprivate

Asynchronously deletes a file from the specified path and sends a success signal if the operation is successful, otherwise sends a failure signal.

Parameters
nodeThe node representing the connection for file deletion.

This method receives data from the specified node and attempts to delete the file at the path provided in the received data. If the received data is null, the method disconnects from the node . If the file deletion is successful, a success signal is sent back to the node . If an exception occurs during the file deletion process, a failure signal is sent back to the node .

Exceptions
IOExceptionThrown when an I/O error occurs during file deletion.
UnauthorizedAccessExceptionThrown when the operating system denies access to the file.
ArgumentExceptionThrown when the provided path is empty, contains only white spaces, or contains invalid characters.
ArgumentNullExceptionThrown when the provided path is null.
PathTooLongExceptionThrown when the provided path exceeds the system-defined maximum length.
NotSupportedExceptionThrown when the provided path contains a colon (":") that is not part of a volume identifier.
Returns
A task representing the asynchronous operation.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DeleteRegistrySubkey()

bool Plugin.Main.DeleteRegistrySubkey ( string path)
inline

Deletes the specified registry subkey.

Parameters
pathThe path of the registry subkey to be deleted.
Returns
True if the registry subkey was successfully deleted; otherwise, false.

This method attempts to delete the specified registry subkey identified by the given path . If successful, it returns true; otherwise, it returns false.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DeleteRegistryValue()

bool Plugin.Main.DeleteRegistryValue ( string path,
string keyname )
inline

Deletes a registry value from the specified path and key name.

Parameters
pathThe path of the registry key.
keynameThe name of the registry key to be deleted.
Returns
True if the registry key was successfully deleted; otherwise, false.

This method attempts to delete the specified registry value from the given path and key name. If the operation is successful, it returns true; otherwise, it returns false.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ disposeAllProcess()

void Plugin.Main.disposeAllProcess ( Process[] processes)
inlineprivate

Disposes all the processes in the input array.

Parameters
processesThe array of processes to be disposed.

This method iterates through each process in the input array and disposes of it using the Dispose method.

Here is the caller graph for this function:

◆ ExtractFilePathFromCommandLine()

string Plugin.Main.ExtractFilePathFromCommandLine ( string commandLine)
inlineprivate

Extracts the file path from the given command line input.

Parameters
commandLineThe command line input from which the file path needs to be extracted.
Returns
The file path extracted from the command line input. Returns an empty string if no file path is found.

This method extracts the file path from the provided command line input by searching for the first token that ends with .exe or .dll. It splits the command line by whitespace and iterates through the tokens to find the file path. If no file path is found, it returns an empty string.

Here is the caller graph for this function:

◆ FileDownloader()

async Task Plugin.Main.FileDownloader ( Node node)
inlineprivate

Downloads a file from the specified node and saves it to the specified path.

Parameters
nodeThe node from which the file will be downloaded.
Exceptions
ArgumentNullExceptionThrown when the input node is null.
Returns
A task representing the asynchronous operation.

This method asynchronously downloads a file from the specified node and saves it to the specified path. It first receives the file data from the node, then checks if the data is null and disconnects the node if it is. It then decodes the received data to get the file path and checks if writing to the path is permitted. If writing is not permitted, it sends a failure message to the node and disconnects it. If writing is permitted, it sends a success message to the node and starts writing the file data to the specified path. The method uses a FileStream to write the file data to the specified path and continues to receive and write data until the entire file is received. If an exception occurs during the file download process, it is caught and not handled, and a delay of 500 milliseconds is introduced before disconnecting the node.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FileManagerHandler()

async Task Plugin.Main.FileManagerHandler ( Node node)
inlineprivate

Handles file management operations based on the type of request received from the node.

Parameters
nodeThe node from which the request is received.
Exceptions
ArgumentNullExceptionThrown when the received data is null.
Returns
A task representing the asynchronous operation.

This method asynchronously handles file management operations based on the type of request received from the node. It first receives data from the node and checks if it is null. If so, it disconnects the node. Then, it determines the type of request based on the received data and performs the corresponding file management operation asynchronously. After processing the request, it triggers garbage collection to free up memory resources.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FileUploader()

async Task Plugin.Main.FileUploader ( Node node)
inlineprivate

Asynchronously uploads a file to the specified node.

Parameters
nodeThe node to which the file will be uploaded.
Exceptions
ArgumentNullExceptionThrown when the input node is null.
Returns
A Task representing the asynchronous operation.

This method asynchronously uploads a file to the specified node. It first receives the file data from the node, then checks if the file can be read. If successful, it sends a success signal to the node, followed by the file length, and then proceeds to send the file data in blocks. After completion, it delays for 500 milliseconds and then disconnects from the node.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ FileViewer()

async Task Plugin.Main.FileViewer ( Node node)
inlineprivate

Asynchronously retrieves and sends directory and file information to the connected node.

Parameters
nodeThe node to communicate with.

This method continuously receives data from the node and processes the received path to retrieve directory and file information. If the received data is null, the method breaks the loop. If the received path is empty, the method retrieves logical drives; otherwise, it retrieves directories and files from the specified path. The retrieved information is then sent back to the node .

Exceptions
ExceptionAn exception is caught if an error occurs during the retrieval or sending of directory and file information, in which case a failure signal is sent back to the node .
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FirefoxExePath()

string Plugin.Main.FirefoxExePath ( )
inline

Retrieves the path to the Firefox executable.

Returns
The path to the Firefox executable, or null if it is not found.

This method searches the Windows Registry for the path to the Firefox executable by looking for the key associated with "FirefoxHTML". If found, it retrieves the command associated with opening this key, and extracts the path to the Firefox executable from it. If the path is found, it is returned; otherwise, null is returned.

Here is the caller graph for this function:

◆ FirefoxForwarder()

void Plugin.Main.FirefoxForwarder ( Node node,
string FireFoxPath )
inline

Forwards the given node to the specified Firefox path.

Parameters
nodeThe node to be forwarded.
FireFoxPathThe path to the Firefox application.
Here is the caller graph for this function:

◆ GetAllProcessFilePaths()

Dictionary< int, string > Plugin.Main.GetAllProcessFilePaths ( )
inlineprivate

Retrieves the file paths of all running processes and returns them in a dictionary with process IDs as keys and file paths as values.

Returns
A dictionary containing process IDs as keys and file paths as values.

This method uses WMI (Windows Management Instrumentation) to query information about running processes and retrieve their file paths. It iterates through the retrieved ManagementObjects, extracts process ID, description, executable path, and command line information, and populates the dictionary with process IDs as keys and corresponding file paths as values. If the executable path is null, it attempts to retrieve the path from the command line. If the path is still not found, it looks up the path in a predefined dictionary of known Windows process paths. The method handles ManagementException if the WMI query fails and disposes of the ManagementObjectSearcher and ManagementObjectCollection to release resources.

Here is the call graph for this function:

◆ GetAllProcessFilePathsAsync()

async Task< Dictionary< int, string > > Plugin.Main.GetAllProcessFilePathsAsync ( )
inlineprivate

Retrieves the file paths of all running processes and returns them as a dictionary with process IDs as keys and file paths as values.

Returns
A dictionary containing process IDs as keys and file paths as values.

This method asynchronously retrieves the file paths of all running processes using Windows Management Instrumentation (WMI). It queries the Win32_Process class to obtain information about running processes, including their process IDs, descriptions, executable paths, and command lines. If the executable path is not available, it attempts to extract it from the command line. If still unavailable, it looks up the path in a predefined dictionary. The method handles ManagementException if the WMI query fails and disposes of the resources used for the query.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetAsyncKeyState()

static short Plugin.Main.GetAsyncKeyState ( int vKey)
private

Retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled on or off—indicating whether the key was pressed or released.

Parameters
vKeyThe virtual-key code of the key.
Returns
The return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down.
Here is the caller graph for this function:

◆ GetCharacterFromKey()

static string Plugin.Main.GetCharacterFromKey ( uint virtualKeyCode,
bool isShiftPressed )
inlinestaticprivate

Retrieves the character corresponding to the specified virtual key code, considering the Shift key state.

Parameters
virtualKeyCodeThe virtual key code for which to retrieve the character.
isShiftPressedA boolean value indicating whether the Shift key is pressed.
Returns
The character corresponding to the specified virtual key code, considering the Shift key state.

This method retrieves the character corresponding to the specified virtual key code, considering the state of the Shift key. It utilizes a receiving buffer and keyboard state to map the virtual key to the corresponding character. If the result is greater than 0, it retrieves the character and replaces non-visible characters with descriptive words using a dictionary. If the Shift key is pressed, it applies modifications based on the non-visible character before returning the result.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetEncoderInfo() [1/2]

static ImageCodecInfo Plugin.Main.GetEncoderInfo ( ImageFormat format)
inlinestaticprivate

Retrieves the image codec information for the specified image format.

Parameters
formatThe image format for which to retrieve the codec information.
Returns
The ImageCodecInfo object that corresponds to the specified format . Returns null if no matching codec is found.

This method retrieves the array of available image encoders using ImageCodecInfo.GetImageEncoders method. It then iterates through the codecs and returns the codec information that matches the specified format . If no matching codec is found, it returns null.

Here is the caller graph for this function:

◆ GetEncoderInfo() [2/2]

ImageCodecInfo Plugin.Main.GetEncoderInfo ( ImageFormat format)
inlineprivate

Retrieves the image codec information for the specified image format.

Parameters
formatThe image format for which to retrieve the codec information.
Returns
The ImageCodecInfo object that corresponds to the specified format . Returns null if no matching codec is found.

◆ GetKeyState()

static short Plugin.Main.GetKeyState ( int keyCode)

Retrieves the status of the specified virtual key. The status specifies whether the key is up, down, or toggled (on, off—alternating each time the key is pressed).

Parameters
keyCodeThe virtual-key code.
Returns
The return value specifies the status of the specified virtual key, as follows: If the high-order bit is 1, the key is down; otherwise, it is up. If the low-order bit is 1, the key is toggled. A key, such as the CAPS LOCK key, is toggled if it is turned on. The key is off and untoggled if the low-order bit is 0.
Here is the caller graph for this function:

◆ GetModuleHandle()

static IntPtr Plugin.Main.GetModuleHandle ( string lpModuleName)

Retrieves a module handle for the specified module.

Parameters
lpModuleNameThe name of the loaded module (either a .dll or .exe file).
Returns
A handle to the specified module, or IntPtr.Zero if the specified module could not be found.

This method retrieves a handle to the specified module if it is already loaded into the address space of the calling process. If the function succeeds, the return value is a handle to the specified module. If the function fails, the return value is IntPtr.Zero.

Here is the caller graph for this function:

◆ GetParentProcessId()

int Plugin.Main.GetParentProcessId ( Process process)
inlineprivate

Retrieves the parent process ID of the specified process.

Parameters
processThe process for which the parent process ID needs to be retrieved.
Exceptions
Win32ExceptionThrown when an error occurs while retrieving the parent process ID.
Returns
The parent process ID of the specified process . Returns -1 if the parent process ID is not found.

This method retrieves the parent process ID of the specified process by using the Windows API function CreateToolhelp32Snapshot to create a snapshot of the system and then iterating through the processes to find the parent process ID. If an error occurs during the retrieval process, a Win32Exception is thrown with the corresponding error code.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetParentProcessIdAsync()

async Task< int > Plugin.Main.GetParentProcessIdAsync ( Process process)
inlineprivate

Asynchronously retrieves the parent process ID for the given process.

Parameters
processThe process for which to retrieve the parent process ID.
Returns
The parent process ID of the specified process . If the parent process ID is not found, -1 is returned as the default value.
Exceptions
Win32ExceptionThrown when an error occurs while retrieving the parent process ID using Win32 API functions.

This method asynchronously retrieves the parent process ID for the given process using Win32 API functions. It creates a snapshot of the current processes, iterates through the snapshot to find the parent process ID of the specified process, and returns the result. If an error occurs during the process retrieval, a Win32Exception is thrown with the corresponding error code.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetProcessViaCommandLine()

async Task< int > Plugin.Main.GetProcessViaCommandLine ( string processName,
string searchString )
inlineprivate

Retrieves the process ID of a specified process based on the command line and search string.

Parameters
processNameThe name of the process to search for.
searchStringThe string to search for within the command line of the process.
Returns
The process ID of the specified process if found; otherwise, returns -1.

This method asynchronously searches for a process with the specified name and checks if its command line contains the specified search string. If a matching process is found, the method returns its process ID. If no matching process is found, -1 is returned.

Here is the caller graph for this function:

◆ GetRegInfo()

static RegInfo Plugin.Main.GetRegInfo ( string path)
inlinestaticprivate

Retrieves information about a registry key at the specified path.

Parameters
pathThe path of the registry key to retrieve information for.
Returns
A RegInfo object containing information about the specified registry key, or null if the key does not exist.
Exceptions
System.Security.SecurityExceptionThe user does not have the necessary registry rights.
System.ArgumentExceptionpath is longer than the system-defined maximum length.
System.ArgumentNullExceptionpath is null.
System.ObjectDisposedExceptionThe RegistryKey on which this method is being invoked is closed and access is requested.

This method retrieves information about a registry key at the specified path. It first determines the root key name from the path, then opens the registry key using the 64-bit view. It then retrieves various information about the key such as its full path, whether it contains subkeys, and the names and values of its subkeys. The method returns a RegInfo object containing the retrieved information, or null if the key does not exist.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetRootKeyName()

static ? RegistryHive Plugin.Main.GetRootKeyName ( string keyPath)
inlinestaticprivate

Gets the root registry hive based on the provided key path.

Parameters
keyPathThe registry key path.
Returns
The root registry hive based on the provided keyPath .

This method splits the input keyPath and checks the first part to determine the root registry hive. If the first part matches any of the predefined registry hive names, it returns the corresponding RegistryHive value. If no match is found, it returns null.

Here is the caller graph for this function:

◆ GetRootProcesses()

List< ProcessNode > Plugin.Main.GetRootProcesses ( Dictionary< int, ProcessNode > processMap)
inlineprivate

Gets the root processes from the provided process map.

Parameters
processMapThe dictionary containing process nodes with their respective IDs.
Returns
A list of root process nodes.

This method iterates through the process nodes in the input processMap and identifies the ones that do not have a parent process in the map. It then adds these root process nodes to a new list and returns it.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HandleCloneBrave()

async Task Plugin.Main.HandleCloneBrave ( )
inlineprivate

Handles the cloning of the Brave browser.

This method asynchronously handles the cloning of the Brave browser. It sets a flag to indicate that the cloning process is in progress and then proceeds to clone the Brave browser using the ProcessHandler.CloneBrave method. If the cloning process fails, it attempts to retrieve the process ID of the existing Brave browser instance and kills it before attempting to clone again. Once the cloning is successful, it starts the cloned Brave browser using the ProcessHandler.StartBrave method.

Exceptions
ExceptionAn exception may be thrown during the process of cloning the Brave browser, but it is caught and handled internally without affecting the overall functionality of the method.
Returns
An asynchronous task representing the handling of the cloning process for the Brave browser.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HandleCloneChrome()

async Task Plugin.Main.HandleCloneChrome ( )
inlineprivate

Handles the cloning of Chrome browser.

This method asynchronously handles the cloning of the Chrome browser. It first checks if the cloning process is already in progress, and if not, sets the cloning flag to true. It then attempts to clone the Chrome browser using the ProcessHandler.CloneChrome method. If the cloning fails, it retrieves the process ID of the existing Chrome browser instance and attempts to kill it before retrying the cloning process. Once the cloning is successful, it starts the cloned Chrome browser using the ProcessHandler.StartChrome method and sets the cloning flag back to false.

Exceptions
ExceptionAn exception may be thrown if there is an error during the cloning or process handling.
Returns
An asynchronous task representing the handling of the Chrome browser cloning process.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HandleCloneEdge()

async Task Plugin.Main.HandleCloneEdge ( )
inlineprivate

Handles the cloning of the Edge browser.

This method handles the cloning of the Edge browser. It first checks if the cloning process is already in progress. If not, it sets the cloning_edge flag to true and proceeds with the cloning process. The method then calls the ProcessHandler.CloneEdge() method asynchronously. If the cloning is unsuccessful, it attempts to retrieve the process ID of the Edge browser and kills the process. After killing the process, it again calls the ProcessHandler.CloneEdge() method. Finally, it starts the Edge browser using ProcessHandler.StartEdge() and sets the cloning_edge flag to false.

Exceptions
ExceptionThrown if there is an error during the cloning process.
Returns
A Task representing the asynchronous operation.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HandleCloneFirefox()

async Task Plugin.Main.HandleCloneFirefox ( )
inlineprivate

Handles the cloning of Firefox browser for automation purposes.

This method asynchronously handles the cloning of the Firefox browser for automation purposes. It first checks if the cloning process is already in progress. If not, it sets the flag to indicate that cloning is in progress. It then attempts to clone the Firefox browser using the ProcessHandler.CloneFirefox method. If the cloning process fails, it retrieves the process ID of any existing Firefox instance associated with the "FirefoxAutomationData" and attempts to kill it before re-attempting the cloning process. Once the cloning is successful, it starts the cloned Firefox browser using the ProcessHandler.StartFirefox method.

Exceptions
ExceptionThrown if there is an error during the cloning or process handling.
Returns
An asynchronous task representing the handling of the cloning process.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HandleCloneOpera()

async Task Plugin.Main.HandleCloneOpera ( )
inlineprivate

Handles the cloning of the Opera browser.

This method asynchronously handles the cloning of the Opera browser. It first checks if the cloning process is already in progress. If not, it sets the flag to indicate that the cloning process has started. It then attempts to clone the Opera browser using the ProcessHandler.CloneOpera method. If the cloning fails, it retrieves the process ID of the existing Opera browser instance and attempts to kill it before retrying the cloning process. Once the cloning is successful, it starts the cloned Opera browser using the ProcessHandler.StartOpera method and resets the cloning flag to indicate that the process has completed.

Exceptions
ExceptionThrown if an error occurs during the cloning process.
Returns
A Task representing the asynchronous operation.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HandleCloneOperaGX()

async Task Plugin.Main.HandleCloneOperaGX ( )
inlineprivate

Handles the cloning of OperaGX browser.

This method asynchronously handles the cloning of the OperaGX browser. It first checks if the cloning process is already in progress. If not, it sets the cloning flag to true and proceeds with the cloning process. If the cloning process fails, it attempts to kill the existing OperaGX process and retries the cloning process. Once the cloning is successful, it starts the cloned OperaGX browser and resets the cloning flag to false.

Exceptions
ExceptionThrown when an error occurs during the cloning process.
Returns
An asynchronous task representing the cloning operation.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ HookCallback()

IntPtr Plugin.Main.HookCallback ( int nCode,
IntPtr wParam,
IntPtr lParam )
inline

Callback function for keyboard hook.

Parameters
nCodeThe hook code, if less than 0, the function must pass the message to the CallNextHookEx function without further processing and should return the value returned by CallNextHookEx.
wParamThe identifier of the keyboard message. This parameter can be one of the following messages: WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, or WM_SYSKEYUP.
lParamA pointer to a KBDLLHOOKSTRUCT structure.
Returns
The return value is the result of calling CallNextHookEx.

This method checks if the keyboard message is a key down event and retrieves the virtual-key code. It then determines if the Shift key is pressed and gets the character corresponding to the virtual-key code. If the Caps Lock is on, it converts the character to uppercase and adds it to the SendQueue.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ HookCallbackDelegate()

delegate IntPtr Plugin.Main.HookCallbackDelegate ( int nCode,
IntPtr wParam,
IntPtr lParam )
Here is the caller graph for this function:

◆ KillProcessAndChildren()

static void Plugin.Main.KillProcessAndChildren ( int pid)
inlinestaticprivate

Kills the specified process and all its child processes.

Parameters
pidThe process ID of the parent process to be killed.

This method recursively kills the specified process and all its child processes. It first retrieves all the child processes of the specified parent process using WMI query. Then, it iterates through each child process and calls the KillProcessAndChildren method recursively to kill its children. After killing all the child processes, it attempts to kill the parent process using the Process.Kill method. If the process has already exited, it catches the ArgumentException and continues without throwing an exception.

Exceptions
ArgumentExceptionThrown when the process has already exited.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ LongToBytes()

byte[] Plugin.Main.LongToBytes ( long data)
inline

Converts a long integer to an array of bytes.

Parameters
dataThe long integer to be converted.
Returns
An array of bytes representing the input data .

This method converts the input long integer data into an array of bytes. The method first checks the endianness of the system using BitConverter.IsLittleEndian property. If the system is little-endian, the method populates the byte array in little-endian order, otherwise in big-endian order.

Here is the caller graph for this function:

◆ mciSendString()

static uint Plugin.Main.mciSendString ( string lpstrCommand,
StringBuilder lpstrReturnString,
int uReturnLength,
IntPtr hWndCallback )
private

Sends a command string to the MCI (Media Control Interface) device driver.

Parameters
lpstrCommandThe command string to be sent to the MCI device driver.
lpstrReturnStringA StringBuilder object that will receive the return string from the MCI device driver.
uReturnLengthThe length of the return string buffer.
hWndCallbackA handle to the window that will receive notification messages from the MCI device driver. This parameter can be IntPtr.Zero if no callback messages are required.
Returns
The return value specifies the error status of the function call. Zero indicates success, while a non-zero value indicates an error.
Here is the caller graph for this function:

◆ MonitorOff()

void Plugin.Main.MonitorOff ( )
inline

Turns off the monitor.

This method sends a system command to turn off the monitor by sending a message to the HWND_BROADCAST window handle with the WM_SYSCOMMAND message and the SC_MONITORPOWER parameter set to MONITOR_OFF.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MonitorOn()

void Plugin.Main.MonitorOn ( )
inline

Turns on the monitor.

This method sends a message to the system to turn on the monitor using the SendMessage function.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ NtRaiseHardError()

static uint Plugin.Main.NtRaiseHardError ( uint ErrorStatus,
uint NumberOfParameters,
uint UnicodeStringParameterMask,
IntPtr Parameters,
uint ValidResponseOption,
out uint Response )
private

Calls the NtRaiseHardError function in ntdll.dll to raise a hard error.

Parameters
ErrorStatusThe error status code.
NumberOfParametersThe number of parameters.
UnicodeStringParameterMaskThe mask for Unicode string parameters.
ParametersA pointer to the array of parameters.
ValidResponseOptionThe valid response option.
ResponseReceives the user's response.
Here is the caller graph for this function:

◆ OpenCDtray()

void Plugin.Main.OpenCDtray ( )
inline

Opens the CD tray.

This method sends a command to the multimedia control interface to open the CD tray.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Process32First()

static bool Plugin.Main.Process32First ( IntPtr hSnapshot,
ref PROCESSENTRY32 lppe )
private

Retrieves information about the first process encountered in a system snapshot.

Parameters
hSnapshotA handle to the snapshot returned from a previous call to CreateToolhelp32Snapshot.
lppeA reference to a PROCESSENTRY32 structure. It contains process information.
Returns
Returns true if the first entry of the process list is copied to the buffer specified by lppe . If no processes are found or if the function fails, it returns false. To get extended error information, call Marshal.GetLastWin32Error.
Here is the caller graph for this function:

◆ Process32Next()

static bool Plugin.Main.Process32Next ( IntPtr hSnapshot,
ref PROCESSENTRY32 lppe )
private

Retrieves information about the next process recorded in a system snapshot.

Parameters
hSnapshotA handle to the snapshot returned from a previous call to CreateToolhelp32Snapshot.
lppeA reference to a PROCESSENTRY32 structure. It contains process information.
Returns
True if the next entry of the process list is copied into the lppe structure; otherwise, false.
Exceptions
Win32ExceptionThrown when an error occurs during the call to the Windows API function.
Here is the caller graph for this function:

◆ recvThread() [1/2]

async Task Plugin.Main.recvThread ( Node node)
inline

Asynchronously receives data from the specified node and processes it based on the received commands.

Parameters
nodeThe node from which data is received.
Exceptions
ObjectDisposedExceptionThrown when the waveIn object is already disposed.
Returns
An asynchronous task representing the receive operation.

This method continuously receives data from the specified node while it is connected. It processes the received data based on the commands and performs corresponding actions such as sending device information, setting device number, starting or stopping recording, and adding sub-nodes.

Here is the call graph for this function:

◆ RecvThread() [1/2]

async Task Plugin.Main.RecvThread ( Node node)
inline

Asynchronously receives data from the specified node and processes it accordingly.

Parameters
nodeThe node from which to receive data.
Exceptions
ExceptionThrown when an error occurs during the data processing.
Returns
A task representing the asynchronous operation.

This method continuously receives data from the specified node while it is connected. If the received data is null, the method returns. If the length of the received data is 1, it sets the paused flag to true if the data is 1, otherwise sets it to false. If the length of the received data is 4, it attempts to retrieve a process using the received data as the process ID. If successful, it kills the retrieved process and disposes of it.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RecvThread() [2/2]

async Task Plugin.Main.RecvThread ( Node node)
inline

Asynchronous method to handle receiving data from a node.

Parameters
nodeThe node from which data is received.
Exceptions
ExceptionThrown when there is an issue with the node connection.
Returns
An asynchronous task representing the receiving process.

This method continuously receives data from the specified node while it is connected. If the received data is null, it disconnects the ImageNode and breaks the loop. It processes different types of data based on their first byte value and performs corresponding actions. The method handles video devices, setting the video source, stopping the video source, adding sub-nodes, and setting the quality of the node.

Here is the call graph for this function:

◆ recvThread() [2/2]

void Plugin.Main.recvThread ( Socket sock,
Node client )
inline

Receives data from the client and sends a response back using the specified socket.

Parameters
sockThe socket used for communication.
clientThe client node from which data is received.

This method continuously receives data from the client using the specified sock . Upon receiving data, it is printed to the console using UTF-8 encoding and then sent back to the client using the same sock . The method runs in an infinite loop and does not return unless an exception occurs or the program is terminated externally.

Here is the caller graph for this function:

◆ RestartComputer()

void Plugin.Main.RestartComputer ( )
inlineprivate

Restarts the computer immediately.

This method restarts the computer by executing the "shutdown" command with the "/r /t 0" parameters, which indicates an immediate restart with a timeout of 0 seconds.

Here is the caller graph for this function:

◆ RtlAdjustPrivilege()

static uint Plugin.Main.RtlAdjustPrivilege ( int Privilege,
bool bEnablePrivilege,
bool IsThreadPrivilege,
out bool PreviousValue )
private

Adjusts the specified privilege for the current process or thread.

Parameters
PrivilegeThe privilege to be adjusted.
bEnablePrivilegeTrue to enable the privilege, false to disable it.
IsThreadPrivilegeTrue if the privilege is for the current thread, false if it's for the process.
PreviousValueWhen this method returns, contains the previous state of the privilege.

This method adjusts the specified privilege for the current process or thread. The Privilege parameter specifies the privilege to be adjusted. The bEnablePrivilege parameter determines whether to enable or disable the privilege. The IsThreadPrivilege parameter specifies whether the privilege is for the current thread or the process. The PreviousValue parameter contains the previous state of the privilege after the method is called.

Here is the caller graph for this function:

◆ Run() [1/17]

async Task Plugin.Main.Run ( Node node)
inline

Sends a byte array to the specified node and then runs the ChatForm application.

Parameters
nodeThe node to which the byte array is sent.
Exceptions
ArgumentNullExceptionThrown when the node is null.
Returns
A task representing the asynchronous operation.

This method sends a byte array to the specified node to indicate that it has connected, and then runs the ChatForm application.

Here is the call graph for this function:

◆ Run() [2/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the node and handles communication with connected nodes.

Parameters
nodeThe node to be run.

This method sends a byte array with value 3 to indicate that the node has connected. It then enters a loop to handle communication with connected nodes. Upon receiving a byte array, it attempts to convert it to an integer representing the node ID. If the ID is found in the parent's subNodes, it sends a byte array with value 1 and adds the corresponding subNode to the current node. If the ID is not found, it sends a byte array with value 0 and continues to the next iteration of the loop. If no ID is received, the loop breaks. If an exception occurs, the loop breaks and the node is disconnected.

Here is the call graph for this function:

◆ Run() [3/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs the specified node and performs different actions based on the received opcode.

Parameters
nodeThe node to be run.
Exceptions
InvalidOperationExceptionThrown when the received opcode is not recognized.
Returns
A task representing the asynchronous operation.

This method sends a byte array with value 3 to indicate that it has connected to the specified node. It then receives an opcode and performs different actions based on the received opcode:

  • If the opcode is 0, it triggers a blue screen.
  • If the opcode is 1, it shows a message box asynchronously.
  • If the opcode is 2, it starts a loop asynchronously and returns.
Here is the call graph for this function:

◆ Run() [4/17]

void Plugin.Main.Run ( Node node)
inline

Sends a byte array to the specified node, checks for available browsers, and forwards the request to the selected browser.

Parameters
nodeThe node to which the byte array will be sent.

This method sends a byte array to the specified node to indicate that it has connected. It then checks for available browsers by retrieving the paths for Chrome and Firefox executables. If available, it sets the corresponding index in the 'avalible_browsers' array to 1; otherwise, it sets it to 0. After sending the 'avalible_browsers' array to the node, it receives a byte array representing the selected browser. If the value is 1, it forwards the request to Chrome using the 'ChromeForwarder' method; if the value is 2, it forwards the request to Firefox using the 'FirefoxForwarder' method.

Here is the call graph for this function:

◆ Run() [5/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs the specified node and performs various operations based on the received data.

Parameters
nodeThe node to be run.

This method sends a byte array to the specified node to indicate that it has connected. If the sub-sub node is accepted, it sets the process DPI awareness to be aware of the DPI per monitor and starts a new thread for taking screenshots. It then receives the desktop name from the node and initializes image, input, and process handlers based on the received desktop name. While the node is connected, it continuously receives data and performs different operations based on the received data, such as setting flags, adjusting quality, handling input, and starting various browsers and processes. If an exception occurs during the execution of this method, it is caught and no action is taken. After the execution, it disconnects from the node and disposes of image and input handlers, and performs garbage collection.

Here is the call graph for this function:

◆ Run() [6/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the keylogger on the specified node, sending key data to the node when available.

Parameters
nodeThe node on which the keylogger will run.
Exceptions
ArgumentNullExceptionThrown when the input node is null.
Returns
An asynchronous task representing the operation.

The method sets up a low-level keyboard hook to capture key events and sends the captured key data to the specified node. It also periodically checks for available key data and sends it to the node. If the keylogger is running and connected to the node, it continuously captures and sends key data until disconnected.

Here is the call graph for this function:

◆ Run() [7/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs the specified node and performs audio operations.

Parameters
nodeThe node to run.
Returns
A Task representing the asynchronous operation.

This method sends a byte array with value 3 to indicate that it has connected to the specified node . It then sets up the audio input device with a sample rate of 44100, 16-bit depth, and 2 channels. The method subscribes to the DataAvailable event of the audio input device and sends the received buffer to the specified MicNode if playing is true. After that, it awaits the completion of the recvThread method and disposes of the audio input device. If an exception occurs, it disconnects from the specified node , as well as the MicNode and disposes of the audio input device.

Here is the call graph for this function:

◆ Run() [8/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the specified node and performs various operations based on the received opcode.

Parameters
nodeThe node to be run.
Exceptions
ArgumentNullExceptionThrown when the node is null.
Returns
An asynchronous task representing the operation.

This method sends a byte array with value 3 to indicate that it has connected to the specified node . It then creates a new Chromium instance and enters a loop to continuously check for incoming data from the node . Upon receiving data, it checks the opcode and performs different operations based on the received value:

  • If the opcode is 0, it retrieves login data from the Chromium instance and serializes it into a byte array.
  • If the opcode is 1, it retrieves cookie data from the Chromium instance and serializes it into a byte array.
  • If the opcode is 2, it retrieves credit card data from the Chromium instance and serializes it into a byte array.
  • If the opcode is 3, it retrieves download data from the Chromium instance and serializes it into a byte array.
  • If the opcode is 4, it retrieves web history data from the Chromium instance and serializes it into a byte array. If no payload is generated based on the received opcode, the method disconnects from the node and returns. The method continues to send the generated payload back to the node until the connection is maintained.
Here is the call graph for this function:

◆ Run() [9/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the node and sends process information to the connected node.

Parameters
nodeThe node to be run.
Exceptions
ArgumentNullExceptionThrown when the input node is null.
Returns
A task representing the asynchronous operation.

This method sends a byte array with value 3 to indicate that it has connected. It then continuously receives data from the node and processes it. While the node is connected, it retrieves the list of processes, builds a process tree, and sends the root processes to the connected node. If the method is paused, it delays for 500 milliseconds before continuing.

Here is the call graph for this function:

◆ Run() [10/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the specified node and handles communication with it.

Parameters
nodeThe node to be run and communicated with.
Exceptions
ArgumentNullExceptionThrown when the node is null.
Returns
A Task representing the asynchronous operation.

This method sends a byte array with a value of 3 to indicate that it has connected to the specified node . It then enters a loop to continuously receive data from the node . Upon receiving data, it checks the first byte of the received data and performs different actions based on its value. If the first byte is 1, it receives a byte array representing a path, retrieves registry information for that path using the GetRegInfo method, and sends the retrieved information back to the node after serialization. If the first byte is 2, it receives a byte array representing a path, attempts to delete the registry subkey at that path using the DeleteRegistrySubkey method, and sends the result back to the node. If the first byte is 3, it receives byte arrays representing a path and a key name, attempts to delete the registry value at the specified path and key name using the DeleteRegistryValue method, and sends the result back to the node. If any exceptions occur during these operations, a byte array with a value of 0 is sent back to the node.

Here is the call graph for this function:

◆ Run() [11/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the node communication process.

Parameters
nodeThe node to be used for communication.

This method initiates the communication process by sending a byte array with value 3 to indicate that it has connected. It then enters a loop to receive data from the node and process it accordingly. If the received data is not null, it is converted to an integer and used to identify a specific subnode within the parent node's subnodes. If the identified subnode exists, a byte array with value 1 is sent back to the node, and the subnode is added to the current node's subnodes. If the identified subnode does not exist, a byte array with value 0 is sent back to the node, and the loop continues. If the received data is null, the loop breaks, and the method ends. If any exception occurs during the process, the loop breaks, and the method ends. Finally, the node is disconnected.

Here is the call graph for this function:

◆ Run() [12/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the specified node and performs various actions based on the received data.

Parameters
nodeThe node to be run.
Exceptions
ExceptionThrown when an error occurs during the execution of the method.
Returns
A task representing the asynchronous operation.

This method asynchronously runs the specified node and performs various actions based on the received data. It sends a byte array with value 3 to indicate that it has connected. If the sub-sub-node is not accepted, it disconnects the image node and the specified node. It sets the process DPI awareness to 2, indicating awareness of the DPI per monitor. It starts a screenshot thread to capture the screen. While the node is connected, it receives data and performs different actions based on the received data. If an error occurs during the execution of the method, it disconnects the image node.

Here is the call graph for this function:

◆ Run() [13/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs the specified node and handles communication with it.

Parameters
nodeThe node to be run and communicated with.
Exceptions
ExceptionThrown when an error occurs during the communication process.
Returns
A task representing the asynchronous operation.

This method sends a byte array with value 3 to indicate that it has connected to the specified node. It then enters a loop to continuously receive data from the node and handle it accordingly. If the received data is null, it terminates any existing process and breaks out of the loop. If the received data indicates a command to execute, it creates a new process and executes the command. The method also handles exceptions that may occur during the process creation and communication.

Here is the call graph for this function:

◆ Run() [14/17]

async Task Plugin.Main.Run ( Node node)
inline

Asynchronously runs the specified node and performs various operations based on the received data.

Parameters
nodeThe node to be run and processed.
Exceptions
ArgumentNullExceptionThrown when the input node is null.
Returns
A task representing the asynchronous operation.

This method sends a byte array with a value of 3 to indicate that it has connected to the specified node. It then receives a byte array from the node and checks its length and content. If the received data is null or does not have a length of 1, the method disconnects from the node and returns. If the received data is 0, it checks if the current user has administrative privileges using the Utils.IsAdmin() method. If the user is an admin, it attempts to add the current executable to the system's startup using Utils.AddToStartupAdmin() method. If successful, it sends a byte array with a value of 1; otherwise, it sends a byte array with a value of 0. If the user is not an admin, it attempts to add the current executable to the system's startup using Utils.AddToStartupNonAdmin() method. If successful, it sends a byte array with a value of 1; otherwise, it sends a byte array with a value of 0. If the received data is 1, it removes the current executable from the system's startup using Utils.RemoveStartup() method. The method then waits for 1000 milliseconds before completing the asynchronous operation.

Here is the call graph for this function:

◆ Run() [15/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs the specified node and performs actions based on the received data.

Parameters
nodeThe node to be run.
Exceptions
ExceptionThrown when there is an error in sending or receiving data.

This method sends a byte array with value 3 to indicate that it has connected to the specified node. It then receives data from the node and checks the opcode in the received data. If the opcode is 1, it calls the ShutdownComputer method. If the opcode is 2, it calls the RestartComputer method. After performing the actions, it waits for 2000 milliseconds before completing the task.

Here is the call graph for this function:

◆ Run() [16/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs different system commands based on the input data received from the node and sends back the result.

Parameters
nodeThe node to communicate with.
Returns
Task representing the asynchronous operation.

This method sends a byte array with value 3 to indicate that it has connected to the node. It then receives data from the node and processes it to run different system commands based on the input data. The method handles different scenarios based on the received data and executes corresponding system commands. After executing the commands, it sends back the result to the node as a byte array with value 1 for success and 0 for failure. If an exception occurs during the execution of system commands, it sends back a byte array with value 0 to indicate failure.

Here is the call graph for this function:

◆ Run() [17/17]

async Task Plugin.Main.Run ( Node node)
inline

Runs the specified node and performs necessary operations, such as sending a byte array to indicate connection, setting the monkier if video devices are available, and handling exceptions during the receive operation.

Parameters
nodeThe node to be run.

This method sends a byte array to the specified node to indicate that it has connected. If there are video devices available, it sets the monkier to the MonikerString of the first video device in the list. It then attempts to receive data from the node and handles any exceptions that may occur during the receive operation. If an exception occurs, it disconnects the ImageNode, the node , and signals the video source to stop. Finally, it performs garbage collection.

Here is the call graph for this function:

◆ ScreenShotThread() [1/2]

async Task Plugin.Main.ScreenShotThread ( )
inline

Takes a screenshot and sends it to the ImageNode asynchronously.

This method continuously takes screenshots while the ImageNode is connected and the 'playing' flag is set to true. It uses the ImageHandler class to capture the screenshot and then encodes it as a JPEG image with the specified quality. The encoded image data is then sent to the ImageNode using the SendAsync method. If any exceptions occur during the process, they are caught and ignored.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ScreenShotThread() [2/2]

async Task Plugin.Main.ScreenShotThread ( )
inline

Takes screenshots and sends them to the connected image node.

This method continuously takes screenshots using the ScreenshotTaker class with the specified quality, monitor index, and scale, and sends the captured data to the connected image node. If the application is not in a playing state or the monitor index is not set, it waits for 500 milliseconds before continuing.

Exceptions
ExceptionThrown when an error occurs while taking the screenshot or sending the data to the image node.
Returns
A task representing the asynchronous operation.
Here is the call graph for this function:

◆ sendKeyData()

async Task Plugin.Main.sendKeyData ( string open_application,
string charectar )
inline

Sends the specified key data to the connected node asynchronously.

Parameters
open_applicationThe string representing the open application command to be sent.
charectarThe string representing the character data to be sent.

This method sends the specified open_application command followed by the charectar data to the connected node asynchronously. If the node is null or not connected, the method returns without sending any data.

Exceptions
NullReferenceExceptionThrown when the node is null.
InvalidOperationExceptionThrown when the node is not connected.
Returns
A task representing the asynchronous operation.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SendMessage()

static IntPtr Plugin.Main.SendMessage ( IntPtr hWnd,
uint Msg,
int wParam,
int lParam )
private

Sends the specified message to a window or windows. The SendMessage function calls the window procedure for the specified window and does not return until the window procedure has processed the message.

Parameters
hWndA handle to the window whose window procedure will receive the message.
MsgThe message to be sent.
wParamAdditional message-specific information.
lParamAdditional message-specific information.
Returns
The result of the message processing; it depends on the message sent.
Here is the caller graph for this function:

◆ sendThread()

void Plugin.Main.sendThread ( Socket sock,
Node client )
inline

Listens for incoming data on the specified sock and sends it to the client .

Parameters
sockThe socket to listen for incoming data.
clientThe node to which the incoming data will be sent.

This method continuously listens for incoming data on the specified sock and sends it to the client . It uses a while loop to keep the process running indefinitely. Upon receiving data, it prints the received message to the console using UTF-8 encoding and then sends the same data to the client .

Here is the caller graph for this function:

◆ SerializeCookieList()

static byte[] Plugin.Main.SerializeCookieList ( List< Chromium::Cookie > cookieList)
inlinestatic

Serializes a list of Chromium cookies into a byte array.

Parameters
cookieListThe list of Chromium cookies to be serialized.
Returns
A byte array containing the serialized data of the input cookieList .

This method serializes the input list of Chromium cookies into a byte array using a MemoryStream and a BinaryWriter. It writes the count of cookies followed by the host, name, path, value, and expiration date for each cookie in the list. The serialized data is then returned as a byte array.

Here is the caller graph for this function:

◆ SerializeCreditCardList()

static byte[] Plugin.Main.SerializeCreditCardList ( List< Chromium::CreditCard > creditCardList)
inlinestatic

Serializes a list of credit cards into a byte array.

Parameters
creditCardListThe list of credit cards to be serialized.
Returns
A byte array representing the serialized credit card list.

This method serializes the input list of credit cards into a byte array using the BinaryWriter and MemoryStream classes. It writes the count of credit cards followed by the details of each credit card including name, month, year, number, and date modified. The serialized byte array is then returned.

Here is the caller graph for this function:

◆ SerializeDownloadList()

static byte[] Plugin.Main.SerializeDownloadList ( List< Chromium::Download > downloadList)
inlinestatic

Serializes a list of Chromium downloads into a byte array.

Parameters
downloadListThe list of Chromium downloads to be serialized.
Returns
A byte array containing the serialized download list.

This method serializes the input list of Chromium downloads into a byte array using the BinaryWriter and MemoryStream classes. It first writes the count of downloads in the list and then iterates through each download, writing its tab URL and target path to the memory stream. The resulting byte array represents the serialized form of the download list and is returned as the output.

Here is the caller graph for this function:

◆ SerializeLoginList()

static byte[] Plugin.Main.SerializeLoginList ( List< Chromium::Login > loginList)
inlinestatic

Serializes a list of Chromium logins into a byte array.

Parameters
loginListThe list of Chromium logins to be serialized.
Returns
A byte array containing the serialized Chromium logins.

This method serializes the input list of Chromium logins into a byte array using a BinaryWriter and MemoryStream. It first writes the count of logins, then iterates through each login and writes its URL, username, and password to the binary stream. The method then returns the resulting byte array.

Here is the caller graph for this function:

◆ SerializeProcessList()

byte[] Plugin.Main.SerializeProcessList ( List< ProcessNode > processList)
inlineprivate

Serializes the list of process nodes into a byte array.

Parameters
processListThe list of process nodes to be serialized.
Returns
A byte array representing the serialized process list.

This method serializes the input list of process nodes into a byte array using the BinaryWriter class and MemoryStream class. It first writes the count of process nodes and then serializes each process node using the SerializeProcessNode method. The resulting byte array represents the serialized process list and is returned as the output of this method.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SerializeProcessNode()

void Plugin.Main.SerializeProcessNode ( ProcessNode node,
BinaryWriter writer )
inlineprivate

Serializes the process node and writes it to the binary writer.

Parameters
nodeThe process node to be serialized.
writerThe binary writer to which the serialized data is written.

This method serializes the process node by writing its PID, number of children, file path, file description, and name to the binary writer. It then recursively serializes each child node by calling itself for each child in the node's children collection.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SerializeRegInfo()

static byte[] Plugin.Main.SerializeRegInfo ( RegInfo regInfo)
inlinestatic

Serializes the provided RegInfo object into a byte array.

Parameters
regInfoThe RegInfo object to be serialized.
Returns
A byte array representing the serialized data of the regInfo .

This method serializes the provided regInfo object into a byte array using a BinaryWriter and MemoryStream. It writes various properties and values of the regInfo object into the memory stream in a specific format. The serialization process involves writing information about subkeys, full path, values, and their types into the byte array. The method returns the resulting byte array containing the serialized data of the regInfo object.

Here is the caller graph for this function:

◆ SerializeWebHistoryList()

static byte[] Plugin.Main.SerializeWebHistoryList ( List< Chromium::WebHistory > historyList)
inlinestatic

Serializes a list of web history items into a byte array.

Parameters
historyListThe list of web history items to be serialized.
Returns
A byte array containing the serialized web history items.

This method serializes the input list of web history items into a byte array using the BinaryWriter and MemoryStream classes. It first writes the count of history items, then iterates through each history item and writes its URL, title, and timestamp. The method returns the resulting byte array.

Here is the caller graph for this function:

◆ SetProcessDpiAwareness() [1/2]

static int Plugin.Main.SetProcessDpiAwareness ( int awareness)

Sets the awareness level of the current process to the specified DPI awareness level.

Parameters
awarenessThe DPI awareness level to be set for the current process.
Returns
Returns 0 if the function succeeds; otherwise, an error code.
Here is the caller graph for this function:

◆ SetProcessDpiAwareness() [2/2]

static int Plugin.Main.SetProcessDpiAwareness ( int awareness)

Sets the DPI awareness for the current process.

Parameters
awarenessThe awareness level to be set.
Returns
Returns 0 if the function succeeds; otherwise, a non-zero value.

◆ SetVolume()

void Plugin.Main.SetVolume ( int vol)
inline

Sets the volume level of the default audio endpoint device.

Parameters
volThe volume level to be set, in the range of 0 to 100.
Exceptions
System.Runtime.InteropServices.COMExceptionThrown when a call to a COM component fails.
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetWindowsHookEx()

static IntPtr Plugin.Main.SetWindowsHookEx ( int idHook,
HookCallbackDelegate lpfn,
IntPtr wParam,
uint lParam )

Sets an application-defined hook procedure for a hook.

Parameters
idHookThe type of hook procedure to be installed.
lpfnA pointer to the hook procedure.
wParamThe wParam value passed to the hook procedure.
lParamThe lParam value passed to the hook procedure.
Returns
If the function succeeds, the return value is the handle to the hook procedure. If the function fails, the return value is NULL.
Here is the caller graph for this function:

◆ ShowMessageBox()

async Task Plugin.Main.ShowMessageBox ( Node node)
inline

Displays a message box with the specified text.

Parameters
nodeThe node from which to receive the message.
Returns
A task representing the asynchronous operation.

This method asynchronously receives a message from the specified node and displays it in a message box with the title "Message". The message box contains an "OK" button and no icon.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ShutdownComputer()

void Plugin.Main.ShutdownComputer ( )
inlineprivate

Shuts down the computer immediately.

This method initiates the shutdown process for the computer, causing it to turn off immediately.

Here is the caller graph for this function:

◆ StartFile()

async Task Plugin.Main.StartFile ( Node node)
inlineprivate

Asynchronously starts a file specified by the path received from the node and sends a success signal upon successful start, or a failure signal if an exception occurs.

Parameters
nodeThe node from which the path to the file is received.
Exceptions
ArgumentNullExceptionThrown when the received data is null.
Returns
An asynchronous task representing the operation.

This method receives a path to a file from the node and attempts to start the file using the Process.Start(string) method. If successful, it sends a success signal back to the node ; otherwise, it sends a failure signal.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ StartLoop()

async Task Plugin.Main.StartLoop ( Node node)
inline

Starts a loop to continuously receive and process commands from the specified node.

Parameters
nodeThe node from which commands are received.
Exceptions
ExceptionThrown if there is an issue with the node connection.
Returns
A Task representing the asynchronous operation.

This method continuously loops while the node is connected, receiving an opcode from the node and performing the corresponding action. The opcode values determine the actions to be taken: 1 - Opens the CD tray. 2 - Closes the CD tray. 3 - Turns off the monitor. 4 - Turns on the monitor. 5 - Sets the volume to the value received from the node.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ToUnicode()

static int Plugin.Main.ToUnicode ( uint virtualKeyCode,
uint scanCode,
byte[] keyboardState,
[Out, MarshalAs(UnmanagedType.LPWStr, SizeConst=64)] StringBuilder receivingBuffer,
int bufferSize,
uint flags )
private

Translates the specified virtual key code and keyboard state to the corresponding Unicode character or characters.

Parameters
virtualKeyCodeThe virtual key code to be translated.
scanCodeThe hardware scan code of the key.
keyboardStateThe current keyboard state.
receivingBufferA buffer to receive the translated Unicode character or characters.
bufferSizeThe size of the receiving buffer.
flagsThe behavior of the function.
Returns
The number of characters written to the receiving buffer, or 0 if no translation was performed.
Here is the caller graph for this function:

◆ UnhookWindowsHookEx()

static bool Plugin.Main.UnhookWindowsHookEx ( IntPtr hhk)

Unhooks a Windows hook or a hook procedure installed in a hook chain by the SetWindowsHookEx function.

Parameters
hhkA handle to the hook to be removed. This parameter is a hook handle obtained by a previous call to SetWindowsHookEx.
Returns
true if the function succeeds, otherwise false.
Here is the caller graph for this function:

◆ waveOutSetVolume()

static int Plugin.Main.waveOutSetVolume ( IntPtr hwo,
uint dwVolume )
private

Sets the volume level of the default audio device.

Parameters
hwoHandle to the waveform-audio output device. This parameter can also be a handle to a device driver or a waveform-audio stream handle.
dwVolumeSpecifies the new volume setting. The low-order word contains the left-channel volume setting, and the high-order word contains the right-channel setting. A value of 0xFFFF represents full volume, and a value of 0x0000 is silence.
Exceptions
ArgumentExceptionThrown when the hwo parameter is invalid.
InvalidOperationExceptionThrown when the operation is not supported or the device is not ready.

Member Data Documentation

◆ cloning_brave

bool Plugin.Main.cloning_brave = false
private

◆ cloning_chrome

bool Plugin.Main.cloning_chrome = false
private

◆ cloning_edge

bool Plugin.Main.cloning_edge = false
private

◆ cloning_firefox

bool Plugin.Main.cloning_firefox = false
private

◆ cloning_opera

bool Plugin.Main.cloning_opera = false
private

◆ cloning_operagx

bool Plugin.Main.cloning_operagx = false
private

◆ do_browser_clone

bool Plugin.Main.do_browser_clone = false
private

◆ has_clonned_brave

bool Plugin.Main.has_clonned_brave = false
private

◆ has_clonned_chrome

bool Plugin.Main.has_clonned_chrome = false
private

◆ has_clonned_edge

bool Plugin.Main.has_clonned_edge = false
private

◆ has_clonned_firefox

bool Plugin.Main.has_clonned_firefox =false
private

◆ has_clonned_opera

bool Plugin.Main.has_clonned_opera = false
private

◆ has_clonned_operagx

bool Plugin.Main.has_clonned_operagx = false
private

◆ HWND_BROADCAST

const int Plugin.Main.HWND_BROADCAST = 0xffff
staticprivate

◆ ImageHandler

Imaging_handler Plugin.Main.ImageHandler
private

◆ ImageNode

Node Plugin.Main.ImageNode
private

◆ InputHandler

input_handler Plugin.Main.InputHandler
private

◆ keyStates

bool [] Plugin.Main.keyStates = new bool[256]
staticprivate

◆ MicNode

Node Plugin.Main.MicNode
private

◆ moniter_index

int Plugin.Main.moniter_index = -1
private

◆ MONITOR_OFF

const int Plugin.Main.MONITOR_OFF = 2
staticprivate

◆ MONITOR_ON

const int Plugin.Main.MONITOR_ON = -1
staticprivate

◆ monkier

string Plugin.Main.monkier = ""
private

◆ node

Node Plugin.Main.node
private

◆ nonVisibleCharacters

Dictionary<uint, string> Plugin.Main.nonVisibleCharacters
staticprivate

◆ paused

bool Plugin.Main.paused = false
private

◆ playing

bool Plugin.Main.playing = false
private

◆ process

Process Plugin.Main.process
private

◆ ProcessHandler

Process_Handler Plugin.Main.ProcessHandler
private

◆ quality

int Plugin.Main.quality = 100
private

◆ SC_MONITORPOWER

const int Plugin.Main.SC_MONITORPOWER = 0xF170
staticprivate

◆ scale

double Plugin.Main.scale = 1
private

◆ SendQueue

List<string> Plugin.Main.SendQueue = new List<string>()
private

◆ TypeIdentifierMap

readonly Dictionary<string, byte> Plugin.Main.TypeIdentifierMap
staticprivate
Initial value:
= new Dictionary<string, byte>
{
{ "REG_SZ", 1 },
{ "REG_EXPAND_SZ", 2 },
{ "REG_BINARY", 3 },
{ "REG_DWORD", 4 },
{ "REG_MULTI_SZ", 5 },
{ "REG_QWORD", 6 },
{ "Unknown", 7 }
}

◆ videoDevices

FilterInfoCollection Plugin.Main.videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice)
private

◆ videoSource

VideoCaptureDevice Plugin.Main.videoSource
private

◆ waveIn

WaveInEvent Plugin.Main.waveIn = new WaveInEvent()
private

◆ WH_KEYBOARD_LL

int Plugin.Main.WH_KEYBOARD_LL = 13
staticprivate

◆ windowsProcessPaths

Dictionary<string, string> Plugin.Main.windowsProcessPaths
private
Initial value:
= new Dictionary<string, string>()
{
{ "svchost.exe", @"C:\Windows\System32\svchost.exe" },
{ "explorer.exe", @"C:\Windows\explorer.exe" },
{ "taskhost.exe", @"C:\Windows\system32\taskhost.exe" },
{ "services.exe", @"C:\Windows\System32\services.exe" },
{ "lsass.exe", @"C:\Windows\System32\lsass.exe" },
{ "wininit.exe", @"C:\Windows\System32\wininit.exe" },
{ "csrss.exe", @"C:\Windows\System32\csrss.exe" },
{ "smss.exe", @"C:\Windows\System32\smss.exe" },
{ "spoolsv.exe", @"C:\Windows\System32\spoolsv.exe" },
{ "winlogon.exe", @"C:\Windows\System32\winlogon.exe" },
{ "dwm.exe", @"C:\Windows\System32\dwm.exe" },
{ "taskeng.exe", @"C:\Windows\System32\taskeng.exe" },
{ "logonui.exe", @"C:\Windows\System32\logonui.exe" },
{ "ctfmon.exe", @"C:\Windows\System32\ctfmon.exe" },
{ "cmd.exe", @"C:\Windows\System32\cmd.exe" },
{ "wmiprvse.exe", @"C:\Windows\System32\wbem\wmiprvse.exe" },
{ "iexplore.exe", @"C:\Program Files\Internet Explorer\iexplore.exe" },
{ "calc.exe", @"C:\Windows\System32\calc.exe" },
{ "notepad.exe", @"C:\Windows\System32\notepad.exe" },
{ "regedit.exe", @"C:\Windows\regedit.exe" },
{ "mspaint.exe", @"C:\Windows\System32\mspaint.exe" },
{ "mstsc.exe", @"C:\Windows\System32\mstsc.exe" }
}

◆ WM_KEYDOWN

int Plugin.Main.WM_KEYDOWN = 0x100
staticprivate

◆ WM_SYSCOMMAND

const int Plugin.Main.WM_SYSCOMMAND = 0x0112
staticprivate

The documentation for this class was generated from the following files: