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

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


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

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

Выпуск № 316
от 13.07.2002, 02:20

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


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

наСИльник
Статус: Профессиональный
Общий рейтинг: 136.95
URL: "Железо"
[Подробней >>]
masquer
Статус: Профессиональный
Общий рейтинг: 160.82
[Подробней >>]
igorash
Статус: Опытный
Общий рейтинг: 121.1
[Подробней >>]
 
AnSim
Статус: Опытный
Общий рейтинг: 110.22
[Подробней >>]
Alex
Статус: Опытный
Общий рейтинг: 113.06
URL: За здравие замолвите словечко и БУДЬТЕ ЗДОРОВЫ!
Телефон: (0332) 77-08-56
[Подробней >>]
baldr
Статус: Профессиональный
Общий рейтинг: 119.11
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
 
Александр
Статус: Опытный
Общий рейтинг: 115.98
[Подробней >>]
Monkey_Logic
Статус: Доверительный
Общий рейтинг: 151.64
[Подробней >>]
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 122.9
URL: Пристанище неодинокого программиста
[Подробней >>]
 
Spike
Статус: Доверительный
Общий рейтинг: 120
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 142.05
[Подробней >>]
Топор
Статус: Опытный
Общий рейтинг: 118.8
URL: Хорошая Русская Металлическая команда
Телефон: (8462)160302, 162918
[Подробней >>]
 
Gibbel
Статус: Опытный
Общий рейтинг: 108.79
URL: Страничка обо мне и моих друзьях
[Подробней >>]


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

Вопрос № 681. Доброе время суток, эксперты! Доброе время суток, эксперты! По ходу пользования рассылки, в качестве... (ответов: 3)
Вопрос № 682. ТоварЫщи, вот такой вопрос: что будет, если сделать программу создания католога в катологе в цикле, ... (ответов: 7)
Вопрос № 683. Такой вот простой вопрос - как найти файл на диске получить его ПОЛНОЕ имя ? И вообще каков механизм... (ответов: 4)
Вопрос № 684. Hi, clever guys! Have a question: what is it a 10h when we turn into protected mode? Here is a sampl... (ответов: 4)
Вопрос № 685. Вопрос к администраторам рассылки. Из примерно 80 моих крайних ответов в рассылке появилось 2 или 3.... (ответов: 3)
Вопрос № 686. Добрый день! Скажите, можно ли как нибудь отследить работу HDD, но под виндами? Аналогия int 13 под ... (ответов: 2)
Вопрос № 687. Привет всем... F1: 1) Отладчики используют int 21h? Вроде бы не должны? 2) При возникновении преры... (ответов: 7)
Вопрос № 688. Добрый час, увожаемые подписчики рассылке по ассемблеру! У меня в данный момент нет вопросов, бо... (ответов: 6)

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


 Вопрос № 681

Доброе время суток, эксперты!
Доброе время суток, эксперты!
По ходу пользования рассылки, в качестве эксперта и читателя одновременно
возник ряд вопросов и пожеланий.
Сначала о себе как эксперте. Я очень удивился когда увидил
свой рейтинг - 142.3. Эт что получается я лучше, к примеру, Артёма Шегеда?
Вряд ли я, любитель, умнее проффесионала.
Признаюсь честно, асмом я занимаюсь как любитель, иногда прибегаю
к его помощи, для оптимизации и отладки, но не более.
Это я всё к тому, что мне не понятна система начисления баллов и статусов.
Хотя, для многих, это не имеет принципиальной разницы, меня это раздаржает.
Приведу пример. Так например один из экспертов, не буду показывать пальцем,
отвечая на вопросы, двумя способами: или "сейчас буду ругаться", либо
что-то вроде утвердительно-отрицательно, и имеет при этом неплохой
рейтинг. Абыдно.
Теперь вопрос непосредственно к экспертам. Скачал я, по совету
друга, Interrupt-List, версии 6.1, просмотрев его - понял,
что с моим знанием инглиша, пользы от него не много.
Нужна русская версия, в любом формате.
С уважением Monkey_Logic.



Вопрос отправлен: 08.07.2002, 05:30
Отправитель: Monkey_Logic

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

Отвечает наСИльник

Доброе время суток, Monkey_Logic!
Система начисления балов ведется следующим образом
(ОтправленоОтветов/ПолученоВопросов)*100%+100.
А Артем Шегеда круче:) У него правильных ответов больше. А ты в экспертах недавно, я посмотрю какой у тебя будет рейтинг через месяц. Хотя рейтинг для меня абсолютно ничего не значит.
Русской версии у меня к сожалению нет.


