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

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


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

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

Выпуск № 551
от 28.05.2003, 00:00

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


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

masquer
Статус: Профессиональный
Общий рейтинг: 138.9
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 122.79
URL: моя рассылка по Protected Mode
[Подробней >>]
Lynx
Статус: Опытный
Общий рейтинг: 129.33
[Подробней >>]
 
Ramzes
Статус: Профессиональный
Общий рейтинг: 128.07
URL: Microsoft homepage
[Подробней >>]
St
Статус: Опытный
Общий рейтинг: 107.8
[Подробней >>]
Eugene
Статус: Профессиональный
Общий рейтинг: 108.3
URL: мощный файловый архив
[Подробней >>]
 
keleb-glin
Статус: Опытный
Общий рейтинг: 109.24
[Подробней >>]
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 150.26
URL: Программирование
[Подробней >>]
Pin
Статус: Опытный
Общий рейтинг: 121.03
URL: My HOMEPAGE
[Подробней >>]
 
ASMодей
Статус: Профессиональный
Общий рейтинг: 114.94
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 133.03
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Дмитрий
Статус: Начальный
Общий рейтинг: 126.41
[Подробней >>]
 
_vt
Статус: Доверительный
Общий рейтинг: 120.42
[Подробней >>]
Vdr
Статус: Доверительный
Общий рейтинг: 113.23
[Подробней >>]
Knignick
Статус: Опытный
Общий рейтинг: 113.33
URL: Мой каталог ссылок по программированию
[Подробней >>]


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

Вопрос № 3255. Уважаемые программисты, помогите остановить выполнение DLL. В нужном месте при помощи HEX-редактора ... (ответов: 3)
Вопрос № 3256. Здрасьте! У меня программа на Delphi, но требуется "низкоуровневая помощь". В-общем... (ответов: 7)
Вопрос № 3257. Здрасьте! К вопросу №3.256 Тема: Key Logger Язык: Object Pascal (Delphi) В приложении:... (ответов: 3)
Вопрос № 3258. По вопросу 3226 (доступ к 4 Гб памяти в реальном режиме): в свое время (еще когда у меня был 386 ком... (ответов: 2)
Вопрос № 3259. Здравствуйте Есть загрузочный диск. Я хочу записать свой, но чтоб грузился он также. Можно ли как ... (ответов: 2)
Вопрос № 3260. Здраствуйте эксперты! Вот такой вопрос! Маленько я кодю на асме! В ХР командная строка не отображае... (ответов: 3)
Вопрос № 3261. Привет! Задача такая: Пользователь вводит стринг (неизвестной длины), который состоит из чисел (любы... (ответов: 3)
Вопрос № 3262. Всем привет! Может, есть у кого-нибудь исходник – алгоритм как можно перевести файл в формате wav (н... (ответов: 7)

Вопросов: 8, ответов: 30


 Вопрос № 3255

Уважаемые программисты, помогите остановить выполнение DLL. В нужном месте при помощи HEX-редактора ставлю CC ( INT3 ), а при работе винда выдает ошибку и закрывает прогу. Как правильно поставить бряк в DLL ДО ее загрузки в память в ходе выполнения программы ?
С уважением, Илья.
mis421@list.ru



Вопрос отправлен: 22.05.2003, 07:48
Отправитель: Илья (mis421@list.ru)

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

Отвечает masquer

Приветствую Вас, Илья!
Ты явно не в своей библиотеке ставишь бряк :) Ставь в dllmain, а потом уже смотри, что к чему, может там целостность проверяется, а скорее всего стоит SEH, который ловит исключение и по ошибке вываливается.

Ответ отправлен: 22.05.2003, 11:43
Отправитель: masquer


Отвечает Broken Sword

Приветствую Вас, Илья!
ну ты и учудил...
ты думаешь вставишь int 3 в нужном месте и когда до нее дело дойдет то приятный женский голос тебе скажет: "добро пожаловать в отладку" ? нет конечно.
запусти отладчик, который отлавливает int 3 (softice тот же). Только не забудь включить отлов, в сайсе так:
bpint 3
и
set i3here on

Ответ отправлен: 22.05.2003, 15:38
Отправитель: Broken Sword


Отвечает Lynx

Здравствуйте, Илья!
Ну ни фига себе ты заморочился. ИМХО легче в отладчике поставить этот бряк. А если всё таки решил через HEX-Editor, то после изменения файла дизассемблируй его и изучи код где ты ставил CC. Может он её трактует как часть команды?


Ответ отправлен: 22.05.2003, 17:47
Отправитель: Lynx


 Вопрос № 3256

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


Приложение:


Вопрос отправлен: 22.05.2003, 10:34
Отправитель: URiS (newff.narod.ru) (urisff@inbox.ru)

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

Отвечает Ramzes

Доброе время суток, URiS (newff.narod.ru)!
функция обработки сообщений должна находиться в отдельной DLL, при вызове SetWindowsHookEx 3-й параметр должен содержать HANDLE этой DLL.

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


Отвечает St

Привет, URiS (newff.narod.ru)!
Для того чтобы можно было перехватывать сообщения для чужих программ нужно вынести код обработчика перехвата (hook'а) в DLL. Я как раз тоже пишу программу для автозавершения вводимых слов которая перехватывает сообщеия клавиатуры, и уже набил несколько шишек, так что МОЖЕТ БЫТЬ, если будут вопросы, то смогу помочь. Правда я пишу полностью на TASMе.
St


Ответ отправлен: 22.05.2003, 12:29
Отправитель: St


Отвечает masquer

Доброе время суток, URiS (newff.narod.ru)!
Ну, я в дельфи не силен (shame on me :))))), но судя по всему ты хук ставишь только на свой процесс. Если хочешь, что работало и в других процессах - пиши dll. Как ловушки ставить - это самый распространенный вопрос после вопроса "а как ее туды де часики запихнуть?"

