HLFX.Ru Forum (https://hlfx.ru/forum/index.php)
- Технические вопросы (https://hlfx.ru/forum/forumdisplay.php?forumid=20)
-- Автоапдейтер волатилы начал детектироваться Касперским как вирус (https://hlfx.ru/forum/showthread.php?threadid=4339)
Отправлено XaeroX 27-03-2014 в 17:07:
Автоапдейтер волатилы начал детектироваться Касперским как вирус
Первый вопрос (риторический): почему продукция Касперского - говно наиговённейшее, говнявое, преговённое?
Второй вопрос (практический): как переписать код, чтобы он снова мог работать у людей без возни с добавлением в исключения?
Программа очень простая. Получает на входе папку игры, папку с временными файлами и pid процесса. Ждёт окончания процесса, потом перезаписывает файлы и самоудаляется. Используется для обновления системных дллок и ехешника, т.е. тех файлов, которые нельзя переписать во время работы движка.
Код:
C++ Source Code:
1 | #define WIN32_LEAN_AND_MEAN |
11 | char *argv[MAX_NUM_ARGVS]; |
13 | static void AU_SelfDelete( void ) |
15 | char szFileName[MAX_PATH]; |
16 | GetModuleFileName( NULL, szFileName, sizeof(szFileName) ); |
17 | MoveFileEx( szFileName, NULL, MOVEFILE_DELAY_UNTIL_REBOOT ); |
20 | static void AU_DeleteDirectory( const char *pszDirName ) |
22 | char search[MAX_PATH]; |
23 | struct _finddata_t findinfo; |
26 | memset( search, 0, sizeof(search) ); |
27 | strncat_s( search, pszDirName, sizeof(search)-1 ); |
28 | strncat_s( search, "\\*", sizeof(search)-1 ); |
30 | findhandle = _findfirst( search, &findinfo ); |
31 | if ( findhandle == -1 ) |
35 | if ( findinfo.name[0] == '.' ) |
37 | memset( search, 0, sizeof(search) ); |
38 | strncat_s( search, pszDirName, sizeof(search)-1 ); |
39 | strncat_s( search, "\\", sizeof(search)-1 ); |
40 | strncat_s( search, findinfo.name, sizeof(search)-1 ); |
41 | if ( findinfo.attrib & _A_SUBDIR ) { |
42 | AU_DeleteDirectory( search ); |
46 | } while ( _findnext ( findhandle, &findinfo ) != -1 ); |
48 | _findclose( findhandle ); |
52 | static bool AU_MoveDirectoryContents( const char *pszDirName, const char *pszDest ) |
56 | struct _finddata_t findinfo; |
59 | memset( src, 0, sizeof(src) ); |
60 | strncat_s( src, pszDirName, sizeof(src)-1 ); |
61 | strncat_s( src, "\\*", sizeof(src)-1 ); |
63 | findhandle = _findfirst( src, &findinfo ); |
64 | if ( findhandle == -1 ) |
68 | if ( findinfo.name[0] == '.' ) |
71 | memset( src, 0, sizeof(src) ); |
72 | strncat_s( src, pszDirName, sizeof(src)-1 ); |
73 | strncat_s( src, "\\", sizeof(src)-1 ); |
74 | strncat_s( src, findinfo.name, sizeof(src)-1 ); |
76 | memset( dst, 0, sizeof(dst) ); |
77 | strncat_s( dst, pszDest, sizeof(dst)-1 ); |
78 | strncat_s( dst, "\\", sizeof(dst)-1 ); |
79 | strncat_s( dst, findinfo.name, sizeof(dst)-1 ); |
81 | if ( findinfo.attrib & _A_SUBDIR ) { |
83 | if ( !AU_MoveDirectoryContents( src, dst ) ) |
89 | if ( !MoveFileEx( src, dst, MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH | MOVEFILE_COPY_ALLOWED ) ) |
91 | } while ( _findnext( findhandle, &findinfo ) != -1 ); |
93 | _findclose( findhandle ); |
97 | int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) |
99 | // Extract argc and argv |
101 | memset( argv, 0, sizeof(char*)*MAX_NUM_ARGVS ); |
103 | bool in_quote = false; |
105 | while ( *lpCmdLine && ( argc < MAX_NUM_ARGVS ) ) { |
106 | while ( *lpCmdLine && ( *lpCmdLine <= 32 ) ) |
110 | if ( *lpCmdLine == '"' ) { |
111 | in_quote = !in_quote; |
114 | argv[argc] = lpCmdLine; |
116 | while ( *lpCmdLine && ( ( *lpCmdLine > 32 ) || in_quote ) ) { |
117 | if ( in_quote && ( *lpCmdLine == '"' ) ) { |
118 | in_quote = !in_quote; |
130 | // argv[0] = temp directory |
131 | // argv[1] = game directory |
132 | // argv[2] = success message |
133 | // argv[3] = parent process id |
138 | DWORD dwPID = atoi( argv[3] ); |
139 | HANDLE hParent = OpenProcess( PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, dwPID ); |
143 | WaitForSingleObject( hParent, INFINITE ); |
144 | CloseHandle( hParent ); |
146 | // Now we can install updates |
147 | bool bSuccess = AU_MoveDirectoryContents( argv[0], argv[1] ); |
148 | AU_DeleteDirectory( argv[0] ); |
152 | sprintf_s( buf, "Error installing update!\nError code: %u", GetLastError() ); |
153 | MessageBox( 0, buf, NULL, MB_ICONSTOP ); |
155 | MessageBox( 0, argv[2], "", MB_ICONINFORMATION ); |
Касперскому не нравятся две вещи: 1) рекурсивный вызов AU_MoveDirectoryContents; 2) вызов MoveFileEx.
Охренеть просто. Программа оперирует только с параметрами, переданными ей в командной строке. Какого чёрта она распознаётся как потенциально опасная? Можно подумать, она в системные папки лезет. 
__________________
Отправлено tolerance 27-03-2014 в 17:38:
Напиши им в поддержку. Может даже пришли безобидный исходный код, который у ихнего антивируса детектится.
А лучше забить. ТРУЪ юзер не юзает онтивирус.
Отправлено Cybermax 27-03-2014 в 17:43:
Цитата:
tolerance писал:
А лучше забить. ТРУЪ юзер не юзает онтивирус.
В разработке игрового движка нет такого понятие тру или не тру. Есть принцип купил, установил и играешь. И никаких танцев с бубном.__________________
ㅤ
Отправлено XaeroX 27-03-2014 в 17:44:
Цитата:
tolerance писал:
Напиши им в поддержку.
Кто-нибудь знает почтовый адрес?
На форуме такой специфической ветки не нашёл, там всё больше вопросы юзерского уровня.
Цитата:
tolerance писал:
А лучше забить. ТРУЪ юзер не юзает онтивирус.
Угу, забить, как же. Каспер берёт и молча удаляет этот ехешник. А т.к. он вшивается в ресурсы движкового ехешника - удалит и его.
Причём старые версии касперского ничего такого не находили, а новая - начала. Причём, возможно, начиная с какого-то апдейта, я не следил.__________________
Отправлено Дядя Миша 27-03-2014 в 17:56:
Касперскому вашему не нравится ровно тот факт, что программка совершает операции с файлами. Для нее любая программа, которая совершает операции с файлами = вирус. Ну кроме винды, конечно.
Добавлено 27-03-2014 в 21:56:
А еще скажу: у тебя там рекурсивное удаление. С точки зрения любого антивируса это подозрительно. Т.е. порядочная программа должна срать в темп и никогда за собой не подчищать.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено XaeroX 27-03-2014 в 18:08:
Против рекурсивного удаления касперский ничего не имеет.
Ему не нравится рекурсивное перемещение файлов. И вообще рекурсивный вызов AU_MoveDirectoryContents (ругается на вирус даже при закомментированном MoveFileEx).
В общем, чудеса какие-то. Скорее всего, баг в эвристике или в сигнатурах. Ну не может быть тут ничего подозрительного, тысячи программ файлы мувают.
Правда, есть нюанс, эта программка весит всего 8 кб. Может, это ему не нравится? Ну тогда надо статически с Qt слинковать, наверное. 
Добавлено 28-03-2014 в 01:08:
Твою жеж мать! Слинковал статически с CRT, размер увеличился до 55 кб, касперский перестал ругаться!
Охренеть эвристика! Ну просто достойна Бабушкина. Интересно, а гусей он.. не тово?
__________________
Отправлено KiQ 28-03-2014 в 18:28:
XaeroX ну так небось у них договор какой с М$
__________________
-Brain is dead-
Отправлено Дядя Миша 28-03-2014 в 18:39:
Цитата:
XaeroX писал:
Слинковал статически с CRT
Это ты имеешь в виду libc.lib?
Просто у меня в ксаше эзкшенички тоже мелкие, но еще никто не жаловался.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено Government-Man 28-03-2014 в 20:27:
Цитата:
XaeroX писал:
Твою жеж мать! Слинковал статически с CRT, размер увеличился до 55 кб, касперский перестал ругаться!
В утекших сорцах Касперского есть довольно любопытная документация - эдакий черновик диздока. Так вот там для эвристики среди прочего списка "подозрительных признаков" указан "размер меньше N кб" 
На самом деле имеет смысл, потому как создатели вирусов известны своим задротством в отношении размеров их программ.
Отправлено Дядя Миша 28-03-2014 в 20:31:
Цитата:
Government-Man писал:
Так вот там для эвристики среди прочего списка "подозрительных признаков" указан "размер меньше N кб"
Логика на уровне "нету спичек - значит импотент".__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FreeSlave 29-03-2014 в 05:46:
Дядя Миша, у меня, кажется, Immunet на юнинсталл жаловался в ксаше. Но бомжарским антивирусам я такое прощаю.
Отправлено KiQ 29-03-2014 в 05:59:
FreeSlave ты наверное в названии ошибся немного
__________________
-Brain is dead-
Отправлено Government-Man 29-03-2014 в 06:00:
Цитата:
Дядя Миша писал:
Логика на уровне "нету спичек - значит импотент"
Эвристика есть эвристика, как ни крути, а программа размером в 2 кб с большей вероятностью оказывается вирусом, чем программа размером в 2 мегабайта.
Отправлено XaeroX 29-03-2014 в 06:13:
Government-Man
Слушай, ну допустим, вероятность оказаться вирусом 95%.
Остальные 5% - это миниатюрные программы-автоапдейтеры, хранящиеся в ресурсах больших программ и извлекаемые по мере надобности.
Эвристике касперского, выходит, глубоко плевать на эти 5% честных программ?
Представим себе камеру осуждённых на смертную казнь, в ней 100 человек, но известно, что пятерым заменили казнь на пожизненное. И тут приходит указание сверху - казнить всех, кого положено. Касперский в этом случае казнит всех - зачем ему разбираться, кто на что осуждён? Всего-то 5 человек из 100, ну мелочь же?
Вот так работает его эвристика. 
Добавлено 29-03-2014 в 13:13:
А как должна работать нормальная эвристика: анализировать, откуда приходят входные данные в программу. Если в программу вшиты какие-то пути, или она юзает GetSystemDirectory/SHGetSpecialFolderPath, и оперирует с файлами по этим путям - да, подозрительно. Если программа копирует или удаляет файлы, переданные ей в аргументах - это самая обычная утилита.
Я понимаю, когда Бабушкин вычисляет контрольную сумму cp/xcopy и любую другую программу, копирующую файлы, с другой суммой, записывает в "вирусы". Но это, блин, лаборатория Касперского, а не алтайский школьник... 
__________________
Отправлено ~ X ~ 29-03-2014 в 07:50:
Смешно: вирус допишет нулей сам в себя, вырастет и станет большим. Все довольны?
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено XaeroX 29-03-2014 в 08:31:
~ X ~
Сейчас есть вирусы, которые требуют минимум дотнет фреймворк 4.0 для запуска. И ничего! 
__________________
Отправлено ~ X ~ 29-03-2014 в 09:39:
XaeroX
т.е. они меня попросят скачать 200мб говна себена комп? ох ржунимагу! 
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено FreeSlave 29-03-2014 в 10:34:
KiQ, Отличная Шутка!
Нет, я про http://www.immunet.com/main/index.html
А бомжарским назвал, так как он основан на clamav.
Отправлено XaeroX 29-03-2014 в 11:06:
Цитата:
FreeSlave писал:
он основан на clamav
Антивирус Попова, что ли? 
__________________
Отправлено Дядя Миша 29-03-2014 в 14:11:
Цитата:
Government-Man писал:
Эвристика есть эвристика
Эвристика - это детектировать вирус по размеру программы? Ну-ну.
Цитата:
Government-Man писал:
а программа размером в 2 кб с большей вероятностью оказывается вирусом
И из чего следует такая вероятность?
Добавлено 29-03-2014 в 18:11:
FreeSlave но в ксаше нет унинсталла 
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено XaeroX 29-03-2014 в 14:22:
Цитата:
Дядя Миша писал:
И из чего следует такая вероятность?
Видимо, простая статистика.
Наверное, и демосцены надо сразу в вирусы записать. На всякий случай.__________________
Отправлено Дядя Миша 29-03-2014 в 14:28:
Цитата:
XaeroX писал:
Видимо, простая статистика.
юные недо-хакеры даже CRT динамически линковать разучились, не говоря уже про _declspec( naked ). Сейчас куда вероятнее встретить вирус на сишарпе.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 29-03-2014 в 16:14:
>и демосцены надо сразу в вирусы записать. На всякий случай.
уж куда проще вообще запретить все программы не прошедшие сертификацию в каком ни будь мининформтехе. естественно, на уровне железа через DRM/TC. вангую, что через лет 5 так и будет -- столлман был прав во всём.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено Дядя Миша 29-03-2014 в 16:41:
Какие пять лет? Вон на аппле всегда так было. Софта и так мало, еще весь огороженный. Пока не купишь - не работает.
Все эти ограничения позволяются лишь потому, что не сильно мешают, а где-то создают и видимое преимущество. Лично для меня всё закончилось в 2005 году - я перестал обновлять софт, т.к. не видел в этом никакой потребности.
Старый софт не ржавеет, не глючит, прекрасно себе работает, свои задачи выполняет. Где-то еще с MS-DOS не слезли. Обновление ради обновления - верный признак шизофрении.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено FreeSlave 29-03-2014 в 16:59:
Дядя Миша, в XashXT тоже? Ну, значит, он всё правильно сделал 
Отправлено XaeroX 29-03-2014 в 17:33:
Не, ну проблема вирусов всё-таки реально существует.
Беда в том, что вместо того, чтобы серьёзно работать над эвристиками, кои-кто тратит деньги непонятно на что, а взамен предлагает инновационные идеи "а ля Бабушкин". 
__________________
Отправлено Дядя Миша 29-03-2014 в 18:02:
FreeSlave что сказать-то хотел?
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено XaeroX 29-03-2014 в 18:25:
Цитата:
Дядя Миша писал:
Обновление ради обновления - верный признак шизофрении.
У майкрософта, кстати, недавно вышло обновление для ХР, которое постоянно напоминает юзеру, что надо обновиться до новой винды (заплатив денюжку, разумеется). 
Так что те, кто юзает виндовс-апдейт - будьте бдительны.__________________
Отправлено ~ X ~ 29-03-2014 в 19:22:
XaeroX индекс - в студию! (хотя, ХРюшей не пользуюсь)
__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]
Отправлено Дядя Миша 29-03-2014 в 19:27:
Цитата:
XaeroX писал:
недавно вышло обновление для ХР, которое постоянно напоминает юзеру, что надо обновиться до новой винды
Поставили третий сервис-пак, теперь вместо спящего режима - синий экран
Ну в принципе, я такое уже и раньше наблюдал. Только тогда ошибку халфа провоцировала, можете смеяться. SP3 + Steam Half-Life = BSOD. Причём закономерности никакой, кроме того, что халфа запущена. Может и через час вылететь, может и через несколько секунд. Если халфу не запускать (например обходиться ксашем), то синьки нет.__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 30-03-2014 в 13:24:
>Не, ну проблема вирусов всё-таки реально существует.
ну ты не так всё понял. суть в чём:
1)вступаем в справедливую россию
2)выдумываем там законопроект вроде "защиты детей от компьютерных вирусов".
3)в тексте законопроекта делаем так что запрещены вообще все программы и средства разработки.
4)на базе лаборатории кашпировского (и других примазавшихся) делаем службу сертификации продающую индульгенции. ну и, кочнено, договариваемся с InHELL и micro$oft что бы везде был DRM/TC.
5)тех, кто купил идульгенцию награждаем значком "за вклад в борьбе с мировым гомосексуальным заговором" и гладим по голове, тех кто индульгенцию не купил а что то там кодит -- сажаем в колонию поселение на два года с возможностью досрочного выхода.
6)???
7)PROFIT, чистые интернеты и никаких вирусов.
6*)пользователей gnu/linux и вообще свободного ПО вместо двух лет сажаем на 7 и отправляем на урановые рудники как пятую колонну и пособников мирового гомосексуального терорризма.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено Дядя Миша 30-03-2014 в 14:10:
Ну чего ты добрый такой? Семь лет всего. Двадцать лет с последующим расстрелом. И народу всегда нравится когда кого-то сажают.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 30-03-2014 в 14:54:
Дядя Миша
не хочу я себе 20 лет с последующим расстрелом. уж лучше уран копать.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено Дядя Миша 30-03-2014 в 15:00:
ну ты же под вайном сидишь? Значит встал на скользкий путь исправления
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено thambs 30-03-2014 в 15:08:
Дядя Миша
я кстати выяснил что под вайном тормозит именно новый рендер (из за этого раньше и не замечал) -- видимо где то там вайновая трансляция и лажает. нельзя как ни будь по одной функции рендера включать/выключать что бы гадкое место выявить?
>путь исправления
нет. не получится у меня -- слишком надо трахаться с настрйоками что бы что то комфортное получилось.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено XaeroX 30-03-2014 в 15:41:
Цитата:
thambs писал:
не хочу я себе 20 лет с последующим расстрелом. уж лучше уран копать.
Чем это, собственно говоря, лучше? 
__________________
Отправлено thambs 30-03-2014 в 15:45:
XaeroX
быстро скопытишься, хоть и мучительно. почки откажут и привет.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено XaeroX 30-03-2014 в 16:51:
thambs
А они в свинцовых костюмах работать заставят. Те же 20 лет протянешь, ну и доктора будут на подхвате, чтобы если что - адреналинчик впрыснуть. Как вариант - почечный диализ каждые 6 часов всей бригаде.
__________________
Отправлено Дядя Миша 30-03-2014 в 17:04:
Сразу видно, кто языком почесать зашёл, а кто реально на этих рудниках горбатился. Респект!
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'
Отправлено XaeroX 30-03-2014 в 17:11:
Та не, я книжки читал. В нашей стране надо быть готовым ко всему, ну это все знают.
__________________
Отправлено thambs 30-03-2014 в 17:17:
XaeroX
это тратиться надо. кто ж на заключённых тратиться будет, а главное, зачем?
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено XaeroX 30-03-2014 в 17:34:
Ну кто-то же должен уран добывать.
__________________
Отправлено thambs 30-03-2014 в 17:43:
XaeroX
ну так не качеством а количеством же.
__________________
http://www.moddb.com/mods/monorail-quest
Отправлено Government-Man 30-03-2014 в 18:42:
Вот за что я люблю форум HLFX, так это за то, что тут с обсуждения автоапдейтера могут легко перейти к обсуждению добычи урана силами заключенных. 
Отправлено Дядя Миша 30-03-2014 в 19:01:
Government-Man когда админы сами флудёры - еще и не такое возможно.
__________________
My Projects: download page
F.A.Q по XashNT
Блог разработчика в телеграме
Цитата:
C:\DOCUME~1\C4C5~1\LOCALS~1\Temp\a33328if(72) : see declaration of 'size_t'