Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 565
от 12.06.2003, 11:10
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3442 Отправлено ответов: 10131 Активность: 294.3 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Hayk Статус: Доверительный Общий рейтинг: 112.5 [Подробней >>] |
Ramzes Статус: Профессиональный Общий рейтинг: 127.03 URL: Microsoft homepage [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 122.28 URL: мой сайт [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 108.12 [Подробней >>] |
Pin Статус: Опытный Общий рейтинг: 118.47 URL: My HOMEPAGE [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 115.74 [Подробней >>] |
Bob Johnson Статус: Профессиональный Общий рейтинг: 151.63 URL: Программирование [Подробней >>] |
Дмитрий Статус: Опытный Общий рейтинг: 145.92 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 138.07 [Подробней >>] |
_vt Статус: Опытный Общий рейтинг: 120.93 [Подробней >>] |
Tigran K. Kalaidjian Статус: Опытный Общий рейтинг: 117.82 URL: Методы оптимизации работы ПК [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3394. Привет, Эксперты! Срочно требуется ваша помощь! Не могли бы объяснить как правильно пользоваться фун... (ответов: 5)
Вопрос № 3395. Привет еще раз! Извините за назойливость, но забыл спросить одну вещь. Это касается защищенного режи... (ответов: 6)
Вопрос № 3396. Здравие желаю, Эксперты! Есть вот такие программы, универсальные взломщики чисел для игр. С их помощ... (ответов: 5)
Вопрос № 3397. Привет всем еще раз. К вопросу №3395. Я может конечно ламак, но что это за "теневые реристры&qu... (ответов: 5)
Вопрос № 3398. Доброго время суток Помогите составить программу на TASM, которая запретит другой программе выполнят... (ответов: 5)
Вопрос № 3399. Здраствуйте МногоУважаемые Эксперты! Подскажите мне... Как найти начальный адрес запуска ,после вклю... (ответов: 1)
Вопрос № 3400. Всем привет! Продолжение моего вопроса под номером 3386(См. приложение). Я работаю на CNC (есть така... (ответов: 2)
Вопрос № 3402. Уважаемые эксперты подскажите где можно взять ПО для программировани на ассемблере. Большое спасибо!... (ответов: 4)
Вопросов: 8, ответов: 33
Вопрос № 3394 |
Привет, Эксперты!
Срочно требуется ваша помощь!
Не могли бы объяснить как правильно пользоваться функциями send и recv?
Допустим, я создал сокет TCP/IP, подключился к удаленному компу и теперь хочу получить от него данные - соответственно вызываю:
--
invoke recv, hSocket, ADDR buffer, 100, 0
И если сервер посылает мне строку размером меньше 100 символов все останавливается на этой команде! Так вот как определить,
что передача закончена, ведь знать заранее длину строки нельзя?
Спасибо.
Вопрос отправлен: 07.06.2003, 12:49
Отправитель: Zork
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Приветствую Вас, Zork!
Странно, поидее фугкция не должна виснуть, попробуй если это в твоем управлении, сделать, чтобы сперва посылалась длина команды.
Ответ отправлен: 07.06.2003, 16:50
Отправитель: --- Нет данных ---
Отвечает Hayk
Здравствуйте, Zork!
попробуй передать в последнем аргументе функций send; recv параметр MSG_PARTIAL. BTW функция recv возвращает кол-во полученных байтов.
Ответ отправлен: 09.06.2003, 13:22
Отправитель: Hayk
Отвечает Ramzes
Здравствуйте, Zork!
Функция возвращается и в том случае, если получено меньшее кол-во байти возвращает енто полученное кол-во. Если она виснет, значит от сервака ничего не приходит.
Ответ отправлен: 10.06.2003, 17:40
Отправитель: Ramzes
Отвечает Broken Sword
Приветствую Вас, Zork!
не переживай - достаточно получить хотя бы один байт. В противном случае (если от сервака нет вообще никакого ответа) твой процесс заблокируется до получения хотя бы одного байта. Количество реально полученных байт вернется в EAX (на интеловских процах). Гораздо большая проблема - что будет если сервак пришлет больше ста байт - на старых осях у тебя произойдет переполнение буфера (на этом основаны 99% DoS-атак).
Ответ отправлен: 07.06.2003, 19:40
Отправитель: Broken Sword
Отвечает vitya
Добрый день, Zork!
1. во первых можно. Если протокол реализуете вы сами, то например первое слово, может указывать на длинну данных.
2. recv возврщается, как только данных больше нет. То есть, как только она может вернуть хоть каки-ннибудь данные он их вернет. Возвращаемое значение же будет сколько на самом деле байтов было прочитанно.
3. если данных нет, то через некоторое время функция прервется и вернет код ошибки.
Ответ отправлен: 07.06.2003, 13:10
Отправитель: vitya
Вопрос № 3395 |
Привет еще раз!
Извините за назойливость, но забыл спросить одну вещь. Это касается защищенного режима.
Вот пример перехода в защищенный режим:
;---
mov eax, cr0
or eax, 1
mov cr0, eax
Насколько я понимаю сразу после последней инструкции процессор будет работать в защищенном режиме.
Мне непонятна одна вещь - ведь в защ. режиме нет сегментов и выражение cs:ip не имеет смысла, так где же будет управление после этого? Если исходить из эксперимента, то там, где надо, а как это объясняется это теоритически?
Вопрос отправлен: 07.06.2003, 13:09
Отправитель: Zork
[Следующий вопрос >>] [Список вопросов]
Отвечает vitya
Здравствуйте, Zork!
1. сегменты есть и еще как. Я бы даже сказал есть только сегменты, плюс может быть включена страничная организация памяти.
2. cs:ip скорее всего не имеет смысла, смысл имеет cs:eip :)
Ответ отправлен: 07.06.2003, 13:12
Отправитель: vitya
Отвечает Hayk
Доброе время суток, Zork!
Дело в том, что все сегментные регистры просцессора имеют скрытую для программиста часть в которой записывается:
в rm - псевдодескриптор, где base = cs * 0x10, limit = 64kb
в pm - соответствующий дескриптор из GDT или LDT
На теневом регистре процессор производит соответствующие изменения только если в сегментный регистр произведена запись. Так-как в твоём случае ничего такого не было, то на теневом регистре не будет изменений и соответственно процессор продолжит выполнение сразу следуещей команды. Хороший вопрос...а тебя не интересует примерно та же самая проблема при включении бита PG ?
Ответ отправлен: 09.06.2003, 14:19
Отправитель: Hayk
Отвечает Broken Sword
Добрый день, Zork!
теоретически это объясняется тем, что процессор в защ. режиме смотрит не на CS:EIP, а на ТЕНЕВАЯ_ЧАСТЬ_CS:EIP (а не кидается вычислить базу сегмента при выполнении иснтрукций). Как это ни странно, но теневая часть существует и в реальном режиме и содержит число SHL сегм.регистр, 4., а лимит равен 64Кб.
Хоть "выпаяй" все сегментные регистры - пока в него не будет загружен новый селектор процессор на их плевать хотел
Ответ отправлен: 07.06.2003, 14:10
Отправитель: Broken Sword
Отвечает Pin
Доброе время суток, Zork!
В этом то и дело. Сразу после переключения надо делать дальний jump.
Ответ отправлен: 07.06.2003, 23:56
Отправитель: Pin
Отвечает Hangatyr
Приветствую Вас, Zork!
1. Ты сам-то хоть понял что сморозил? Как так нет сегментов? Сегменты никуда не девались просто в сегментные регистры вместо сегментных адресов записываются селекторы и сегменты описываются соответствующими дескрипторами.
2. А объяснение тут простое - дело в том, что процессор имеет так называемые теневые регистры, в которых хранитятся дескрипторы сегментов. Когда процессор работает в реальном режиме он заполняет их сам, а в прот. моде они загружаются из GDT (LDT) при загрузке соответствующих селекторов. И на момент перехода там находится старый, но вполне корректный дескриптор. Затем обычно загружаются селекторы подготовленных дескрипторов. Потом, перед тем, как вернуться в реальный режим нужно будет установить корректные (для реального режима) границы сегментов.
Ответ отправлен: 07.06.2003, 13:37
Отправитель: Hangatyr
Отвечает Bob Johnson
Здравствуйте, Zork!
> так где же будет управление после этого?
Да, в pm нет таких сегментов и смещений, как в rm, но вспомни, что у процессора есть теневые регистры для каждого сегментного - он пользуется ими и в режиме rm, только загружает туда значение не из DT, а просто вычисляет исходя из номера сегмента. Поэтому сразу после перехода в pm процессор не изменит всех этих теневых значений и продолжит работу с того же места (сл. команды) в 16-ти разрядном режими. А вот для того, чтобы загрузить верные значения в теневые регистры, используется команда jmp far xx:xxxx, которая (т.к. дальний переход) перезагружает cs (а, следовательно, теневой регистр) и EIP. Обычно она идет сразу после mov cr0, eax.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 07.06.2003, 18:31
Отправитель: Bob Johnson
Вопрос № 3396 |
Здравие желаю, Эксперты!
Есть вот такие программы, универсальные взломщики чисел для игр.
С их помощью можно изменить в любой(почти) игре числа(жизнь, патроны и т.д.).
Я видел две такие программы: ArtMoney(www.artmoney.ru) и Cheat O'matic.
Сейчас такие взломщики стали очень распространены. Меня это волнует, т.к. я сам, как вы знаете, игры делаю.
Я знаю, что такие программы можно обмануть(шифровать значения, создавать дубликаты, при их смене менять ещё несколько массивов чисел, чтобы сбить кряк с толку), но делать это очень неудобно, приходится выполнять арифметические операции с числами исключительно через свои функции.
ВОПРОС №1: Есть ли в современных компиляторах возможность автоматически шифровать значения во время выполнения программы, заложенная производителем?
ВОПРОС №2: Есть ли специальные модули, подгружаемые вместе с игрой, для этих же целей(скрыть данные программы в оперативной памяти)?
Вопрос отправлен: 07.06.2003, 13:15
Отправитель: URiS (newff.narod.ru) (urisff@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Здравствуйте, URiS (newff.narod.ru)!
Я думаю, что просто надо держать числа в зашифрованном виде или например просто со сдвигом.
Ведь взломщики игр работают по принципу: поставил на паузу, сделал поиск нужного числа, снял с паузы, изменил число, поставил на паузу, сделал отбор левых чисел, нашел правильный адрес в памяти и сменил. Так вот просто если жизни, патроны и т.д. не держать прямо так как они на экран выводятся то ниче не найдется. Просто перед выводом на экран расшифровывать и выводить и все. Тогда максимум, что злоумышленники =) согут сделать это изменить значение на экране, но на самом деле от этого жизней не прибавиться =)
Ответ отправлен: 07.06.2003, 16:48
Отправитель: --- Нет данных ---
Отвечает Hayk
Добрый день, URiS (newff.narod.ru)!
Думаю если производители игр ( и не только ) накладут простейшую защиту адресного пространства процесса игры, то ничего изменять эти cracker-ы там не смогут.
Ответ отправлен: 09.06.2003, 14:27
Отправитель: Hayk
Отвечает Дмитрий
Приветствую Вас, URiS (newff.narod.ru)!
1)В современных компиляторах возможность автоматически шифровать значения во время выполнения программы, на сколько мне известно, отсутствует. Хотя во многих "старых" языках (Forth и т. д.) с данными в программе, а также с самой программой можно было делать что угодно, в том числе модифицировать структуру самого языка. Но на этих языках игры не пишутся (по крайней мере сейчас).
2)Насчет модулей ничего определенного сказать не могу. А вот для скрытия данных можно попытаться использовать какой-нибудь экзотический способ представления данных в памяти, например основанный на применении двоично-десятичных чисел (как простых, так и упакованных). Можно использовать простое шифрование (скажем шифр Вернама, битовые перестановки и т. д.), причем все вычисления проводить ТОЛЬКО при помощи регистров, а в память записывать уже зашифрованный результат. Хотя в этих случаях остается возможность замораживать значения. В любом случае, открывается обширное поле деятельности. Удачи!
Ответ отправлен: 10.06.2003, 05:57
Отправитель: Дмитрий
Отвечает masquer
Доброе время суток, URiS (newff.narod.ru)!
1. Навряд ли.
2. Ну, такой модуль и самому можно написать, и достаточно элементрано - бысто посчитать хеш важных данных, а при чтении/записи проверить посчитанный ранее хеш.
Ответ отправлен: 08.06.2003, 12:39
Отправитель: masquer
Отвечает Bob Johnson
Приветствую Вас, URiS (newff.narod.ru)!
> Меня это волнует, т.к. я сам, как вы знаете, игры делаю.
Любой серьезный производитель игр предусматривает в них cheat, т.к. если игра нормальная по сложности для игрока, то он пройдет ее без всего, а вот если будет трудно, а cheat нету, то он просто перестанет в нее играть. Возьми тот-же warcraft3 - коды к нему выложены на его же сайте! Чтобы ты не дай бог не бросил его, если станет трудно.
Кроме этого есть еще уровни сложности, чтобы игрок мог выбрать тот, который его больше всего устраивает. Причем заметь, во многих современных играх уровень сложности можно менять не один раз, а перед каждым следующим уровнем игры (warcraft3, nolf2 etc).
> ВОПРОС №1: Есть ли в современных компиляторах во...
не встречал.
В общем, забей на это. Если уж очень хочется, то напиши такой модуль сам, типа: GetValue (index) будет возвращать значение такой переменной, а SetValue (index) - устанавливать. При этом внутри этого get и set можно сделать все, что угодно.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 07.06.2003, 18:31
Отправитель: Bob Johnson
Вопрос № 3397 |
Привет всем еще раз.
К вопросу №3395.
Я может конечно ламак, но что это за "теневые реристры" и "ТЕНЕВАЯ_ЧАСТЬ_CS" о которых вы все толкуете?
Просто интересно - нигде не встречал больше...
Вопрос отправлен: 07.06.2003, 15:29
Отправитель: Zork
[Следующий вопрос >>] [Список вопросов]
Отвечает Hangatyr
Здравствуйте, Zork!
Теневой регистр ("shadow register" или еще его называют "descriptor cache") - это скрытая часть сегментного регистра. Она программно недоступна, с ней работает сам процессор. Когда ты загружаешь в сегментный регистр какой-либо селектор, процессор загружает дескриптор, соответствующий этому селектору в теневой регистр и далее работает уже с ним.
Ответ отправлен: 07.06.2003, 16:10
Отправитель: Hangatyr
Отвечает Ramzes
Доброе время суток, Zork!
Каждый сегментный регистр (ну и еще несколько других) имеют видимую часть, то биш куда гризится селектор, и скрытую, куда грузится весь дескриптор из GDT или LDT. Эта теневая часть не может быть никак прочитана, т.к. исполжзуется она только на аппаратном уровне
Ответ отправлен: 10.06.2003, 17:38
Отправитель: Ramzes
Отвечает Broken Sword
Доброе время суток, Zork!
хм... на самом деле ВСЕ сегментные регистры в IA-32 - 16-битные. До 286 процессор для формирования линейного адреса брал значение из сегментного регистра, сдвигал на 4 влево и прибавлял IP (защ. режима не было и в помине). Начиная с 286 процессор при формировании адреса вообще не заглядывал в сегм. регистр, а использовал его значение только единожды - в момент загрузки этого самого сегм. регистра (причем как в реальном так и защищенном режиме). Отличлся только алгоритм: в реальном значение сдвигалось на 4, в защ. - бралась база из дескриптора. На самом деле "теневая" часть физически даже никак не связана с сегм. регистром - это просто часть кэш-памяти (по-мойму)
Ответ отправлен: 07.06.2003, 19:40
Отправитель: Broken Sword
Отвечает vitya
Здравствуйте, Zork!
Для каждого сегментного регистра есть теневой 64 битный регистр (теневой так как ты его не видишь), в который загружается дескриптор сегмента, после его загрузки в сегментный регистр. Он играет роль кэша. Чтобы каждый раз тебе не приходилось обращаться сначала к GDTR/LDTR, значение просто берется из этого регистра.
Ответ отправлен: 08.06.2003, 12:06
Отправитель: vitya
Отвечает Bob Johnson
Доброе время суток, Zork!
Это регистры, в которые процессор загружает соответствующий элемент GDT или LDT при загрузке селектора в сегм. регистр. Они занимают по 8 байт (т.е. столько же, сколько и элемент дескр. таблицы). Необходимы для увеличения быстродействия - при обращении к памяти процессор не лезет каждый раз за этими таблицами, а читает базу, предел и права сегмента оттуда.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 07.06.2003, 18:31
Отправитель: Bob Johnson
Вопрос № 3398 |
Доброго время суток
Помогите составить программу на TASM, которая запретит другой программе выполнять определённую команду, например "ADD AX,10"
Вопрос отправлен: 07.06.2003, 20:48
Отправитель: Евгений
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Доброе время суток, Евгений!
Тут зависит от того, знаешь ли ты по какому адресу будет загружаться программа, и по какому адресу будет храниться команда, которую тебе надо запретить, и вообще знаешь ли ты конкретно команду которую надо обломать или это будет решаться во время выполнения программы...
Надо конкретнее вопрос ставить..
Ответ отправлен: 07.06.2003, 23:20
Отправитель: --- Нет данных ---
Отвечает masquer
Приветствую Вас, Евгений!
Если под виндами и известна та, другая программа, то запускаешь ее как отлаживаемый процесс, а дальше сканируешь опкоды, правда, при условии, что она не самомодифицируемая. А что значить - запретить - винт форматнуть, если встретилась?
Ответ отправлен: 08.06.2003, 12:42
Отправитель: masquer
Отвечает Дмитрий
Приветствую Вас, Евгений!
Такая программа возможна только для ДОС. И то, только теоретически! Прога эта должна быть сродни SoftICE, т. е. должна трассировать любой код (что уже абсурдно - как трассировать BIOS?) и проверять следующую инструкцию. Если это add ax,10 то команду надо игнорировать. Практическая неработоспособность этой программы (представь, сколько команд add содержит ДОС, без которой комп не больше, чем куча железа) ставит под сомнение разработку последней.
Ответ отправлен: 10.06.2003, 05:58
Отправитель: Дмитрий
Отвечает Hayk
Здравствуйте, Евгений!
В общем случае это невозможно
Ответ отправлен: 09.06.2003, 14:41
Отправитель: Hayk
Отвечает Bob Johnson
Доброе время суток, Евгений!
Этого сделать нельзя. Вообще.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 08.06.2003, 02:23
Отправитель: Bob Johnson
Вопрос № 3399 |
Здраствуйте МногоУважаемые Эксперты!
Подскажите мне...
Как найти начальный адрес запуска ,после включения компа,
и после перезагрузки (вроде бы холодный и горячий старт имеют разные адреса).Горячий старт определяет запущенная программа,холодный после после вкл или Reset.
Меня интересует код Bios .Пробовал прочитать прошивку которую мне выплюнула Award Flash Memory Writer -> Ida не полностью продебагил.Только хитрым винтом что то получилось ->используя Borland debuger ,загрузив в него dosовскую программу Restart.com,.. и то код скакал то в память то обратно в Bios.Надо это дело как то продизассемблировать,а то с Io.sys как-то не солидно:)
Спасибо!
Вопрос отправлен: 07.06.2003, 21:05
Отправитель: Yuri
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Добрый день, Yuri!
Непонятен вопрос, если интересует, то начальный адрес всегда 0FFFFh:0000h.
Для "горячей" перезагрузки сохраните по адресу 0040h:0072h число 1234h и прыгните на начальный адрес, в противном случае (если по заданному адресу другое число) выполняется обычная перезагрузка (То же что и Reset)
Ответ отправлен: 08.06.2003, 17:56
Отправитель: _vt
Вопрос № 3400 |
Всем привет!
Продолжение моего вопроса под номером 3386(См. приложение).
Я работаю на CNC (есть такая машинка). Работа заключается в том, что нужно положить заготовку (прямоугольную плату размером, например 1220x2440) на стол и разрезать (не только разрезать, еще дополнительно просверлить дырки и так далее, но это не актуально в данном случаи) на несколько прямоугольных кусков (например, 780x880, 350x880, 360x880, 460x880). Из этих четырех кусков собирается кровать. Конечно, понятно, что я должен разрезать так, что бы отходов было, как можно меньше и в тоже время это были бы полные сеты(Set) кроватей.
Пытался найти в Интернете программку, которая мне помогла бы разделить эффективно мои платы. Но, к сожалению, все, что я видел, меня мало устраивает.
Так как по воле случая я интересуюсь программированием, то решил написать такую программу сам (заодно и потренироваться в программирование).
От Вас Уважаемые Эксперты надеюсь получить алгоритм, ссылки или на худой случай готовую программу для решение моей проблемы. Алгоритмы и ссылки по этой теме предпочтительней.
Best regards
alexneta.
P.S. Еще раз сори за офтопик.
Приложение:
Вопрос отправлен: 07.06.2003, 21:59
Отправитель: alexneta (alexneta@bezeqint.net)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, alexneta!
Я ж тебе написал - ищи алгоритм Монте Карло...
Ответ отправлен: 08.06.2003, 12:43
Отправитель: masquer
Отвечает --- Нет данных ---
Здравствуйте, alexneta!
Пришли точные размеры плат и на какие части (тоже точные размеры) их надо разрезать, ченить придумаем
Ответ отправлен: 07.06.2003, 22:01
Отправитель: --- Нет данных ---
Вопрос № 3402 |
Уважаемые эксперты подскажите где можно взять ПО для программировани на ассемблере.
Большое спасибо!
Вопрос отправлен: 08.06.2003, 03:59
Отправитель: Сергей (progmans@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает _vt
Здравствуйте, Сергей!
www.wasm.ru
www.exetools.com
Ответ отправлен: 08.06.2003, 17:56
Отправитель: _vt
Отвечает Дмитрий
Доброе время суток, Сергей!
wasm.ru filesearch.ru
Ответ отправлен: 10.06.2003, 06:10
Отправитель: Дмитрий
Отвечает --- Нет данных ---
Приветствую Вас, Сергей!
А что конкретно надо ? Просто коспилятор ?Или еще примеры, отлыдчик и т.д., что ?
Ответ отправлен: 08.06.2003, 11:15
Отправитель: --- Нет данных ---
Отвечает Tigran K. Kalaidjian
Доброе время суток, Сергей!
1. В Интернете. Заходите на любой поисковик и ищете строку, типа "Скачать TASM"(или masm, nasm, fasm, vasm и пр., смотря что Вам нужно) или что-то подобное. Поверьте наслово - ссылками можно будет завалиться.
2. Станции ББС, если хочется бесплатного доступа. Практически на любой станции это всё есть. Из точно сейчас работающих московских станций, где это всё лежит, могу назвать Gouzlo BBS, TiCOiN BBS(это моя станция =), Green_Zmey BBS. В частности, чтобы попасть на первую или вторую - пишите мне на мыло.
Ответ отправлен: 08.06.2003, 13:03
Отправитель: Tigran K. Kalaidjian
Форма отправки вопроса |
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
(C) 2002-2003 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (34) C / C++ (29) Perl (7) Builder / Delphi (18) Pascal (29) Basic / VBA (12) Java / JavaScript (12) PHP (8) MySQL / MSSQL (7) |
Пользователю Windows 95/98/Me (36) Windows NT/2000/XP (31) "Железо" (25) Поиск информации (16) |
Администратору Windows NT/2000/XP (16) Linux / Unix (9) |
Юристу Гражданское право (6) Семейное право (2) Трудовое право (3) КоАП (3) |
Отправить вопрос всем экспертам выбранной рассылки.
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А. |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||