HLFX.Ru Forum
профиль •  правила •  регистрация •  календарь •  народ •  FAQ •  поиск •  новое •  сутки •  главная •  выход  
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Автоапдейтер волатилы начал детектироваться Касперским как вирус
HEUR:Trojan.Win32.Generic
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
Автор
Тема Новая тема    Ответить
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34547
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Автоапдейтер волатилы начал детектироваться Касперским как вирус

Первый вопрос (риторический): почему продукция Касперского - говно наиговённейшее, говнявое, преговённое?
Второй вопрос (практический): как переписать код, чтобы он снова мог работать у людей без возни с добавлением в исключения?

Программа очень простая. Получает на входе папку игры, папку с временными файлами и pid процесса. Ждёт окончания процесса, потом перезаписывает файлы и самоудаляется. Используется для обновления системных дллок и ехешника, т.е. тех файлов, которые нельзя переписать во время работы движка.

Код:

C++ Source Code:
1
#define WIN32_LEAN_AND_MEAN
2
#include <windows.h>
3
#include <stdio.h>
4
#include <stdlib.h>
5
#include <direct.h>
6
#include <io.h>
7
 
8
#define MAX_NUM_ARGVS	4
9
 
10
int argc;
11
char *argv[MAX_NUM_ARGVS];
12
 
13
static void AU_SelfDelete( void )
14
{
15
  char szFileName[MAX_PATH];
16
  GetModuleFileName( NULL, szFileName, sizeof(szFileName) );
17
  MoveFileEx( szFileName, NULL, MOVEFILE_DELAY_UNTIL_REBOOT );
18
}
19
 
20
static void AU_DeleteDirectory( const char *pszDirName )
21
{
22
  char search[MAX_PATH];
23
  struct _finddata_t findinfo;
24
  intptr_t findhandle;
25
 
26
  memset( search, 0, sizeof(search) );
27
  strncat_s( search, pszDirName, sizeof(search)-1 );
28
  strncat_s( search, "\\*", sizeof(search)-1 );
29
 
30
  findhandle = _findfirst( search, &findinfo );
31
  if ( findhandle == -1 )
32
    return;
33
 
34
  do {
35
    if ( findinfo.name[0] == '.' )
36
      continue;
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 );
43
      continue;
44
    }
45
    remove( search );
46
  } while ( _findnext ( findhandle, &findinfo ) != -1 );
47
 
48
  _findclose( findhandle );
49
  _rmdir( pszDirName );
50
}
51
 
52
static bool AU_MoveDirectoryContents( const char *pszDirName, const char *pszDest )
53
{
54
  char src[1024];
55
  char dst[1024];
56
  struct _finddata_t findinfo;
57
  intptr_t findhandle;
58
 
59
  memset( src, 0, sizeof(src) );
60
  strncat_s( src, pszDirName, sizeof(src)-1 );
61
  strncat_s( src, "\\*", sizeof(src)-1 );
62
 
63
  findhandle = _findfirst( src, &findinfo );
64
  if ( findhandle == -1 )
65
    return true;
66
 
67
  do {
68
    if ( findinfo.name[0] == '.' )
69
      continue;
70
 
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 );
75
 
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 );
80
 
81
    if ( findinfo.attrib & _A_SUBDIR ) {
82
      _mkdir( dst );
83
      if ( !AU_MoveDirectoryContents( src, dst ) )
84
        return false;
85
      continue;
86
    }
87
 
88
    // move file
89
    if ( !MoveFileEx( src, dst, MOVEFILE_REPLACE_EXISTING | MOVEFILE_WRITE_THROUGH | MOVEFILE_COPY_ALLOWED ) )
90
      return false;
91
  } while ( _findnext( findhandle, &findinfo ) != -1 );
92
 
93
  _findclose( findhandle );
94
  return true;
95
}
96
 