Ответ отправлен: 22.05.2003, 11:47
Отправитель: masquer


Отвечает Eugene

Добрый день, URiS (newff.narod.ru)!
Ты должен процедуру хука засунуть в DLL-ку, и вызывать её уже оттуда.

Ответ отправлен: 22.05.2003, 11:43
Отправитель: Eugene


Отвечает keleb-glin

Доброе время суток, URiS (newff.narod.ru)!
Тут асм ни причём, и низкоуровневая помощь не нужна. Виндовс не позволит просто так вешаться на таймер. Ты правильно делаешь, что ставишь hook. Просто, согласно требованиям Виндовс, функция, обрабатывающая хук, должна находиться в отдельной DLL-библиотеке. Просто виндовс аттачит эту процедуру к процессу, сообщение которому она поймала, и исполняет её из-под него. По-моему, с его правами, но я не уверен. Поэтому мути DLL.


Ответ отправлен: 22.05.2003, 17:34
Отправитель: keleb-glin


Отвечает Lynx

Здравствуйте, URiS (newff.narod.ru)!
Кей логер пишешь??? :)))
Там всё чуть-чуть сложнее надо с помощью API Устанавливать ловушки на клавиатуру. Какие API - не помню. Но есть выход: В инете валяется Длл'ка называется что типа "WinHook.dll". Из неё надо всёго пару функций задекларить в проекте.


Ответ отправлен: 22.05.2003, 17:47
Отправитель: Lynx


Отвечает Bob Johnson

Доброе время суток, URiS (newff.narod.ru)!
Для НТ-систем есть такая штука, как WH_KEYBOARD_LL (это тип хука) - он точно работает везде. Еще есть такая заморочь по поводу хуков - они могут вызываться из другого приложения, т.к. лучше попробуй MessageBox.


Ответ отправлен: 23.05.2003, 19:08
Отправитель: Bob Johnson


 Вопрос № 3257

