HLFX.Ru Forum
Показать все 45 сообщений этой темы на одной странице

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
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.
Охренеть просто. Программа оперирует только с параметрами, переданными ей в командной строке. Какого чёрта она распознаётся как потенциально опасная? Можно подумать, она в системные папки лезет.

__________________

xaerox on Vivino


Отправлено tolerance 27-03-2014 в 17:38:

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

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


Отправлено Cybermax 27-03-2014 в 17:43:

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



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

__________________


Отправлено XaeroX 27-03-2014 в 17:44:

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

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

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 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 кб, касперский перестал ругаться!
Охренеть эвристика! Ну просто достойна Бабушкина. Интересно, а гусей он.. не тово?

__________________

xaerox on Vivino


Отправлено 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 и любую другую программу, копирующую файлы, с другой суммой, записывает в "вирусы". Но это, блин, лаборатория Касперского, а не алтайский школьник...

__________________

xaerox on Vivino


Отправлено ~ 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 для запуска. И ничего!

__________________

xaerox on Vivino


Отправлено ~ 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

Антивирус Попова, что ли?

__________________

xaerox on Vivino


Отправлено Дядя Миша 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:

Цитата:
Дядя Миша писал:
И из чего следует такая вероятность?

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

__________________

xaerox on Vivino


Отправлено Дядя Миша 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:

Не, ну проблема вирусов всё-таки реально существует.
Беда в том, что вместо того, чтобы серьёзно работать над эвристиками, кои-кто тратит деньги непонятно на что, а взамен предлагает инновационные идеи "а ля Бабушкин".

__________________

xaerox on Vivino


Отправлено Дядя Миша 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:

Цитата:
Дядя Миша писал:
Обновление ради обновления - верный признак шизофрении.

У майкрософта, кстати, недавно вышло обновление для ХР, которое постоянно напоминает юзеру, что надо обновиться до новой винды (заплатив денюжку, разумеется).
Так что те, кто юзает виндовс-апдейт - будьте бдительны.

__________________

xaerox on Vivino


Отправлено ~ 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 лет с последующим расстрелом. уж лучше уран копать.

Чем это, собственно говоря, лучше?

__________________

xaerox on Vivino


Отправлено thambs 30-03-2014 в 15:45:

XaeroX
быстро скопытишься, хоть и мучительно. почки откажут и привет.

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 30-03-2014 в 16:51:

thambs
А они в свинцовых костюмах работать заставят. Те же 20 лет протянешь, ну и доктора будут на подхвате, чтобы если что - адреналинчик впрыснуть. Как вариант - почечный диализ каждые 6 часов всей бригаде.

__________________

xaerox on Vivino


Отправлено Дядя Миша 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:

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

__________________

xaerox on Vivino


Отправлено thambs 30-03-2014 в 17:17:

XaeroX

это тратиться надо. кто ж на заключённых тратиться будет, а главное, зачем?

__________________
http://www.moddb.com/mods/monorail-quest


Отправлено XaeroX 30-03-2014 в 17:34:

Ну кто-то же должен уран добывать.

__________________

xaerox on Vivino


Отправлено 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'


Временная зона GMT. Текущее время 21:51.
Показать все 45 сообщений этой темы на одной странице

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