97
int APIENTRY WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
98
{
99
  // Extract argc and argv
100
  argc = 0;
101
  memset( argv, 0, sizeof(char*)*MAX_NUM_ARGVS );
102
 
103
  bool in_quote = false;
104
 
105
  while ( *lpCmdLine && ( argc < MAX_NUM_ARGVS ) ) {
106
    while ( *lpCmdLine && ( *lpCmdLine <= 32 ) )
107
      ++lpCmdLine;
108
 
109
    if ( *lpCmdLine ) {
110
      if ( *lpCmdLine == '"' ) {
111
        in_quote = !in_quote;
112
        ++lpCmdLine;
113
      }
114
      argv[argc] = lpCmdLine;
115
      ++argc;
116
      while ( *lpCmdLine && ( ( *lpCmdLine > 32 ) || in_quote ) ) {
117
        if ( in_quote && ( *lpCmdLine == '"' ) ) {
118
          in_quote = !in_quote;
119
          break;
120
        }
121
        ++lpCmdLine;
122
      }
123
      if ( *lpCmdLine ) {
124
        *lpCmdLine = 0;
125
        ++lpCmdLine;
126
      }
127
    }
128
  }
129
 
130
  // argv[0] = temp directory
131
  // argv[1] = game directory
132
  // argv[2] = success message
133
  // argv[3] = parent process id
134
 
135
  if ( !argv[3] )
136
    return 0;
137
 
138
  DWORD dwPID = atoi( argv[3] );
139
  HANDLE hParent = OpenProcess( PROCESS_QUERY_INFORMATION | SYNCHRONIZE, FALSE, dwPID );
140
  if ( hParent == 0 )
141
    return 1;
142
 
143
  WaitForSingleObject( hParent, INFINITE );
144
  CloseHandle( hParent );
145
 
146
  // Now we can install updates
147
  bool bSuccess = AU_MoveDirectoryContents( argv[0], argv[1] );
148
  AU_DeleteDirectory( argv[0] );
149
 
150
  if ( !bSuccess ) {
151
    char buf[64];
152
    sprintf_s( buf, "Error installing update!\nError code: %u", GetLastError() );
153
    MessageBox( 0, buf, NULL, MB_ICONSTOP );
154
  } else {
155
    MessageBox( 0, argv[2], "", MB_ICONINFORMATION );
156
  }
157
 
158
  AU_SelfDelete();
159
  return 0;
160
}


Касперскому не нравятся две вещи: 1) рекурсивный вызов AU_MoveDirectoryContents; 2) вызов MoveFileEx.
Охренеть просто. Программа оперирует только с параметрами, переданными ей в командной строке. Какого чёрта она распознаётся как потенциально опасная? Можно подумать, она в системные папки лезет.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 135470

Старое сообщение 27-03-2014 17:07
-
tolerance
Житель форума
Девойс

Дата регистрации: Feb 2013
Проживает: (void)
Сообщений: 739
Возраст: 32

Рейтинг



Напиши им в поддержку. Может даже пришли безобидный исходный код, который у ихнего антивируса детектится.

А лучше забить. ТРУЪ юзер не юзает онтивирус.

Сообщить модератору | | IP: Записан
Сообщение: 135475

Старое сообщение 27-03-2014 17:38
- За что?
Cybermax
Житель форума

Дата регистрации: May 2006
Проживает: &#12644;
Сообщений: 5127

Рейтинг



Цитата:
tolerance писал:
А лучше забить. ТРУЪ юзер не юзает онтивирус.



В разработке игрового движка нет такого понятие тру или не тру. Есть принцип купил, установил и играешь. И никаких танцев с бубном.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 135476

Старое сообщение 27-03-2014 17:43
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34547
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Цитата:
tolerance писал:
Напиши им в поддержку.

Кто-нибудь знает почтовый адрес?
На форуме такой специфической ветки не нашёл, там всё больше вопросы юзерского уровня.
Цитата:
tolerance писал:
А лучше забить. ТРУЪ юзер не юзает онтивирус.

Угу, забить, как же. Каспер берёт и молча удаляет этот ехешник. А т.к. он вшивается в ресурсы движкового ехешника - удалит и его.
Причём старые версии касперского ничего такого не находили, а новая - начала. Причём, возможно, начиная с какого-то апдейта, я не следил.

