Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


Информационный Канал Subscribe.Ru

RusFAQ.ru: программирование на языке Assembler

Выпуск № 557
от 04.06.2003, 07:50

Администратор:
Имя: Калашников О.А.
URL: Информационный ресурс
ICQ: 68951340
Россия, Москва
О рассылке:
Задано вопросов: 3359
Отправлено ответов: 9873
Активность: 293.9 %
[Задать вопрос >>][Регистрация эксперта >>]
[Поиск в базе][Обсудить на форуме]


 Список экспертов, ответы которых опубликованы в данном выпуске

Ramzes
Статус: Профессиональный
Общий рейтинг: 126.36
URL: Microsoft homepage
[Подробней >>]
Дмитрий
Статус: Опытный
Общий рейтинг: 151.31
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 131.27
Телефон: (8442) 750522
[Подробней >>]
 
[MozgC]
Статус: Профессиональный
Общий рейтинг: 171.29
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.3
URL: Программирование
[Подробней >>]
Hayk
Статус: Доверительный
Общий рейтинг: 111.21
[Подробней >>]
 
vitya
Статус: Профессиональный
Общий рейтинг: 108.12
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 138.42
[Подробней >>]
Portnov
Статус: Профессиональный
Общий рейтинг: 110.69
URL: Мой сайтик...
[Подробней >>]
 
Broken Sword
Статус: Профессиональный
Общий рейтинг: 122.5
URL: моя рассылка по Protected Mode
[Подробней >>]
ASMодей
Статус: Профессиональный
Общий рейтинг: 114.56
[Подробней >>]


 Краткий перечень вопросов