Ответ отправлен: 08.07.2002, 06:15
Отправитель: наСИльник


Отвечает masquer

Приветствую Вас, Monkey_Logic!
(Отправленные ответы/полученные ответы)*100 = рейтинг, нелогично, конечно, но иначе просто сидеть нужно и анализировать каждого эксперта, его ответ, согласись, достаточно проблематично и вызовет еще больше вопросов. А по ответам и так видно - ху из ху.
Лучше английский выучи - без него - никуда, поверь.

Ответ отправлен: 08.07.2002, 08:03
Отправитель: masquer


Отвечает igorash

Доброе время суток, Monkey_Logic!
рейтинг это вроде 100%+ (кол-во ответов*100%/кол-во вопросов полученых). Т.е. если часто отвечаешь, то рейтинг будет высокий.
Interrupt List на русском если и есть то очень старый, по-моему как-то 2.0 видел что ли, вывод: учи английский. :)


Ответ отправлен: 08.07.2002, 13:55
Отправитель: igorash


 Вопрос № 682

ТоварЫщи, вот такой вопрос: что будет, если сделать программу создания католога в катологе в цикле, в р-те будет folder/folder/folder и тд. в р-те будет ошибка, или что?



Вопрос отправлен: 08.07.2002, 10:32
Отправитель: Ландграф Павел

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

Отвечает AnSim

Доброе время суток, Ландграф Павел!
Конечно будет ошибка. И по-моему ты сможешь грохнуть фат.

Ответ отправлен: 09.07.2002, 13:56
Отправитель: AnSim


Отвечает Alex

Добрый день, Ландграф Павел!
ДОС через некоторое время выдаст ошибку. Если такое сделать на сервере Новелл, то после 16 вложенностей он совершит аварийную остановку, после чего запустить его крайне сложно!

Ответ отправлен: 09.07.2002, 08:13
Отправитель: Alex


Отвечает masquer

Приветствую Вас, Ландграф Павел!
Под DOS - 8, под Windows у меня больше 126 не получалось, сильно, правда, не пытался

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


Отвечает igorash

Здравствуйте, Ландграф Павел!
Длина пути в досе вроде 80 символов, т.е. до 80 символов прога тебе каталогов создаст,а дальше будет ошибка.
з.ы. Экспериментируй больше... :)


Ответ отправлен: 08.07.2002, 13:55
Отправитель: igorash


Отвечает baldr

Приветствую Вас, Ландграф Павел!
Что касается DOS, то там ограничение на вложенность каталогов - до 8 уровня, так что потом
полезут ошибки. А в других системах, например, Windows, несмотря на то, что там такая же FAT,
ограничения ниже. Числа не знаю, но наверное, не больше 256? Или 64? Или еще сколько там...
Если в Linux - то там, возможно, пока тебе самому не надоест или место на диске не кончится.
Хотя - ХЗ.


Ответ отправлен: 09.07.2002, 00:40
Отправитель: baldr


Отвечает Александр

Здравствуйте, Ландграф Павел!
Кажется было ограничение на длину имени файла в 128 символов. Но эта проблема умерла с ДОСом. Поэтому сейчас чистотеоретически ты их будешь создавать пока место на диске не кончится. Хотя может как на CD есть какие-то ограничения уровня вложенности.


Ответ отправлен: 09.07.2002, 18:10
Отправитель: Александр


Отвечает Monkey_Logic

Добрый день, Ландграф Павел!
Для этого по моему даже прогу писать не надо.
Просто создай ссылку в папке на эту же папку %)
А прога будет работать без ошибок, пока не
закончится лимит дескрипторов в операционке.
В винде кажется это 32768.
ЗЫ: Если пишешь под никсы, да ещё и в консоле
сидишь (такое бывает?), то после работы
такой программы, создаваемую директорию
невозможно будет удалить. Вот так

Ответ отправлен: 09.07.2002, 22:22
Отправитель: Monkey_Logic


 Вопрос № 683

Такой вот простой вопрос - как найти файл на диске получить его ПОЛНОЕ имя ? И вообще каков механизм поиска этих файлов?



Вопрос отправлен: 08.07.2002, 13:26
Отправитель: Aurum

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

Отвечает masquer