__________________

Сообщить модератору | | IP: Записан
Сообщение: 135477

Старое сообщение 27-03-2014 17:44
-
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32237
Нанёс повреждений: 392 ед.

Рейтинг



Касперскому вашему не нравится ровно тот факт, что программка совершает операции с файлами. Для нее любая программа, которая совершает операции с файлами = вирус. Ну кроме винды, конечно.

Добавлено 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'

Сообщить модератору | | IP: Записан
Сообщение: 135480

Старое сообщение 27-03-2014 17:56
-
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34547
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Против рекурсивного удаления касперский ничего не имеет.
Ему не нравится рекурсивное перемещение файлов. И вообще рекурсивный вызов AU_MoveDirectoryContents (ругается на вирус даже при закомментированном MoveFileEx).
В общем, чудеса какие-то. Скорее всего, баг в эвристике или в сигнатурах. Ну не может быть тут ничего подозрительного, тысячи программ файлы мувают.
Правда, есть нюанс, эта программка весит всего 8 кб. Может, это ему не нравится? Ну тогда надо статически с Qt слинковать, наверное.

Добавлено 28-03-2014 в 01:08:

Твою жеж мать! Слинковал статически с CRT, размер увеличился до 55 кб, касперский перестал ругаться!
Охренеть эвристика! Ну просто достойна Бабушкина. Интересно, а гусей он.. не тово?

__________________

Сообщить модератору | | IP: Записан
Сообщение: 135481

Старое сообщение 27-03-2014 18:08
-
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2088

Рейтинг



XaeroX ну так небось у них договор какой с М$

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 135560

Старое сообщение 28-03-2014 18:28
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32237
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 135562

Старое сообщение 28-03-2014 18:39
-
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


Цитата:
XaeroX писал:
Твою жеж мать! Слинковал статически с CRT, размер увеличился до 55 кб, касперский перестал ругаться!


В утекших сорцах Касперского есть довольно любопытная документация - эдакий черновик диздока. Так вот там для эвристики среди прочего списка "подозрительных признаков" указан "размер меньше N кб"

На самом деле имеет смысл, потому как создатели вирусов известны своим задротством в отношении размеров их программ.

Сообщить модератору | | IP: Записан
Сообщение: 135565

Старое сообщение 28-03-2014 20:27
- За что?
 Дядя Миша
racing for fish

Дата регистрации: Oct 2005
Проживает: Кубань
Сообщений: 32237
Нанёс повреждений: 392 ед.

Рейтинг



Цитата:
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'

Сообщить модератору | | IP: Записан
Сообщение: 135566

Старое сообщение 28-03-2014 20:31
-
FreeSlave
Житель форума

Дата регистрации: Nov 2007
Проживает: Тула
Сообщений: 1078

Рейтинг



Дядя Миша, у меня, кажется, Immunet на юнинсталл жаловался в ксаше. Но бомжарским антивирусам я такое прощаю.

Сообщить модератору | | IP: Записан
Сообщение: 135569

Старое сообщение 29-03-2014 05:46
- За что?
KiQ
Житель форума

Дата регистрации: Aug 2010
Проживает: Смоленск, Москва
Сообщений: 2088

Рейтинг



FreeSlave ты наверное в названии ошибся немного

__________________
-Brain is dead-

Сообщить модератору | | IP: Записан
Сообщение: 135570

Старое сообщение 29-03-2014 05:59
- За что?
Government-Man
Призрак

Дата регистрации: Apr 2006
Проживает: N/A
Сообщений: 3507

Рейтинг



Награды
 
[1 награда]


Цитата:
Дядя Миша писал:
Логика на уровне "нету спичек - значит импотент"


Эвристика есть эвристика, как ни крути, а программа размером в 2 кб с большей вероятностью оказывается вирусом, чем программа размером в 2 мегабайта.

Сообщить модератору | | IP: Записан
Сообщение: 135571