Здрасьте!
К вопросу №3.256
Тема: Key Logger
Язык: Object Pascal (Delphi)
В приложении: Main.pas,Hookden.dpr
Предисловие: Вы мне посоветовали, чтобы можно было перехватывать клавиши чужих программ, запихнуть функции обработки Hook в DLL. Я это сделал.
Вопрос: Почему всё равно не работает?


Приложение:


Вопрос отправлен: 23.05.2003, 10:57
Отправитель: URiS (newff.narod.ru) (urisff@inbox.ru)

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

Отвечает Bob Johnson

Здравствуйте, URiS (newff.narod.ru)!
Ну и не будет работать! твой код вызывается из твоей длл в контексте другого процесса. А у него ессно свои копии всех переменных. Вот и не получается. А что же делать? Необходимо либо shared data segment делать, который будет общим у каждой копии длл всех процессов, либо передавать данные любым способом между процессами (SendMessage?). Еще раз повторюсь, что если у тебя НТ, то используй low level keyb hook, который нормально все вызывается из контекста твоего приложения (потока).


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


Отвечает Ramzes

Доброе время суток, URiS (newff.narod.ru)!
Функция SetWindowsHook не долбна вызываться из DLL.
Показываю
HOOK.dll
_declspec(dllexport) int Play(UINT code, UINT lparam)
int Play(UINT code, UINT lparam)
{
//что-то там
}
// main cpp
HANDLE hDLL = LoadLibrary("HOOK.DLL");
HOOKPROC proc = GetProcAddress(hDLL, "Play");
HHOOK hook = SetWindowsHookEx(WH_KEYBOARD, proc, hDLL, 0);

Ответ отправлен: 23.05.2003, 11:27
Отправитель: Ramzes


Отвечает masquer

Доброе время суток, URiS (newff.narod.ru)!
Первое, что в глаза бросилось - нет hInstance в параметрах вызова SeWindowsHookEx.
И не слушай всяких "очень умных" советов про то, что SetWindowHookEx не должна из dll вызываться, если хук глобальный, то иного пути нет.

Ответ отправлен: 23.05.2003, 18:10
Отправитель: masquer


 Вопрос № 3258

По вопросу 3226 (доступ к 4 Гб памяти в реальном режиме):
в свое время (еще когда у меня был 386 комп) я просматривал исходники himem386.sys, там был обработчик исключения, к-й реализует расширение сегмента до 4 Гб через переключение в защ. режим и возврат обратно.
Затем управление возвращается на ту инструкцию, к-я вызвала
исключение. По идее не 4 Гб, а хотя бы в пределах ОЗУ имхо можно к памяти добраться. Проверить можно тестовой прогой,
к-я скидывала бы в память выше HMA файл с определенным содержимым (текст мегов на несколько), затем считывала его и писала на диск в другой файл. Если файлы совпадут , то идея верна. Все, есс-но, в реальном режиме (с модифицированной границей сегмента). Прокомментируйте, пожалуйста.



Вопрос отправлен: 23.05.2003, 11:49
Отправитель: IanPo

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

Отвечает Pin

Приветствую Вас, IanPo!
В чем вопрос только я не понял. В принципе можно получит доступ к памяти выше 1 МБ в реальном режиме путем программирования контролера доступа к памяти. Но я считаю, что все-таки лучше использовать защищенный режим.

Ответ отправлен: 23.05.2003, 17:46
Отправитель: Pin


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

Добрый день, IanPo!
Ну так ведь все равно используется защищенный режим! В реальном режиме ты
никогда не сможешь адресовать больше 1 Мб. А насчет HIMEM я тебе скажу,
что после его запуска все твои программы будут работать не в реальном
режиме а в режиме V86 (виртуальный 8086). Это подтверждают и твои слова
про обработку исключения. В реальном режиме никаких исключений вроде
выхода за границу сегмента быть не может в принципе.


Ответ отправлен: 24.05.2003, 09:23
Отправитель: ASMодей


 Вопрос № 3259