Добрый день, Aurum!
FindFirstFile затем FindNextFile, как под Досом так и под виндами механизм один и тот же, заполняются под винды - структура, под дос - регистры с параметрами поиска, и вызываются под дос int 21h, ah=4eh (FindFirstFile) ah=4f (FindNextFile), под винды - соответствующие функции.

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


Отвечает Артём Шегеда

Добрый день, Aurum!
Если под полным именем подразумевается длинное имя файла Windows, то ответ в "архиве моих модулей для BP" на моей странице. Модуль LongName.pas. Если не сильно ломает разбираться в Pascal - скачай.

Ответ отправлен: 08.07.2002, 17:13
Отправитель: Артём Шегеда


Отвечает Spike

Доброе время суток, Aurum!
INT 21h: AH=4Eh: Найти первый файл
Вход:
CX = атрибуты, которые должен иметь файл (биты 0 и 5 игнорируются. Если бит 3 установлен - остальные биты игнорируются)
DS:DX = адрес ASCIIZ-строки с именем файла, в которое можно включать путь и маску для поиска (символы * и ?)
Выход:
CF=0 и область DTA заполняется данными, если файл найден
-----
INT 21h: AH=4Fh: Найти следующий файл
Вход:
DTA - содержит данные от предыдущего поиска
Выход: CF=0 и DTA содержит информацию о следующем найденом файле
-----
Область DTA обычно начинается со смещения 0080h от начала блока PSP и имеет размер 128 байт, но может быть перемещен функцией 1Ah.
+00h: байт - биты 0-6: ASCII-код буквы диска (A, B, C, ...)
бит 7: диск сетевой
+01h: 11 байт - маска поиска (без пути)
+0Ch: байт - атрибуты для поиска
+0Dh: слово - порядковый номер файла в директории
+0Fh: слово - номер кластера начала внешней директории
+11h: 4 байта - резерв
+15h: байт - атрибут найденного файла
+16h: слово - время создания файла в фомате DOS^
биты 15-11: час (0-23)
биты 10-5: минута
биты 4-0: секунда деленная на 2
+18h: слово - дата создания файла в формате DOS:
биты 15-9: год, начиная с 1980
биты 8-5: месяц
биты 4-0: день
+1Ah: 4 байта - размер файла
+1Eh: 13 байт - ASCIIZ-имя найденного файла
-----
INT 21h: AH=1Ah: Установить область DTA
Вход:
DS:DX = Адрес начала DTA
Spike.


Ответ отправлен: 08.07.2002, 21:24
Отправитель: Spike


Отвечает Monkey_Logic

Доброе время суток, Aurum!
Долго описывать весь процесс поиска файла. Это
зависит от ОС под которую пишется прога.
Под Windows:
Функция 714Eh.
Задваемые параметры:
AH = 714Eh
CL - атрибут искомого файла (чтение/запись...)
DS:DX - имя искомого файла
ES:DI - адрес структуры WIN32_FIND_DATA
Возвращаемые параметры:
Флаг переноса CF = 0, если функция нашла файл
AX - дескриптор файла
CX - имеет три значения, связанных с
структурой WIN32_FIND_DATA
Если CF = 1, то в AX - код ошибки
В приложении смотри исходник.
ЗЫ: под DOS всё проще, там функция 4Eh выполняет
всю работу, если нужно пояснение - пиши на мыльник


Приложение:

Ответ отправлен: 09.07.2002, 22:23
Отправитель: Monkey_Logic


 Вопрос № 684

Hi, clever guys!
Have a question: what is it a 10h when we turn into protected mode? Here is a sample from Intel site. When we switch to PM, a value 10h is moved to DS. Why 10h??? Why not a 08 for instance? Can't understand! I try to understand how real mode can be switched to protected. Well, less bit in CR0 is zero... Well, GDT... But what is it a 10h? %( Oh, my p00r brains...
Covax.
PS: can answer Russian...
Just have no russian layout.:)


Приложение:


Вопрос отправлен: 08.07.2002, 16:17
Отправитель: Covax

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

Отвечает Артём Шегеда

Приветствую Вас, Covax!
Привёл бы всю процедуру инициализации - сказал бы подробнее. Так выглядит селектор: 0000 0000 0000 0.0.00 - два последних бита privilege level request, следующий бит - признак GDT/LDT. Остальные биты - номер дескриптора в таблице. Нулевой дескриптор - заглушка. Предположительно, первый описывает сегмент кода. Ну а, я так понимаю, 2-й дескриптор содержит инфу о сегменте данных.