Старое сообщение 29-03-2014 06:00
- За что?
 XaeroX
Crystice Softworks

Дата регистрации: Oct 2005
Проживает: Торонто
Сообщений: 34547
Нанёс повреждений: 514 ед.
Возраст: 37

Рейтинг



Награды
 
[1 награда]


Government-Man
Слушай, ну допустим, вероятность оказаться вирусом 95%.
Остальные 5% - это миниатюрные программы-автоапдейтеры, хранящиеся в ресурсах больших программ и извлекаемые по мере надобности.
Эвристике касперского, выходит, глубоко плевать на эти 5% честных программ?
Представим себе камеру осуждённых на смертную казнь, в ней 100 человек, но известно, что пятерым заменили казнь на пожизненное. И тут приходит указание сверху - казнить всех, кого положено. Касперский в этом случае казнит всех - зачем ему разбираться, кто на что осуждён? Всего-то 5 человек из 100, ну мелочь же?
Вот так работает его эвристика.

Добавлено 29-03-2014 в 13:13:

А как должна работать нормальная эвристика: анализировать, откуда приходят входные данные в программу. Если в программу вшиты какие-то пути, или она юзает GetSystemDirectory/SHGetSpecialFolderPath, и оперирует с файлами по этим путям - да, подозрительно. Если программа копирует или удаляет файлы, переданные ей в аргументах - это самая обычная утилита.
Я понимаю, когда Бабушкин вычисляет контрольную сумму cp/xcopy и любую другую программу, копирующую файлы, с другой суммой, записывает в "вирусы". Но это, блин, лаборатория Касперского, а не алтайский школьник...

__________________

Сообщить модератору | | IP: Записан
Сообщение: 135575

Старое сообщение 29-03-2014 06:13
-
~ X ~
offline

Дата регистрации: Oct 2005
Проживает: Архангельск
Сообщений: 3619

Рейтинг



Награды
 
[1 награда]


Смешно: вирус допишет нулей сам в себя, вырастет и станет большим. Все довольны?

__________________
Минутка полезного:
Бесплатный UT-подобный Half-Life mod.
Бесплатный редактор для 32-битных текстур. Без дотнета.
Бесплатный IDE для любых компиляторов и ЯП.
Бесплатная Windows-подобная ОС.
Проверка грамматики русского языка.
Чат по hl[fx]: [email protected]

Сообщить модератору | | IP: Записан
Сообщение: 135578

Старое сообщение 29-03-2014 07:50
- За что?
Тема: (Опционально)
Ваш ответ:



Переводчик транслита


[проверить длину сообщения]
Опции: Автоматическое формирование ссылок: автоматически добавлять [url] и [/url] вокруг интернет адресов.
Уведомление по E-Mail: отправить вам уведомление, если кто-то ответил в тему (только для зарегистрированных пользователей).
Отключить смайлики в сообщении: не преобразовывать текстовые смайлики в картинки.
Показать подпись: добавить вашу подпись в конец сообщения (только зарегистрированные пользователи могут иметь подписи).

Временная зона GMT. Текущее время 02:12. Новая тема    Ответить
Страницы (3): [1] 2 3 »   Предыдущая тема   Следующая тема
HLFX.Ru Forum HLFX.Ru Forum > Наш форум > Технические вопросы > Автоапдейтер волатилы начал детектироваться Касперским как вирус
HEUR:Trojan.Win32.Generic
Версия для печати | Отправить тему по E-Mail | Подписаться на эту тему

Быстрый переход:
Оцените эту тему:

Правила Форума:
Вы not можете создавать новые темы
Вы not можете отвечать в темы
Вы not можете прикреплять вложения
Вы not можете редактировать ваши сообщения
HTML Код ВЫКЛ
vB Код ВКЛ
Смайлики ВКЛ
[IMG] Код ВКЛ
 

< Обратная связь - HLFX.ru >

На основе vBulletin
Авторское право © 2000 - 2002, Jelsoft Enterprises Limited.
Дизайн и программирование: Crystice Softworks © 2005 - 2024