Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 413
от 10.11.2002, 10:40
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1751 Отправлено ответов: 5508 Активность: 314.5 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 155 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 130.63 URL: моя рассылка по Protected Mode [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 153.43 [Подробней >>] |
Beeblebrox Статус: Профессиональный Общий рейтинг: 112.96 URL: Beeblebrox / TMA HomePage [Подробней >>] |
Maverick Статус: Опытный Общий рейтинг: 140 URL: Страница по асму и вирмейку Телефон: 89039415024 (BiLine GSM) [Подробней >>] |
LIFO Статус: Профессиональный Общий рейтинг: 127.84 URL: наш сайт Телефон: 8 01710 24758 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 114.85 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 120.24 [Подробней >>] |
Топор Статус: Профессиональный Общий рейтинг: 113.28 URL: Хорошая Русская Металлическая команда Телефон: (8462)500298 [Подробней >>] |
Eugene Статус: Доверительный Общий рейтинг: 111.89 [Подробней >>] |
St Статус: Доверительный Общий рейтинг: 116.22 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 1713. Доброе время суток. Спасибо за ответ на вопрос №1707. Эта утилитка (Debploit)меня заинтересовала. Бу... (ответов: 1)
Вопрос № 1714. Приветствую Вас Ув.Экспкрты! Вопрос про SI... Есть проверка наличия файла... ф-цией ....... DWOR... (ответов: 2)
Вопрос № 1715. Наверное, я тут всех заманал, но создание этой проги уже стало для меня делом принципа (как, впрочем... (ответов: 4)
Вопрос № 1716. Хай! Кто нибудь слышал о вирусах коцающих железо? Я вот где то читал, что теоритически возможно, но ... (ответов: 4)
Вопрос № 1717. Привет всем! Вопрос: часто в рассылке возникают "косые взгляды" в сторону книги Юрова и во... (ответов: 5)
Вопрос № 1718. Здравствуйте, 1. Помогите, пожалуйста, выяснить как драйвер русского языка для dos rk.com определяет... (ответов: 4)
Вопрос № 1719. Приветствую всех экспертов! Моя задача в следующем: написать программу выводящую на экран список фай... (ответов: 2)
Вопрос № 1720. Хай! Помнится задавал вопрос насчет записи в Flash Bios, ответил только один человек :( Что это, нез... (ответов: 2)
Вопрос № 1721. Здравствуйте уважаемые эксперты.Подскажите пожалуйста как корректно в резидентной программе писать в... (ответов: 2)
Вопросов: 9, ответов: 26
Вопрос № 1713 |
Доброе время суток.
Спасибо за ответ на вопрос №1707. Эта утилитка (Debploit)меня заинтересовала. Буду очень рад, если она появится у меня.
Вопрос отправлен: 05.11.2002, 14:23
Отправитель: Сергей
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Сергей!
Ты знаешь, я тоже не против тебе ее выслать, но только если ты УКАЖЕШЬ свой адрес!
Ответ отправлен: 06.11.2002, 13:45
Отправитель: Bob Johnson
Вопрос № 1714 |
Приветствую Вас Ув.Экспкрты!
Вопрос про SI...
Есть проверка наличия файла... ф-цией .......
DWORD GetFileSize(
HANDLE hFile, // handle of file to get size of
LPDWORD lpFileSizeHigh // address of high-order word for file size
);
В SI это выглядит примерно так...
push ebx
push [ebp+04]
call ..... [!GetFileSize]
...........
Имеем хендл....
Вопрос:Как по хендлу файла можно узнать имя файла?
Заранее благодарен.
[ p A c U ]
Вопрос отправлен: 05.11.2002, 15:26
Отправитель: p A c U
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Доброе время суток, p A c U!
Попробуй ADDR [хэндл]
ну как как... можно поставить бряк на OpenFile, или воспользоваться утилитой FileMon еще
Ответ отправлен: 05.11.2002, 16:35
Отправитель: Broken Sword
Отвечает masquer
Здравствуйте, p A c U!
Используй такую бряку, после срабатывания в окне данных - имя файла
bpx CreateFile d esp->4
Ответ отправлен: 05.11.2002, 17:51
Отправитель: masquer
Вопрос № 1715 |
Наверное, я тут всех заманал, но создание этой проги уже стало для меня делом принципа (как, впрочем и изучения Асма). Дело в том, что результат сложения двух чисел, вводимых с клавиатуры, не хочет выводиться по-человечески (в виде десятичного числа). Исходник:
masm
CSEG segment
assume cs:CSEG, ds:CSEG, es:CSEG, ss:CSEG
org 100h
Begin:
mov ah,1h
int 21h ; жду циферьку
push ax ; толкаю, пока целенькая
mov ah,9h
add ax,'00'
int 21h ; вывожу
mov ah,1h
int 21h ; жду
push ax ;толкаю
mov ah,9h
add ax,'00'
int 21h ; вывожу
pop bx ;беру для сложения
pop ax ;беру
add bx,ax ; складываю. По-моему, результат будет в bx
mov al,bh ; Здесь для меня кроется загадка:
mov ah,9h ;вывожу сначала правую часть...
add ax,'00' ;
int 21h ;
mov al,bl ; ...потом левую. Может надо не так и не то?
mov ah,9h
add ax,'00'
int 21h
int 20h
CSEG ends
end Begin
Кстати, если ее запустить в TD, то она создаст какую-то папку, которую не удалить WinMe. Только Нортон
Вопрос отправлен: 05.11.2002, 15:34
Отправитель: Faraon
[Следующий вопрос >>] [Список вопросов]
Отвечает Beeblebrox
Доброе время суток, Faraon!
Везде add al,'0', а не add ax,'00'
Ответ отправлен: 05.11.2002, 16:04
Отправитель: Beeblebrox
Отвечает Maverick
Добрый день, Faraon!
Ну, опять наворотил.
Подправлю и вышлю на мыло.
А насчет десятичного, так у тебя и в шестнадцатиричном то не выводится :)
Ответ отправлен: 05.11.2002, 17:32
Отправитель: Maverick
Отвечает LIFO
Добрый день, Faraon!
Вот рабочий код, надеюсь поймешь.
Приложение:
Ответ отправлен: 07.11.2002, 10:30
Отправитель: LIFO
Отвечает Bob Johnson
Добрый день, Faraon!
Ну что тут можно сказать... Смотри ответ на свой же вопрос под номером 1684. Как же ты выводишь символ:
al = код символа
mov ah,9h
add ax,'00'
int 21h ; вывожу
вот у тебя ah = 9, al = код символа, после чего ты делаешь add ax, '00' - ну и что у тебя получится? В al то у тебя был КОД СИМВОЛА! А не цифра... А в ah был вообще номер функции (которая почему-то 9)... А получиться полная херня... ah = 57, какая это функция?
В общем - смотри рассылку, RTFM, RTFM, RTFM...
Ответ отправлен: 06.11.2002, 13:45
Отправитель: Bob Johnson
Вопрос № 1716 |
Хай!
Кто нибудь слышал о вирусах коцающих железо?
Я вот где то читал, что теоритически возможно, но практически никто не смог, хехе.
Мож у кого есть более свежая информация? Поделитесь.
Вопрос отправлен: 05.11.2002, 16:42
Отправитель: Maverick (Maverick@nightmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает baldr
Приветствую Вас, Maverick!
Так, опять этот вопрос... :-// Помнится, с полгода назад или больше в рассылке была дискуссия
на эту тему... Да и в форуме (http://www.rusfaq.ru/Forum.cgi) тоже, помнится, проскакивало...
Короче говоря, скажу только, что все тогда сошлись в одном - что таких вирусов нет...
Вирусы перешивающие flash-bios и форматирующие винчестер в расчет не берутся..
Ответ отправлен: 05.11.2002, 22:58
Отправитель: baldr
Отвечает Broken Sword
Доброе время суток, Maverick!
думаю, что таких вирусов нет и быть не может, потому что вот представь, что ты разработчик железа, над чем перво-наперво нужно работать? Нужно железку оттестировать, проверить, как она себя поведет в нестандарнтых ситуациях (читай - при попытке записи ЛЮБЫХ значений в ЛЮБЫЕ порты). Если ты оставишь дыры или коряво напишешь биосы - тогда это и будет уже встроенный "вирус", который в определенный момент даст о себе знать. На заре комп. железяк возможно и были подобные трещины в железках, в некоторых их создавали специально, чтобы посмотреть реакцию железки, а потом "забывали" убрать. Но на сегодняшний день - с помощью вируса можно не больше, чем с помощью обычных прог (тот же перепрошивальщик биоса).
p.s. единственное что - монитор и видеокарта в 99% случаях создаются разными производителями, но тесно взаимодействуют, именно по этой причине какой нить допотопный DTS может запросто сгореть, если на видяхе выдать частоту 120 Гц скажем, но, как видишь, вирусы здесь также не при чем - все это можно спалить просто кривыми руками.
Ответ отправлен: 05.11.2002, 18:32
Отправитель: Broken Sword
Отвечает ASMодей
Доброе время суток, Maverick!
Вряд ли это возможно. Максимум, что можно сделать - это
стереть Flash-BIOS. Правда где-то я читал, что монитор можно
попортить если неправильно программить видеоадаптер. И еще
где-то слышал, что на винте можно стереть служебную информацию
(какие-то системные дорожки) и с ним нельзя будет работать.
Но это только теория, а на практике вирусы кроме Flash-BIOS
ничего вроде не портят.
Ответ отправлен: 06.11.2002, 16:31
Отправитель: ASMодей
Отвечает Bob Johnson
Приветствую Вас, Maverick!
Это возможно. Первый пример - flash пзу на устройстве, которая программно перешивается. МОжно зашить в нее всякую чепуху и устройство перестанет работать.
Пример второй. Если зашить не всякую чепуху, а микропрограмму, которая, например, начинает выполнять недопустимые действия на оборудовании, можно привести и к его порче.
В реальности пока из таких - вирус win95cih - он прошивает flash bios на материнской плате и плата перестает грузиться. В некоторых случаях помогает только вытаскивание МС bios и перепрограммирование ее в программаторе.
Ответ отправлен: 06.11.2002, 13:45
Отправитель: Bob Johnson
Вопрос № 1717 |
Привет всем!
Вопрос: часто в рассылке возникают "косые взгляды" в сторону книги Юрова и восхваляется Зубков. Книгу Юрова я читал, по моему не так она плоха. Книгу Зубкова никогда не встречал в нашем городе. Можно немного об этом шедевре, например плюсы по сравнению с учебником Юрова, если конечно возможно сравнение.
Вопрос отправлен: 05.11.2002, 19:25
Отправитель: Алексей
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Доброе время суток, Алексей!
ну кроме багов из приложения, и того что треть книги стянуто с "Art of Assembly Language" в ней больше никаких недостатков не наблюдается
Ответ отправлен: 05.11.2002, 19:55
Отправитель: Broken Sword
Отвечает Топор
Здравствуйте, Алексей!
Вкратце: Юров - хороший методист, Зубков - хороший практик. Как следствие, у первого хорошее изложение материала, но до хрена ошибок в исходниках, а у второго наоборот.
Ответ отправлен: 08.11.2002, 12:00
Отправитель: Топор
Отвечает --- Нет данных ---
Здравствуйте, Алексей!
Я не читал обоих :) Но в сети больше положительных отзывов о Зубкове (и он ведь еще касается асма под UNIX). Видимо, Зубков получше будет.
P.S. Кто-то там обещал выложить Зубкова в электронном виде на netlib.wallst.ru ? Я уж заждался, тоже хочу познакомиться с этим произведением искусства, а платить за бумажную версию неохота :)
Ответ отправлен: 06.11.2002, 21:47
Отправитель: --- Нет данных ---
Отвечает masquer
Доброе время суток, Алексей!
По юрову я уже рассказывал, ладно расскажу еще, вопросы все равно повторяются с периодичностью в месяц :)
Я как-то начал выписывать баги и неточности в его книгах, потом просто бросил, там почти на каждой странице баг. Я сначала на сайте у издательства оставил отзыв о книге, автор со мной связался и сказал, типа "ну и где там ошибки", отправил ему на мыло половину, ответа нет.
Книга написана грубо и непонятно, новичку в ней сложно разобраться, а специалист просто посмеется. То же касается и практики, ну не умеет он ни писать код, ни алгоритм рассказать доступно.
Мое мнение - ОТСТОЙ, жалею о потраченных деньгах, была мысль пойти пиво попить, дык нет... :(
Ответ отправлен: 06.11.2002, 11:08
Отправитель: masquer
Отвечает Maverick
Приветствую Вас, Алексей!
Зубкова не читал, но слышал, что она написана более доступно, т.е. новичку с ней будет попроще.
А насчет косых взглядов, так это зря. Юров даже выпустил отдельную книгу "Практикум", она меня не раз выручала.
Там даются проги и алгоритмы, наиболее часто употребляющиеся.
Другое дело, что много багов, но на мой взгляд у Зубкова их не меньше.
Ответ отправлен: 06.11.2002, 04:38
Отправитель: Maverick
Вопрос № 1718 |
Здравствуйте,
1. Помогите, пожалуйста, выяснить как драйвер русского языка для dos rk.com определяет ниличие себя в памяти при повторном запуске. http://www.sssoft.ru/hal/13/RK.zip
2. Есть combobox в диалоге, пытаюсь получить номер выделенной строки SendMessage(h,CB_GETCURSEL,0,0) - все время возвращает 0. Строки в cb запихивал через CB_ADDSTRING.
Заранее спасибо.
Вопрос отправлен: 05.11.2002, 20:14
Отправитель: Евгений
[Следующий вопрос >>] [Список вопросов]
Отвечает baldr
Приветствую Вас, Евгений!
Знаем мы такой русификатор... Классная штука была в свое время... И мало памяти жрала и
правильно работала со шрифтами в BIOS, чем порой грешил keyrus покойного Димы Гуртяка (светлая ему память!)...
А как определять наличие себя в памяти? У-уу... Это много способов... Можно повеситься на
какое-либо прерывание, а потом при вызове определенной его функции выдать сигнатурку, можно
в памяти в некоторые ячейки что-нибудь уникальное записать... Способов на самом деле много...
Скорее всего, первое.
Ответ отправлен: 05.11.2002, 23:03
Отправитель: baldr
Отвечает Eugene
Доброе время суток, тёзка!
baldr в принципе всё и рассказал, но я хотел бы дополнить. В досе есть прерывание специально для этих целей - 2Fh. Надо повесить обработчик этого прерывания, а затем проверять по номеру функции, если совпадёт с указанной тобой, и вернёт то, что ты раньше засунул туда, то наиболее вероятно, что ты уже устанавливал прожку резидентом. Существует соглашение, согласно которому вызов прерывания 2Fh для проверки установки программы совершается при AH принадлежащему (C0h;FFh), а AL = 0. Например возьмём наше число DEh:
int2Fh proc
cmp ax, DE00h
je true
jmp old2Fh ;передаём дальше другим программам
int2Fh endp
true: ;наша прожка пытается установиться
mov al, FFh
mov dx, 0DA0h ;так для проверки
iret
при старте прожки тогда делаем так:
mov ax, DE00h
xor dx, dx
int 2fh
cmp dx, 0DA0h
jne check_empty
cmp ax, DEFFh
je installed
jmp exit
check_empty:
or ax, dx
cmp ax, DE00h
jne exit ;кем-то занято
install:
;здесь мы устанавливаем нашу прожку резидентом
jmp exit
installed: ;наша прожка инсталлирована можно выходить
;здесь мы сообщаем, что наше прожка уже инсталлирована
exit:
Ответ отправлен: 06.11.2002, 09:28
Отправитель: Eugene
Отвечает Maverick
Здравствуйте, Евгений!
1. А тебе конкретно на этом примере?
Если нужно просто понять, как это можно сделать, то в рассылке Калашникова есть глава, посвященная этому, почитай.
Ответ отправлен: 06.11.2002, 04:38
Отправитель: Maverick
Отвечает Bob Johnson
Доброе время суток, Евгений!
Конкретно про этот драйвер ничего не скажу, но могу рассказать как это сделать вообще - можно просто проверять вектор какого-либо прерывания, которое перехватывает твоя программа при повторном запуске на наличие в его обработчике опр. последовательности байтов. Недостаток - если после твоей это прерывание перехвачено еще раз другой программой, ты будешь думать, что твоя не загружена.
Вариант 2. Вызывать какую-либо функцию, какого-либо прерывания, обработчик которого в твоей программе вернет определенное значение, а другими программами не используется.
2. Может h не правильный? Вообще в диалоге есть функция SendDlgItemMessage. Больше ничего сказать нельзя - нужет кусок кода.
Ответ отправлен: 06.11.2002, 13:45
Отправитель: Bob Johnson
Вопрос № 1719 |
Приветствую всех экспертов!
Моя задача в следующем: написать программу выводящую на экран список файлов из корневого каталога. При нажатии клавиши S программа сортирует этот список по алфавиту. Собственно, программа уже готова(см. приложение). Но список сортируется почему-то неправильно (я использую сортировку методом пузырька). Помогите, пожалуйста найти мои ошибки.
И еще почему на некоторые строки тасм выдает сообщение "argument need type override"?
Приложение:
Вопрос отправлен: 06.11.2002, 03:44
Отправитель: Lapot
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, Lapot!
argument need type override - обычно пишется когда вы записываете в память число, напрмер mov [si],5 - тк тасм может присвоит значение 5 либо байту, либо слову (в 32-битных прогах еще и двойному слову), так что если на какой нибудь строке программы выводится такое предупреждение то там обязательно надо указывать является ли это byte ptr или word ptr - соответственно байт и слово. Когда вы записываете также в память регистр этого делать не нужно тк размер числа в памяти берется равным размеру регистра: AL - байт, CX - слово.
Возможно здесь и кроется проблема с вашей программой.
St
Ответ отправлен: 06.11.2002, 15:02
Отправитель: St
Отвечает Maverick
Добрый день, Lapot!
"И еще почему на некоторые строки тасм выдает сообщение "argument need type override"?"
Поставь в этих строках byte ptr, и он заткнется ;)
Ответ отправлен: 06.11.2002, 04:25
Отправитель: Maverick
Вопрос № 1720 |
Хай!
Помнится задавал вопрос насчет записи в Flash Bios, ответил только один человек :(
Что это, незнание или какой то принцип?
Если кто может помочь в этом вопросе, то объясните плиз, а то не могу найти стоящей инфы.
Изучение wincih не пойдет, сложновато для меня пока.
Буду премного благодарен, т.к. от этого зависит много судеб :)))
p.s. Интересно, "охотники за хулиганами" читают эту рассылку?
Вопрос отправлен: 06.11.2002, 04:48
Отправитель: Maverick (Maverick@nightmail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает baldr
Доброе время суток, Maverick!
Лучше бы ты повторил вопрос, а то я не уверен, что все его помнят!
Короче, в AMI Flash BIOS можно писать функцией 0E0h прерывания 16h. Про остальные не знаю.
Про эту функцию я вычитал в книге И.А.Гульев. Создаем вирус и антивирус.
В сети эта книга гуляет свободно - как целиком, так и по частям, есть и бумажная...
WinCIH IMHO для изучения не особо сложен, но и для практики по перезаписи Flash не думаю,
что подойдет, потому как для того, чтоб запортить BIOS много функций и не надо.
Советую тебе поискать у знакомых компы с драйверами к материнкам, и посмотреть там проги
для перешивки биосов. Дизассемблировав их, сравнив - получишь искомое. А кто сказал, что все будет
легко??
Ну да, много судеб зависит... :-) Может, и моя, когда я по дури скачаю какую-нибудь прогу с
твоим свеженаписанным вирусом по моей подсказке...
А кого ты имел в виду в P.S. ?
Ответ отправлен: 06.11.2002, 23:40
Отправитель: baldr
Отвечает St
Привет, Maverick!
Я никогда не думал об этом - так что незнание - запись в биос можно применять не только для вирусов - так что это не принцип.
St
Ответ отправлен: 06.11.2002, 15:11
Отправитель: St
Вопрос № 1721 |
Здравствуйте уважаемые эксперты.Подскажите пожалуйста как
корректно в резидентной программе писать в файл под DOS.Хочу написать клавиатурный шпион.Он прерывания перехватывает,получает клавиши (проверял) ,а как только в файл пытается писать возникает ошибка.Я проверяю на флаг занятости Дос и флаг критической ошибки (с помощью функции 34h int 21h.И проверяю занятость Bios (стоит счётчик (перехватил int 13h) если 0 то пишу).Создаю файл в до исталляции в память потом я его закраваю .А в самом резиденте Открываю один раз до конца работы.Пытаюсь писать
из int 28h и при получении символа из int 09h.Но это не работает объясните может?
Приложение:
Вопрос отправлен: 06.11.2002, 08:33
Отправитель: dima
[Следующий вопрос >>] [Список вопросов]
Отвечает LIFO
Добрый день, dima!
В приложении - работающий код по открытию файла для твоей проги.
Вообще, кто тебя учил после создания файла его закрывать.
Приложение:
Ответ отправлен: 07.11.2002, 10:30
Отправитель: LIFO
Отвечает Bob Johnson
Здравствуйте, dima!
Проблема записи файла из клавиатурного прерывания в том, что оно может прийти во время вызова функции 21h. Для этого был создан флаг indos. Этот флаг недокументирован, поэтому, в принципе, вполне может не работать...
Точно работает (это я делал) - вешать запись в файл на прерывание int 28h - это прерывание вызывает сам ДОС, когда ему "нечего делать". Недостаток - если запускается программа, то она, естественно, не вызывает это прерывание и запись на диск не происходит вообще. Можно применить "извращенный" метод - в обработчике 9 прерывания смотреть адрес возврата в стеке, и если он больше определенного значения, но меньше другого - записывать на диск (т.к. эта область памяти не принадлежит ДОС, и, следовательно ДОС не может в ней находиться).
Ответ отправлен: 09.11.2002, 17:03
Отправитель: Bob Johnson
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (36) C / C++ (25) Perl (6) Delphi (14) Pascal (19) Basic / VBA (8) Java / JavaScript (10) PHP (7) MySQL / MSSQL (8) |
Пользователю Windows 95/98/Me (27) Windows NT/2000/XP (17) "Железо" (26) Поиск информации (10) |
Администратору Windows NT/2000/XP (10) Linux / Unix (14) |
Юристу Гражданское право (9) Семейное право (6) Трудовое право (5) КоАП (5) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||