Ответ отправлен: 08.07.2002, 17:24
Отправитель: Артём Шегеда


Отвечает Broken Sword

Здравствуйте, Covax!
А чего тут непонятного? Про селектор слышал кода нить? В глаза видел? Так вот, после mov ds,ax в ds окажется число 10h (т.е. установится только четвертый бит, все остальные будут равны 0, это ясно), теперь смотри: поле ИНДЕКС в селекторе - это биты 3-15. Получается картина:
0000000000010 000, первые три бита не считаются, еще раз повторю ИНДЕКС - биты 3-15!!!, т.е. ИНДЕКС стал равен 2 !!!!!!!!!!!! (видишь?). Ну вот и все. Нулевой дескриптор в GDT - резерв, первый (по смещению 10h) наверно был CS, а второй (смещение 20h) - DS !!!
да ты еще не забывай, что проц АВТОМАТИЧЕСКИ(!) при высчитывании смещения дескриптора в GDT умножает ИНДЕКС на 8!!!! наверно, ты этого не знал, и поэтому у тебя вопрос почему индекс равен 2 ??? на самом деле проц его сам превратит в 20h (умножит на 8)

Ответ отправлен: 08.07.2002, 18:19
Отправитель: Broken Sword


Отвечает Александр

Приветствую Вас, Covax!
В защищённом режиме в сегментных регистрах находятся номера дескрипторов в таблице дескрипторов(LDT и GDT). Из-за некоторых особенностей номера должны быть кратны 8. За номером 8 наверное находится сегмент команд, а за данными закрепили номер 16=10h. Вот и всё. Посмотри как там сформирована таблица дескрипторов.


Ответ отправлен: 12.07.2002, 18:54
Отправитель: Александр


Отвечает Monkey_Logic


Good day, Covax!
To go to protected mode (you must know this) :
* set pe in cr0
* use function 89h , interruption 15h of BIOS
About second variant:
This funtcion assumes that descriptors in
Global Descriptor Table are located In the
certain sequence:
* 0h - empty descriptor
* 8h - descriptor of GDT
* 10h - desriptor of Local Descriptor Table!!!
* 18h - desriptor of ds
* 20h - desriptor of es
* 28h - desriptor of ss
* 30h - desriptor of cs
Therefore you must to load selectors
for other descriptors, in your case this selector
of the local table of descriptors.
I think you understand me :)
PS: Excuse me for my English

Ответ отправлен: 09.07.2002, 22:24
Отправитель: Monkey_Logic


 Вопрос № 685

Вопрос к администраторам рассылки. Из примерно 80 моих крайних ответов в рассылке появилось 2 или 3. Такая ситуация возникла с тех пор, как после отправки ответа у меня перестало появляться сообщение "Ваш ответ принят и будет отправлен через...", а вместо этого стала появляться форма для вопроса.
Очень хочется текстовой рассылки, без всяких html и форм. Неужели это сложнее сделать?
На рейтинги мне, по большому счету, наплевать. Жалко времени и сил, которые пропадают совершенно зря...



Вопрос отправлен: 08.07.2002, 18:39
Отправитель: Beeblebrox (beeblbrx@mail.ru)

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

Отвечает igorash

Доброе время суток, Beeblebrox!
Согласен!
Правда такого у меня давно не было....
Зачем рейтинг, по ответам всегда все видно


Ответ отправлен: 08.07.2002, 23:54
Отправитель: igorash


Отвечает baldr

Здравствуйте, Beeblebrox!
Да, что-то тебя, действительно, редко видно стало. А глюки, возможно, в браузере.
У меня все нормально отправляется...
Что же касается рассылки...
Текстовая рассылка - это не очень хорошо. Но и существующий вид мне, честно говоря, не очень
нравится. Рекламы и вообще мусора много слишком... Какая-то она громоздкая стала! Пример:
сегодняшний выпуск по basic - 23 Kb и один мааленький вопросик с еще более маленьким ответом!
Реально, думаю, при удобном оформлении сделать 5 kb, не более! А форма для вопросов в конце
мне уже давно не нравится... ОЛЕГ, скажите пожалуйста, каково отношение задающих вопросы
с сайта и через форму? Я лично задаю только через браузер, заходя на сайт.
За образец можно принять все-таки прежний вид. Сохранить от нового только неповторяющиеся вопросы и, пожалуй, все...


Ответ отправлен: 09.07.2002, 00:40
Отправитель: baldr


Отвечает Monkey_Logic

Здравствуйте, Beeblebrox!
Видимо у тебя не работают cookies
А насчёт текстовой рассылки ты прав. По моему
это удобнее.

Ответ отправлен: 09.07.2002, 22:24
Отправитель: Monkey_Logic


 Вопрос № 686

Добрый день!
Скажите, можно ли как нибудь отследить работу HDD, но под виндами?
Аналогия int 13 под Дос...
Спасибо
3ZOR



Вопрос отправлен: 08.07.2002, 20:48
Отправитель: 3ZOR

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

Отвечает masquer

Доброе время суток, 3ZOR!
Перехватывай из драйвера IFSMgr_InstallFileSystemApiHook

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


Отвечает Monkey_Logic

Приветствую Вас, 3ZOR!
Я таким не занимаюсь, тем более под Windows, но ссылку
могу дать:
http://fileforum.betanews.com/download.php3?fid=1016741933

Ответ отправлен: 09.07.2002, 22:26
Отправитель: Monkey_Logic


 Вопрос № 687

Привет всем...
F1:
1) Отладчики используют int 21h? Вроде бы не должны?
2) При возникновении прерывания в стек прерываемой программы заносятся текущие
значения ее (!) FLAGS, CS и IP. Так? А какие прерывания могут возникать при запрещенных
прерываниях командой cli? Меня интересует вот что: может ли в то время, когда я запретил
прерывания какой-нибудь обработчик записать в МОЙ стек (в смысле, ниже моего SP) какое-нибудь
число?



Вопрос отправлен: 09.07.2002, 00:52
Отправитель: baldr (baldr@pisem.net)

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

Отвечает Артём Шегеда

Здравствуйте, baldr!
1. Используют на полную катушку (по крайней мере TD3.1 - TD5.0). Сам проверял - за базар отвечаю. Причём, старый TD не трогает таблицу векторов, а новый при первом удобном случае пытается перенастроить её под себя (что при отладке резидентов жутко раздражает, а при взломе - помогает).
2. Никаких, кроме NMI - немаскируемого. А NMI просто так не возникает, поскольку оно используется для индикации аварии. В этом случае твоей программе будет глубоко фиолетово, что с ней случится, ибо все пути ведут к RESET.
И ещё одно замечание. Отладчик разрешает прерывания - иначе он тихо умрёт. Это свойство отладчика используется для защиты программ - делают CLI, устанавливают стек куда-нибудь в область кода, что-то делают (например, копируют блоки кода через стек), переустанавливают стек и разрешают прерывания. Это хорошая защита, но ломается симуляторами или JTAG-эмуляторами.

Ответ отправлен: 09.07.2002, 14:23
Отправитель: Артём Шегеда


Отвечает masquer

Добрый день, baldr!
1. При отладке - нет
2. кроме немаскируемых, но встретил такой код, который и немаскируемые отрубает
cli
mov al,8fh
out 70h,al

Ответ отправлен: 09.07.2002, 09:13
Отправитель: masquer


Отвечает Broken Sword

Здравствуйте, baldr!
1. Вообще не должны, но почему то таблицу векторов почти полностью замещают все отладчики (кроме debug :), кстати, отладчики типа debug - самые крутые и мощные по сути, т.к. чем больше наворотов - тем дальше в лес
2. CLI запрещает ВСЕ МАСКИРУЕМЫЕ АППАРАТНЫЕ ПРЕРЫВАНИЯ - как учили нас в школе и написано во всех книжках по асму. На практике все не совсем так... Например, в V86 CLI вообще бесполезна по сути.
3. Про "свой" стек вообще забудь! :) В таких ОС, как DOS и WINDOWS у тебя ничего своего вообще нет...
Я уже говорил, что CLI в V86 вообще не несет никакой функц.нагрузки (время продолжает тикать а клава продолжает реагировать), теперь только при чем здесь стек... Вообщем, по идее не должно )

Ответ отправлен: 09.07.2002, 12:03
Отправитель: Broken Sword


Отвечает Топор

Здравствуйте, baldr!
>>А какие прерывания могут возникать при запрещенных
прерываниях командой cli? Меня интересует вот что: может ли в то время, когда я запретил
прерывания какой-нибудь обработчик записать в МОЙ стек (в смысле, ниже моего SP) какое-нибудь
число?
Какие, какие... Аппаратные, например, а вообще - любые немаскируемые. У них же и наивысший приоритет.


Ответ отправлен: 12.07.2002, 19:13
Отправитель: Топор


Отвечает igorash

Добрый день, baldr!
1) смотря какие, может некоторые и используют.
2) По идее только немаскируемые. он может не просто записать в смысле mov, а еще и push или pop замутить, и таким образом тебе весь стек запортачить, вот почему в обработчиках обычно вначале сохраняют регистры, а потом их восстанавливают.


Ответ отправлен: 09.07.2002, 01:12
Отправитель: igorash


Отвечает Александр

Доброе время суток, baldr!
1) Смотря для чего. Хотя из-за нереентерабельности ДОС должны избегать этого всеми силами...
2) NMI(Non Maskable Interrupts). В защищённом режиме устанавливается картой прерываний. В реальном - пришедшие по сигналу NMI шины процессора... Всё можно, а почему собственно нельзя? Особенно если "вредоносная" программа в 0-м кольце защиты.


Ответ отправлен: 12.07.2002, 18:54
Отправитель: Александр


Отвечает Monkey_Logic

Приветствую Вас, baldr!
cli - запрещает аппартные прерывания, остаются программные
А в стек может записать, только если ты этого сам захочешь

Ответ отправлен: 09.07.2002, 22:27
Отправитель: Monkey_Logic


 Вопрос № 688

Добрый час, увожаемые подписчики рассылке по ассемблеру!
У меня в данный момент нет вопросов, более того, я хочу ответить на
вопрос, который как-то не очень давно попадался здесь.
Этот вопрос не имеет прямого отношения к рассылке по асму - просто
здесь больше всего подписчиков, которые, наверное, тоже
не будут против чтения моего письма.
Вопрос, который я хочу рассмотреть касается взлома ОС от микрософта.
Конечно, некоторые могут сказать, что это неправильно по моральным соображениям,
но мы не в церковной школе и несовершеннолетних девченок среди нас нет
(я почти уверен в этом).
Почему я решил это рассмотреть? Любой взлом основан по большей части на
ошибках разработчиков системы, поэтому именно они должны отвечать за безопасность
информации на Ваших компьютерах (особенно, если у вас лицензионная ОС (а такие есть?
Выйти из строя...)
Большая часть моего письма будет посвящена обычным мастдаям (т.е. 95, 98 и МЕ), но
в конце рассмотрю и НТ + 2К.
Итак, начнем...
-----------------------------------------------
Никого не интересует пароль на удаленный доступ?
Что, никто из вас не приходил на работу или в гости к "доброму другу",
не открывал удаленное соединение и не видел этого волнующего всех слова:
"********".
- А какое, там собственно слово?
- Вот! Вот это нам и предстаит узнать - какое слово стоит за этими астериксами...
(*астерикс - это не более и не менее, чем обычная звезда...)
Что требуется от читателя?
Раз уж ломаем мы винды, придется изучить их структуру. Изучили? Отлично...
Как известно даже детям (ну, детям программистов, конечно) - поле, в которое
вводится пароль - это всего-лишь поле ввода (что-типа Edit), а если более обще -
окно (с точки зрения виндов). Не смотря на малый размер у него есть свой полноценный
Window Handle (HWND), а все, что мы там видим - это всего-лишь Window text.
Ну, мысли есть? Отлично - если диалог ввода пароля отображен на экране, пароль введен
(стоит галочка "запомнить пароль"), то все, что надо - это получить текст окна, содержащего
пароль. Я уже слышу тысячи голосов, раздающихся из-за светящихся экранов и сливающихся в
монотонный гул, в котором отчетливо различается одно слово - GetWindowText!!!
О, да! Поставьте MSDN - пригодится! Конечно функция эта просто супер, но микрософт ясно написали,
что эта функция НЕ МОЖЕТ получить текст компонента в другом процессе...
Ну а теперь? В голове наверное мысли, как подключиться к процессу набора номера, как запатчить
винды так, чтобы эта функция работала всегда, а может кто-то просто подумал: "Да ну его на ..." и пошел
пить пиво? Тоже вариант. Но вспомним старую фразу - "Все гениальное просто"... Ответ на наш вопрос еще
проще - читаем, как работает функция GetWindowText - если целевое окно принадлежит текущему
процессу, функция посылает ему (окну) сообщение WM_GETTEXT и получает его текст. Если же принадлежит
другому процессу и имеет заголовок - GetWindowText получает этот заголовок (С) MSDN.
"Получает этот заголовок" - интересно как! Да ладно - а что если послать эту функцию на (далеко),
а окошку послать сообщение WM_GETTEXT???
Вот так и рождаются хакеры... Своеобразно, но факт - под мастдаем ЛЮБОЕ окно ответит ЛЮБОМУ процессу
на WM_GETTEXT своим скромным, но правдивым содержанием... Даже если это окно предназначено для ввода пароля
оно считает своим долгом сообщить пароль любому, кто знает что такое WM_GETTEXT. Не правда ли,
напоминает "Хочешь похудеть? Спроси меня, как!".
Более того - это верно и под НТ (под 2к и SeXP - не знаю), но там (под НТ) все хитерее, и пароль, который
введен когда-то давно так и содержится внутри поля ввода, как много астериксов - поэтому-то его нельзя редактировать-
можно только набрать заново. Но это тоже не обламывает наши мечты на 100% - добрые люди из Borland (Inprise)
решили, что раз микрософт исправили это в своих виндах НТ, надо исправить это на обратно с помощью
своего билдера и дельфи - пример - програ ESERV и THEBAT 2 года назад прекрасно "отдавала" настоящие
пароли по WM_GETTEXT... Так держать, Borland!!! I LUV U!
Ну как, все понятно? Ах, да - чуть не забыл... Как же получить-то HWND на окошко с паролем???
Просто! Берем начальное окно - это GetDesktopWindow, но для нас это "большая папа всех остальных окон".
Берем всех его детей - а это GetWindow (???, GW_CHILD). Ну и так далее... У каждого окна проверяем, где оно
на экране - попадает ли на него наша мыша (а мыша - это GetCursorPos) и рекурсно (т.е. рекурсивно),
рекурсно... до конца. Пример? Ну вот...


Приложение:


Вопрос отправлен: 09.07.2002, 01:43
Отправитель: Bob Johnson (bobjohn@newmail.ru)

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

Отвечает наСИльник

Приветствую Вас, Bob Johnson!


Ответ отправлен: 09.07.2002, 09:29
Отправитель: наСИльник


Отвечает igorash

Добрый день, Bob Johnson!
Ой сколько понаписал.... :)
А прогу под названием open_pass видел?
Она вроде все это и мутит


Ответ отправлен: 09.07.2002, 12:46
Отправитель: igorash


Отвечает Broken Sword

Добрый день, Bob Johnson!
Любое американское шоу примет с распростертыми объятиями

Ответ отправлен: 09.07.2002, 12:03
Отправитель: Broken Sword


Отвечает Gibbel

Приветствую Вас, Bob Johnson!
Хех, неплохо, неплохо...
Только я обычно пароли из окошек по-старинке, Ctrl+C/Ctrl+V ))) И зачем было столько мучаться???

Ответ отправлен: 10.07.2002, 11:57
Отправитель: Gibbel


Отвечает masquer

Доброе время суток, Bob Johnson!
И стоило столько мучиться. Такой крутой хакер, а про функцию WindowFromPoint совсем забыл

Ответ отправлен: 09.07.2002, 08:28
Отправитель: masquer


Отвечает Monkey_Logic

Добрый день, Bob Johnson!
Познавательно...
Только вот вопрос возник, откуда у тебя эта информация?
ЗЫ: Ошибки искать я не пытался, и так время нет

Ответ отправлен: 09.07.2002, 22:27
Отправитель: Monkey_Logic



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

Внимание!
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.

© 2002 Команда RusFAQ.ru.

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

Ваше имя:

Ваш e-mail:

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


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

Ваш вопрос:


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


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


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

Программисту
Assembler (48)
C / C++ (33)
Perl (10)
Delphi (17)
Pascal (29)
Basic / VBA (12)
Java / JavaScript (6)
PHP (6)
MySQL / MSSQL (9)
Пользователю
Windows 95/98/Me (44)
Windows NT/2000/XP (32)
"Железо" (36)
Поиск информации (19)
Администратору
Windows NT/2000/XP (19)
Linux / Unix (15)
Юристу
Гражданское право (8)
Семейное право (3)
Трудовое право (7)
КоАП (2)

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




be number one Яндекс цитирования

© 2002 Россия, Москва. Авторское право: RusFAQ.ru


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

В избранное