Здравствуйте
Есть загрузочный диск.
Я хочу записать свой, но чтоб грузился он также.
Можно ли как ни будь вынуть, скопировать с него этот самый имидж, и записать на мой CD!?



Вопрос отправлен: 23.05.2003, 13:26
Отправитель: nikita (vvk@kmscom.ru)

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

Отвечает Bob Johnson

Добрый день, nikita!
Есть ведь CloneCD, и даже nero позволяет копировать диски один в один. Еще можешь загрузиться с него и скопировать все, что есть на винт, а потом оттуда создать image прогой WinImage.


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


Отвечает Maverick

Доброе время суток, nikita!
Можно использывать Nero, это прога такая для записи CD, там есть опция копирование диска. Есть еще прога clonecd, говорят прикольная, но я не пробовал.


Ответ отправлен: 26.05.2003, 14:07
Отправитель: Maverick


 Вопрос № 3260

Здраствуйте эксперты!
Вот такой вопрос!
Маленько я кодю на асме! В ХР командная строка не отображает русский язык (отображает но закорючками)! Хоть убей! Из-за этого приходится работать под 98. И не только асм но и перл и си билдер(консольные приложения)!
ХР русская локализация!
Может кто-нибуть поможет!
Зарание благодарен!
Lando



Вопрос отправлен: 23.05.2003, 15:52
Отправитель: Lando (lando@list.ru)

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

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

Приветствую Вас, Lando!
Не помню, где это встречал. Самое главное не проверял. Но попробуй следущее: В файл c:windowssystem32autoexec.nt добавь строчку: lh %SystemRoot%system32kb16.com RU
Далее внеси изменения в реестр: HKEY_LOCAL_MACHINEsystemControlSet001ControlKeyboardLayoutDosKeybCodes0000409 US замени на RU. Удачи!

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


Отвечает Pin

Приветствую Вас, Lando!
Используй что-нибудь типа KeyRus.COM

Ответ отправлен: 23.05.2003, 17:52
Отправитель: Pin


Отвечает _vt

Добрый день, Lando!
Обычно в XP русский язык для консольных приложений настроен нормально, по крайней мере при запуске в окне, так-что дело возможно не в XP...
Вполне возможно, ты сохраняешь текст в Windows-кодировке, а нужно в DOS-кодировке.


Ответ отправлен: 23.05.2003, 18:14
Отправитель: _vt


 Вопрос № 3261

Привет!
Задача такая:
Пользователь вводит стринг (неизвестной длины), который состоит из чисел (любых целых допустим - 2 байта) и знаков плюс, минус, умножение. Моя будущая программа анализирует этот стринг и расставляет скобки, так что бы если посчитать это выражение, то получается максимальный результат.
Должен заметить, что у меня нет проблем высчитать выражение, введенное пользователем со скобками или без оных.
У меня проблема с придумыванием алгоритма. Если можете, расскажите словами алгоритм. Исходники или ссылки приветствуются.

Best regards
alexneta.



Вопрос отправлен: 23.05.2003, 23:50
Отправитель: alexneta (alexneta@bezeqint.net)

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

Отвечает masquer

Приветствую Вас, alexneta!
Ну, очевидно, что умножение и сложеные должны работать с бОльшими числами, чем вычитание. Отсортируй по убыванию, и делай сначала умножение, потом сложение и в конце вычитание.

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


Отвечает Bob Johnson

Доброе время суток, alexneta!
Самый простой вариант (для реализации) - это написать процедуру полного перебора, если введенная строка не будет слишком большой, то тормозить по идее не должно. Другого варианта, что-то пока не приходит в голову.


Ответ отправлен: 25.05.2003, 00:59
Отправитель: Bob Johnson


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

Приветствую Вас, alexneta!
Думаю, что кроме полного перебора вариантов здесь ничего не подойдет. Таким образом эта прога будет что-то на подобие bruteforce подборщика. Сначала определи возможные положения открывающей скобки '('. Поставь первую '(' и определяй возможные положения закрывающей скобки ')'. Последовательно подставляй ')' в ее возможные положения. Передвинь '(' на новое место и т. д. Потом начни добавлять новые пары скобок. Короче муторно все это. Может есть какой красивый метод (с применением бинарных деревьев, списков или чего-нибудь еще), не знаю. Ничего кроме вышеизложенного я здесь не увидел.

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


 Вопрос № 3262

Всем привет!
Может, есть у кого-нибудь исходник – алгоритм как можно перевести файл в формате wav (например) в котором записан голос человека в обыкновенный файл с текстом. То есть звуковой файл, в котором человек говорит «привет» а программа переводит в другой файл, в котором написано ‘привет’.
Ссылки приветствуются.
Best regards
alexneta.



Вопрос отправлен: 23.05.2003, 23:50
Отправитель: alexneta (alexneta@bezeqint.net)

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

Отвечает Bob Johnson

Добрый день, alexneta!
Ну да... Это называется системой распознования речи. Попробуй воспользоваться speech api, который сейчас есть в office XP (english version).


Ответ отправлен: 25.05.2003, 00:59
Отправитель: Bob Johnson


Отвечает St

Привет, alexneta!
Такие есть, но практически не работают с русским а для английского нужно хорошее произношение :) но все равно много ошибок (программы Dragon Dictate и Naturally Speaking). Есть и другие но говорят что они хуже (сам не пробовал). О более современных программах пока не слышал.
Насчет исходника - над этим бьются крупные фирмы и у даже них пока не все гладко.
St

Ответ отправлен: 26.05.2003, 11:56
Отправитель: St


Отвечает masquer

Приветствую Вас, alexneta!
Speech API от Microsoft должна помочь, поставляется начиная с Win2k(?), для более ранних скачивается дистрибутив. А самому начать писать - год-два точно убить прийдется

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


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

Доброе время суток, alexneta!
Смею робко предположить, что человек, который сможет ПОЛНОЦЕННО решить данную проблему станет как минимум миллионером ($$$). Если и есть где алгоритм перевода голос-текст, то он скорее всего существует на правах Know-How. Такие вещи на широкое обозрение не выкладываются и охраняются от чужих глаз :). Попробуй реализовать свою идею, глядишь повезет. Удачи!

Ответ отправлен: 26.05.2003, 14:01
Отправитель: Дмитрий


Отвечает Ramzes

Приветствую Вас, alexneta!
Ну так енто целая технология...
Тебе ято конкретно нужно ? Просто написать программу которая все это делает или тебя интересует сам алгоритм ?
Если просто надо написать програмку, то используй Microsoft Speech API. А вот насяет алгоритма сказать ничего не могу, хотя самому тоже очень интересно.

Ответ отправлен: 26.05.2003, 12:45
Отправитель: Ramzes


Отвечает Vdr

Добрый день, alexneta!
Дело в том, что технологии разпознования голоса стоят очень дорого. :)Мои личные попытки в этой области увенчались неудачей.
Вот тебе пара ссылок:
http://alife-soft.narod.ru/note/s_recognize/recognize.html
http://www.mikeosx.com/software/utils/voice.html
http://zdnet.ru/?ID=180615

Ответ отправлен: 26.05.2003, 10:51
Отправитель: Vdr


Отвечает Knignick

Добрый день, alexneta!
Это называется Speech Recognition - распознавание звука. Алгоритмы есть, но они весьма сложные и свызаны с крутой математикой, начиная от оконного преобразования Фурье и кочая вероятностными автоматами Маркова. Однако существует готовая библиотека (угадай чья? ;)) для распознавания.
Microsoft SAPI ее можно скачать с сайта microsoft вместе с описанием и примерами, но там все естественно только под английский язык.


Ответ отправлен: 24.05.2003, 10:25
Отправитель: Knignick



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

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

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

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

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

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




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


Яндекс цитирования
© 2003 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное