Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
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.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту 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 |
Отписаться
Убрать рекламу |
В избранное | ||