Вопрос № 3304. Добрый день эксперты! Почему комне прекратила приходить рассылка? Зараннее благодарю.... (ответов: 5)
Вопрос № 3305. Привет, ЭКСПЕРТЫ! akul, в выпуске 510, Вы писали ,что можете залить на мыло Win2k SDK? Я бы с радост... (ответов: 1)
Вопрос № 3306. Привет, эксперты! Объясните, плиз, как можно практически использовать IPC$"" в Windows NT/... (ответов: 1)
Вопрос № 3307. Добрый день, Bob Johnson! >>изначально-то вопрос был про WH_KEYBOARD... Прости за настойчивость но ... (ответов: 1)
Вопрос № 3308. Добрый день ув.Эксперты... Спасибо за ответы на вопрос № 3300 Возможно ли запретить загрузку более о... (ответов: 6)
Вопрос № 3309. Добрый день ! Как под Win98 забирать значения сопротивлений резисторов, составляющих джойстик (в у.е... (ответов: 1)
Вопрос № 3310. Здравствуйте, уважаемые эксперты. Помогите, пожалуйста! Программа должна обрабатывать прерывания от ... (ответов: 1)
Вопрос № 3311. Здравствуйте! Не подскажете как мне можно перевести таблицы из Wordа в таблицы Excelевского формата?... (ответов: 3)
Вопрос № 3312. Привет Всем экспертам, кто хоть немного разбирается в реверсинге и исследовании програм. Я новичок в... (ответов: 4)
Вопрос № 3313. Здравствуйте, уважаемые эксперты. Вопрос вот в чём ! 1.Нужен ли в защищённом режиме ТSS?Можно ли бе... (ответов: 4)

Вопросов: 10, ответов: 27


 Вопрос № 3304

Добрый день эксперты!
Почему комне прекратила приходить рассылка?
Зараннее благодарю.



Вопрос отправлен: 30.05.2003, 08:49
Отправитель: yuran (yuran@male.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Приветствую Вас, yuran!
Наверное ты от нее отписался (случайно)

Ответ отправлен: 30.05.2003, 13:43
Отправитель: Ramzes


Отвечает Дмитрий

Приветствую Вас, yuran!
Сходи на subscribe.ru, проверь состояние своих подписок. Может ошибка какая приключилась. Кстати! Это чего: @male.ru? Может причина в твоей почтовой службе?

Ответ отправлен: 30.05.2003, 10:26
Отправитель: Дмитрий


Отвечает Lynx

Приветствую Вас, yuran!
Если она всем приходит, а тебе нет, значит у тебя что то не так. Зайди на RusFaq.ru и подпишись заново.


Ответ отправлен: 30.05.2003, 15:05
Отправитель: Lynx


Отвечает [MozgC]

Ну подпишись заново =)

Ответ отправлен: 30.05.2003, 14:46
Отправитель: [MozgC]


Отвечает Bob Johnson

Добрый день, yuran!
Ну это тебе надо на subscribe.ru обратиться, потому что рассылка идет оттуда. Найди свой пароль на рассылку и посмотри статистику - может быть у тебя ящик был переполнен, и поэтому она перестала приходить.

* EMan1.1: --==** Eternal power **==--


Ответ отправлен: 30.05.2003, 18:33
Отправитель: Bob Johnson


 Вопрос № 3305

Привет, ЭКСПЕРТЫ!
akul, в выпуске 510, Вы писали ,что можете залить на мыло Win2k SDK?
Я бы с радостью принял, т.к. скачать с инета нет возможности, а почта халявная. Рад буду поделиться своми утилями, доками или еще чем-нибудь.Жду ответа!



Вопрос отправлен: 30.05.2003, 11:33
Отправитель: TT (KunaevNA@PosolskyDom.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Ramzes

Добрый день, TT!
КАЙФ !!!!
У тебя что, размер ящика 700 MB ?

Ответ отправлен: 30.05.2003, 13:42
Отправитель: Ramzes


 Вопрос № 3306

Привет, эксперты!
Объясните, плиз, как можно практически использовать IPC$"" в Windows NT/XP. Заранее благодарен, Дмитрий.



Вопрос отправлен: 30.05.2003, 13:24
Отправитель: Дмитрий (demetrius2003@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Hayk

Приветствую Вас, Дмитрий!
Est' kucha sposobov reaizacii IPC. Naprimer ispol'zovat' RPC ili DCOM. Novaya texnologiya .Net remoting. Ty doljen podrobno izuchit' zadachu i vybrat' optimal'nuyu texnologiyu. Mojet legche vsego ispol'zovat' file mappings. Tut glavnopye ya dumayu opredelit' IPC u tebya vnutri odnoy sistemy ili rabotayet cherez network. Tut uj File Mappings ne pomogut ... tak chto vsyo zavisit ot reshayemoy problemy ....

Ответ отправлен: 30.05.2003, 14:00
Отправитель: Hayk


 Вопрос № 3307

Добрый день, Bob Johnson!
>>изначально-то вопрос был про WH_KEYBOARD...
Прости за настойчивость но текст вопроса изначально был такой:
У меня программа на Delphi, но требуется "низкоуровневая помощь".
В-общем, эта программа должна выводить значения нажатых клавиш, но она выводит нажатую клавишу, только если активна форма этой программы. Мне нужно, чтобы она показывала клавиши, нажатые в других приложениях (key logger). Если форма неактивна, то выдаётся только звуковой сигнал (beep), а значения WPARAM и LPARAM остаются неизменны.
Форма Form1 состоит из трёх TLabel(label1,label2,label3) и одного таймера(Timer1).
ВОПРОС: Как сделать, чтобы она регистрировала клавиши, нажатые в других приложениях?
Использование ловушки типа WH_KEYBOARD не является единственно правильным решением.
Вот я и предложил использовать тип ловушки WH_JOURNALRECORD вместо WH_KEYBOARD.
Тем более, что в данной ситуации, оно еще и проще в реализации.
С уважением, Евгений.



Вопрос отправлен: 30.05.2003, 15:29
Отправитель: Evgen

[Следующий вопрос >>] [Список вопросов]

Отвечает Bob Johnson

Доброе время суток, Evgen!
Что проще, согласен. Но ты как-то не очень настойчиво обратил внимание на то, что ты используешь WH_JOURNALRECORD вместо WH_KEYBOARD и не очень подробно описал ее преимущества, а я больше подумал об общей проблеме, которая возникает при установке хуков из DLL, т.к. сам с этим заморачивался.
А когда у меня была такая же задача, я использовал WH_KEYBOARD_LL (тоже вызывается из контекста потока, его установившего), потому как моя программа должна была работать только под НТ.

* EMan1.1: --==** Eternal power **==--


Ответ отправлен: 30.05.2003, 21:25
Отправитель: Bob Johnson


 Вопрос № 3308

Добрый день ув.Эксперты...
Спасибо за ответы на вопрос № 3300
Возможно ли запретить загрузку
более одной копии приложения...
pAcU




Вопрос отправлен: 30.05.2003, 19:00
Отправитель: pAcU (pacu@mail.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Доброе время суток, pAcU!
например при создании программы создаешь именованый мьютекс (CreateMutex), если же он уже создан, то просто выходишь из программы. При завершении программы (единственного экземпляра), надо не забыть этот мьютекс удалить.

Ответ отправлен: 31.05.2003, 12:53
Отправитель: vitya


Отвечает masquer

Доброе время суток, pAcU!
Кончно, возможно. Методов - море. Мутексами, поиском окна, etc.

Ответ отправлен: 30.05.2003, 19:14
Отправитель: masquer


Отвечает [MozgC]

можно при запуске приложения записывать какойнить параметр по определенному адресу в памяти, и при запуске еще одной копии программы, она будет проверять выставлен ли этот параметр и если да, то
mov ah, 4c00
int 21

Ответ отправлен: 30.05.2003, 19:56
Отправитель: [MozgC]


Отвечает Bob Johnson

Здравствуйте, pAcU!
Только самому - т.е. когда твое приложение запускается, оно, например, ищет окно своего класса (FindWindow), и если находит, то не запускается. Можно сделать с созданием именованного мутекса (CreateMutex), при этом в случае запуска первый раз функция вернет хэндл мутекса, а GetLastError - 0, во второй (и т.д.) раз - GetLastError вернет ERROR_ALREADY_EXISTS.
Еще, конечно, можно анализировать список работающих процессов на наличие твоих, но это уже слишком...

* EMan1.1: --==** Eternal power **==--


Ответ отправлен: 30.05.2003, 23:14
Отправитель: Bob Johnson


Отвечает Ramzes

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

Ответ отправлен: 31.05.2003, 13:07
Отправитель: Ramzes


Отвечает Portnov

Приветствую Вас, pAcU!
Можно... Напр., через семафоры (мутексы)...
If (!(h=CreateMutex(0,TRUE,"myMutex")))
{
//выдаем сообщение об ошибке и вываливаемся
}
//работаем как положено
//...
//перед нормальным выходом удаляем мутекс:
CloseHandle(h);
Если у нас не получается создать мутекс, значит, уже есть мутекс с этим именем, а значит, одна копия уже запущена...
С уважением, Portnov.

Ответ отправлен: 01.06.2003, 17:02
Отправитель: Portnov


 Вопрос № 3309

Добрый день !
Как под Win98 забирать значения сопротивлений резисторов, составляющих джойстик (в у.е.)?
Под ДОС это делается с помощью 15h-го прерывания. Покопавшись в списках Ральфа Брауна, я наткнулся на описание порта джойстика 201h.
Так вот: принимаю байт из этого порта. Статус кнопок получаю нормально (4 верхних бита al в инвертированном виде), а вот 4 нижних бита всегда на нуле. Что делать ?(цепляю резистор на 30Ком на контакты 1 и 3 Game-порта).
Кстати, под дос считывается всё нормально.
Процедуру писал в Delphi. На форме есть таймер(timer1 вызывается 100 раз в сек.) и окно для ввода(edit1). Сама процедура в приложении.
Заранее благодарю за ответ
Тигран
P.S. никто не знает, где купить Арвид-1020 ?


Приложение:


Вопрос отправлен: 30.05.2003, 19:47
Отправитель: Tigran Kalaidjian (kalaidjian@pochtamt.ru)

[Следующий вопрос >>] [Список вопросов]

Отвечает Дмитрий

Здравствуйте, Tigran Kalaidjian!
Сразу хочу сказать, что с джойстиками и их программированием я не сталкивался. Но я занимаюсь обработкой звука. Так вот, есть такое понятие - вращающиеся MIDI-контроллеры. Используются они совместно с софт-синтезаторами (в основном) для управления параметрами последних в реальном режиме времени (pitch/phase shift, AM/FM и т. д.). Практически все программы позволяют взамен дорогостоящих контроллеров использовать джойстики для тех-же целей. Ось X - один параметр, ось Y - другой. Все это дело проходит скорее всего через DirectX. А дрова на Gameport идут вместе с звуковой картой (в DirectX - msjstick.drv). Не уверен, но думаю, что для Delphi есть компонент, в котором присутствуют функции работы с Gameport. Попытаюсь разузнать у знакомых и если чего найду, скину на мыло.

Ответ отправлен: 02.06.2003, 07:37
Отправитель: Дмитрий


 Вопрос № 3310

Здравствуйте, уважаемые эксперты. Помогите, пожалуйста! Программа должна обрабатывать прерывания от двух кнопок подключенных к последовательному порту.



Вопрос отправлен: 30.05.2003, 21:08
Отправитель: Mark

[Следующий вопрос >>] [Список вопросов]

Отвечает Дмитрий

Доброе время суток, Mark!
На мой взгляд эта задачка должна решаться проще. Зачем сразу прерывания? И зачем последовательный порт? Ты представляешь, какую работу тебе придется проделать, чтобы заставить последовательный порт ПРИНЯТЬ от этих двух кнопок данные? Придется конструировать нечто. Это нечто должно будет кодировать нажатия кнопок в байт и пересылать этот байт через последовательный порт в комп. Проще будет использовать параллельный порт (если это возможно по условию задачи). Там все намного проще. Сигналы Data совместно с Gnd используй для своих кнопок. В проге просто проверяй в принятом байте нужные тебе битики. И скорее всего придется поморщиться с Busy и Strob. Busy говорит компу, что ты ничего отправить пока не можешь. А по поступлению Strob проге можно читать состояние твоих кнопок. Не знаю как современное железо, но когда-то на Spectrum этого хватало, чтоб запустить принтер ;) Удачи!

Ответ отправлен: 02.06.2003, 08:03
Отправитель: Дмитрий


 Вопрос № 3311

Здравствуйте! Не подскажете как мне можно перевести таблицы из Wordа в таблицы Excelевского формата?
(не обязателшьно программно, просто мож есть проги готовые уже).
ps: извините что сюда пишу - просто сдесь самые умные все.



Вопрос отправлен: 31.05.2003, 00:19
Отправитель: Эдвард Самохвалов (edsam@spidernet.com.cy)

[Следующий вопрос >>] [Список вопросов]

Отвечает [MozgC]

"ps: извините что сюда пишу - просто сдесь самые умные все."
Хорошо сказал =)

Ответ отправлен: 31.05.2003, 00:45
Отправитель: [MozgC]


Отвечает Bob Johnson

Здравствуйте, Эдвард Самохвалов!
Программно будет лучше. На VBA, естественно. Значит так - в ворде пишешь процедуру, которая анализирует все таблицы документа - Document('name').Tables, кажется. Она же, соответственно, создает новый файл Excel (или добавляет в старый) (на VB это достаточно просто) и заполняет его данными из таблиц ворда. При этом процедуру можно встроить в документ, а можно в шаблон normal.dot - тогда будет работать с любым документом (только выбор придется сделать).

* EMan1.1: --==** Eternal power **==--


Ответ отправлен: 31.05.2003, 16:37
Отправитель: Bob Johnson


Отвечает Дмитрий

Здравствуй еще раз, Эдвард Самохвалов!
Программно вряд ли получится сделать все качественно. Мой совет: делай все только через Clipboard руками! При этом ты будешь контролировать все данные и их перемещения. Можно в принципе и на VBA. Но времени уйдет в 20 раз больше, чем на ручное редактирование. Плюс ко всему придется практически заново форматировать эти таблицы (это кстати в любом случае).

Ответ отправлен: 02.06.2003, 08:37
Отправитель: Дмитрий


 Вопрос № 3312

Привет Всем экспертам, кто хоть немного разбирается в реверсинге и исследовании програм. Я новичок в этом деле и хотел бы спросить кое-что. У одной программы, при запуске постоянно вызывается окно, с сообщением что она не зарегистрирована, и потом ниче не происходит и все ок вообщем-то но окно надоедает. Как можно от него избавиться ?



Вопрос отправлен: 31.05.2003, 01:31
Отправитель: Athlon

[Следующий вопрос >>] [Список вопросов]

Отвечает Lynx

Доброе время суток, Athlon!
Лично я свой WinRAR от NagScreen'a лечил редактором ресурсов. Просто удаляешь из ресурсов эту форму и всё. Но работает примерно в 50 процентах случаев. Другой вариант поискать в коде программы участок где создаётся это диалоговое окно и выявить, в каких случаях на него передаётся управление и удалить этот вызов или прыжок на него.


Ответ отправлен: 31.05.2003, 12:02
Отправитель: Lynx


Отвечает [MozgC]

Если это окно - MessageBox, то дизасемблируй прогу, найди этот MessageBox и исправь перед вызовом ф-ии push 0, на push 1 (или в файле 64 00 на 64 01)

Ответ отправлен: 31.05.2003, 01:42
Отправитель: [MozgC]


Отвечает Bob Johnson

Приветствую Вас, Athlon!
Если у тебя нет Soft Ice, то можно сделать так:
1. Смотришь на текст, который появляется в этом окне.
2. Дизассемблируешь программу в W32DAsm.
3. Ишешь в исходном коде ссылки на этот текст (т.е. просто делаешь поиск этого текста).
4. В большинстве случаев ты его находишь. Если нет, то смотри по ресурсам диалогов и т.д.
5. Анализируешь код, который работает с текстом и убираешь процедуру его вывода (окна, MessageBox и т.д.)

* EMan1.1: --==** Eternal power **==--


Ответ отправлен: 31.05.2003, 16:37
Отправитель: Bob Johnson


Отвечает Дмитрий

Доброе время суток, Athlon!
Универсальных рецептов нет, но иногда помогает использование редактора ресурсов.

Ответ отправлен: 03.06.2003, 09:50
Отправитель: Дмитрий


 Вопрос № 3313

Здравствуйте, уважаемые эксперты.
Вопрос вот в чём !
1.Нужен ли в защищённом режиме ТSS?Можно ли без него?
Отключить страничную адресацию можно , а TSS ?
2.Как из текущего участка кода перейти к другому
по таблице GDT или LDT при этом запрашивая защищённость сегмента.Ведь обращаясь к селектору, должен быть ещё указан запрос (3? bita).Отдельной команды для этого нет.Опереционка
должна используя таблицы разрешить или запретить доступ к сегменту!...Не пойму ,Биты сегментных регистрах изменять что-ли .
Спасибо!



Вопрос отправлен: 31.05.2003, 07:46
Отправитель: Yuri

[Следующий вопрос >>] [Список вопросов]

Отвечает vitya

Здравствуйте, Yuri!

2. если твой код работает в ring0 то у тебя есть доступ к любому сегменту. И ты можешь загрузить в cs любой сегмент. Если же ты работаешь, например, в ring3 то тебе cs вообще загрузить не удастся. А разрешено или нет обращаться к сегменту определяет процессор, ОС только должна правильно формировать GDT и LDT таблицы.

Ответ отправлен: 31.05.2003, 12:44
Отправитель: vitya


Отвечает Broken Sword

Здравствуйте, Yuri!
1. Нет, TSS не НУЖЕН. Без него МОЖНО. TSS "отключить" МОЖНО.
2. Читай главу "Protection" в Intel Manual том 3, или в ближайшем выпуске моей рассылки по PM (адрес внизу)

Ответ отправлен: 31.05.2003, 10:29
Отправитель: Broken Sword


Отвечает ASMодей

Доброе время суток, Yuri!
1. Intel рекомендует при переключении в защищенный режим сразу
выполнять команду LTR, загружая в регистр TR сегмент TSS. Но
практика показала, что если не использовать многозадачность,
то работать с TSS не обязательно.
2. Именно биты сегментных регистров, точнее биты селектора. Дело
в том, что когда ты загружаешь селектор в сегментный регистр,
ты сразу задаешь ему смещение селектора в таблице (биты 15-3),
какую таблицу использовать (бит 2 = 0 - GDT, 1 - LDT) и уровень
привилегированности (биты 1-0). Так что отдельно ничего менять
не надо, задается все и сразу. А уже при обращении в этот сегмент
если прав доступа не будет хватать, возникнет исключение, которое
операционка и будет обрабатывать.


Ответ отправлен: 31.05.2003, 13:01
Отправитель: ASMодей


Отвечает Ramzes

Добрый день, Yuri!
1.В принципе TSS используется только многозадачными операционными системами, так что под ДОС он нак или иначе не используется.
А в многозадачной ОС ты врядли обойдешся без ТSS, т.к при переключении задач туда зписывается текущее состояние задачи.
2.При переходе от одного участка кода к другому ОС сама автоматически проверяет права досупа (2 бита уровня привилегий селектора с уровнем доступа дескриптора). А уровень привилегий селектора ОС устонавливает сама, ты не можешь его изменить.

Ответ отправлен: 31.05.2003, 13:03
Отправитель: Ramzes



Форма отправки вопроса

Внимание!
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

(C) 2002-2003 Команда RusFAQ.ru.

 Персональные данные

Ваше имя:

Ваш e-mail:

Опубликовать мой e-mail в рассылке


 Вопрос и дополнение

Ваш вопрос:


Приложение (если необходимо):


Получить ответов:


 Выбор рассылки

Программисту
Assembler (37)
C / C++ (30)
Perl (5)
Builder / Delphi (15)
Pascal (28)
Basic / VBA (11)
Java / JavaScript (11)
PHP (7)
MySQL / MSSQL (6)
Пользователю
Windows 95/98/Me (35)
Windows NT/2000/XP (30)
"Железо" (26)
Поиск информации (14)
Администратору
Windows NT/2000/XP (14)
Linux / Unix (8)
Юристу
Гражданское право (5)
Семейное право (2)
Трудовое право (3)
КоАП (3)

Отправить вопрос всем экспертам выбранной рассылки.




Задать вопрос | Регистрация эксперта | Поиск в базе | Чат | Форумы | Новости
Проект экспертов RusFAQ.ru | Фотоальбом | Virus.RusFAQ.ru | Администрирование


Яндекс цитирования
© 2001-2003 Россия, Москва. Авторское право: Калашников О.А.


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное