Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 563
от 10.06.2003, 10:20
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 3419 Отправлено ответов: 10079 Активность: 294.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 151.79 URL: Программирование [Подробней >>] |
Ramzes Статус: Профессиональный Общий рейтинг: 126.58 URL: Microsoft homepage [Подробней >>] |
Tigran K. Kalaidjian Статус: Опытный Общий рейтинг: 117.93 URL: Методы оптимизации работы ПК [Подробней >>] |
St Статус: Опытный Общий рейтинг: 107.56 [Подробней >>] |
Hangatyr Статус: Опытный Общий рейтинг: 116.04 [Подробней >>] |
_vt Статус: Опытный Общий рейтинг: 120.86 [Подробней >>] |
Дмитрий Статус: Опытный Общий рейтинг: 152.32 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 138.26 [Подробней >>] |
Maverick Статус: Профессиональный Общий рейтинг: 131.58 URL: Эхоконференция по вирмейкингу Телефон: 89039415024 (BeeLine GSM) [Подробней >>] |
GL Статус: Опытный Общий рейтинг: 102.87 [Подробней >>] |
Knignick Статус: Опытный Общий рейтинг: 110.21 URL: Мой каталог ссылок по программированию [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 112.33 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 122.33 URL: моя рассылка по Protected Mode [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 114.35 [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 112.76 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 3370. Извиняюсь за вопрос (возможно он уже не раз обсуждался), не могли бы вы подсказать, как заставить SI... (ответов: 2)
Вопрос № 3371. Добрый день. Может у кого есть исходники или кто посоветует как обрабатывать прерывание от клавиатур... (ответов: 3)
Вопрос № 3373. Здравствуйте, господа Эксперты! У меня к вам небольшой вопрос: написал я программку на асме, а она к... (ответов: 4)
Вопрос № 3375. Ассемблер под Win NT 4.0 Здравствуйте, уважаемые спецы! Простите, если на этот вопрос уже отвечали, ... (ответов: 5)
Вопрос № 3376. Для masquer'а: > По поводу "самые умные" - кто это тебе такую гадость сказал, ту... (ответов: 4)
Вопрос № 3377. Уважаемые эксперты, у меня к вам вопрос как по точнее в программе на asm'е сделать задержку на 0,5..... (ответов: 6)
Вопрос № 3378. Добрый день, Господа. Стоит ли у кого-нибудь WinMe и SoftIce, у меня установлено и то, и другое, вот... (ответов: 2)
Вопрос № 3379. Здраствуйте, уважаемые эксперты. У меня всё та же проблемма с защитнам режимом ( при переходе в него... (ответов: 1)
Вопрос № 3380. Здраствуйте уважаемые эксперты. Недавно поменял материнку и обнаружил в биосе данные о температуре c... (ответов: 2)
Вопрос № 3381. Господа, такой простой вопрос и ставит меня в тупик. Структура WSAData имеет размер 398 байт (деклар... (ответов: 4)
Вопрос № 3382. Привет эксперты! как на асме перезагрузить комп под ДОС??? ... (ответов: 7)
Вопросов: 11, ответов: 40
Вопрос № 3370 |
Извиняюсь за вопрос (возможно он уже не раз обсуждался), не могли бы вы подсказать, как заставить SIce работать под XP, а то ставлю, а он запускаться не хочет. Какие патчи может нужны, если да, то где их взять. Заранее спасибо.
Вопрос отправлен: 05.06.2003, 11:29
Отправитель: Alexandr
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Приветствую Вас, Alexandr!
Да, для SIce под XP нужен патч, однако я скачал 3 штуки и все глючили (не ставились breakpoints) Потом мне знакомый прислал патч по почте, и только с этим стало работать. Вообщем я думаю, наврятли нормальный патч будет легко найти в инете. Если есть какой-нить сайт или фтп со свободным доступом для закачки, я могу закачать туда.
Ответ отправлен: 05.06.2003, 11:53
Отправитель: --- Нет данных ---
Отвечает Bob Johnson
Доброе время суток, Alexandr!
Тебе нужен SoftIce из пакета DriverStudio 2.7. Более младшие версии работают нестабильно под ХР.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 05.06.2003, 12:55
Отправитель: Bob Johnson
Вопрос № 3371 |
Добрый день.
Может у кого есть исходники или кто посоветует
как обрабатывать прерывание от клавиатуры.
Вопрос отправлен: 05.06.2003, 13:54
Отправитель: sel (devsel@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Скачай рассылку калашникова на сайте www.rusfaq.ru и почитай там. Там есть готовые примеры резидента, который обрабатывает 9 прерывание. Там все понятно и хорошо написано, я конечно сам могу тебе прицепить тот пример, но лучше скачай сам - полезнее будет, там все объясняется и т.д.
Когда скачаешь для примера можешь посмотреть приложение к 15 выпуску (resid15.asm) ну и почитать главы где описывается создание резидента. Удачи.
Ответ отправлен: 05.06.2003, 14:08
Отправитель: --- Нет данных ---
Отвечает Ramzes
Доброе время суток, sel!
Под DOS, Windows ????
если под дос, то пишешь резидент, в котором есть процедура обработки прерывания, потом меняешь соответствующую запись в Vector Table, и усе :)
Ответ отправлен: 06.06.2003, 11:08
Отправитель: Ramzes
Отвечает Tigran K. Kalaidjian
Доброе время суток, sel!
Читайте на www.vcl.ru подробное описание. Также советую почитать список Ральфа Брауна по INT 16 - уж полнее описания Вы не найдёте. Пример работы:
mov ah, 00h; ожидание нажатия любой клавиши
int 16h
Если это то, что вы имели ввиду, конечно...
Ответ отправлен: 07.06.2003, 23:16
Отправитель: Tigran K. Kalaidjian
Вопрос № 3373 |
Здравствуйте, господа Эксперты!
У меня к вам небольшой вопрос: написал я программку на асме, а она компилиться не хочет...
В смысле TASMом - он (тасм) говорит:
Error: Unresolved external 'MESSAGEBOXA' referenced from module a.asm
Error: Unresolved external 'EXITPROCESSA' referenced from module a.asm
Когда компилю MASM все в порядке, а вот TASM чего-то ругается...
Компилю так:
IMPLIB -c -f -i imp32i.lib kernel32.dll user32.dll advapi32.dll
TASM32 -ml -mx program.asm
TLINK32 -Tpe -aa -c program,,,import32.lib
помогте, плз...
Приложение:
Вопрос отправлен: 05.06.2003, 16:17
Отправитель: Troy
[Следующий вопрос >>] [Список вопросов]
Отвечает St
Привет, Troy!
Во-первых ExitProcess а не ExitProcessA - здесь нет текста, а значит нет различия между A и W (ANSI и Unicode), а вот MessageBoxA - это правильно, но насколько я понимаю (если я понял правильно?) вы создаете lib-файл (imp32i.lib) каждый раз при компиляции (зачем? достаточно одного раза) а потом используете не его, а import32.lib (идущий в составе Тасма - в него уже входят основные библиотеки для kernel32.dll user32.dll gdi.dll), но его видимо нет в рабочем каталоге, поэтому и получается "Error: Unresolved external 'MESSAGEBOXA' referenced from module a.asm".
Кстати совет, если переделывать программы с масма то можно просто заменять invoke на call, в Тасм можно спокойно применять такой способ указания параметров в функции:
CALL MessageBoxA, 0, offset Window_Text, offset Window_Title, 1000h
вместо
push 1000h
push offset Window_Title
push offset Window_Text
push 0
call MessageBoxA
то есть параметры идут в том же порядке, как в справочнике по API или в программах на языках высокого уровня (обычно в примерах это Си), а не в обратном. Если строка кажется слишком длинной, то ее можно разделить с помощью \ (backslash)
St
Ответ отправлен: 05.06.2003, 17:07
Отправитель: St
Отвечает Hangatyr
Добрый день, Troy!
1. Может, расскажешь, что такое "ExitProcessA"?
2. Ключ /mx у tasmа в данном случае лишний - достаточно /ml.
3. Может, лучше использовать не import32.lib, а imp32i.lib, который ты создаешь?
4. У меня пример работает отлично.
tasm32 /ml /m3 program.asm
tlink32 -Tpe -aa -c program.obj,,,import32.lib,,
Ответ отправлен: 07.06.2003, 08:03
Отправитель: Hangatyr
Отвечает Bob Johnson
Добрый день, Troy!
Во-первых - если пишет, что не найден "MESSA..", а не "Messa...", как положено, значит у тебя что-то с регистром. Implib тут непричем, т.к. от него не зависит то, что ищется.
Смотрим, как ты компилируешь:
-ml - все ок,
-mx а вот это еще что? Этого быть не должно!
Компилируй вот так:
tasm32 /ml /t /m3 /z /q ...
И вообще, у меня на странице в разделе FAQ есть вопрос, как компилировать проги на тасме под винды...
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 05.06.2003, 19:59
Отправитель: Bob Johnson
Отвечает _vt
Добрый день, Troy!
Не существует функции ExitProcessA, просто ExitProcess.
Заменив это в исходнике, и откомпилировав
implib -c -f -i imp32.lib c:\winnt\system32\kernel32.dll c:\winnt\system32\user32.dll
tasm /ml prog.asm
tlink32 -Tpe -aa -c prog,,,imp32.lib
у меня все заработало!
Ответ отправлен: 05.06.2003, 19:10
Отправитель: _vt
Вопрос № 3375 |
Ассемблер под Win NT 4.0
Здравствуйте, уважаемые спецы!
Простите, если на этот вопрос уже отвечали, но я в ваших рассылках ответа не нашёл.
Вот установлена у меня Windows NT 4.0 и SP5.0 - что нужно для изучения ассемблера в таких условиях?
Какие дебагеры, трансляторы, отладчики, линкёры... - ну, вы поняли.
Заранее спасибо!
Игорь.
Вопрос отправлен: 05.06.2003, 17:57
Отправитель: Игорь
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Доброе время суток, Игорь!
Для изучения ассемблера в таких условиях нужна книжка =)
А вообще ничем не отличаются такие условия от других. Только СофтАйс если хочешь ставить, не перепутай скачай для NT..
Ответ отправлен: 05.06.2003, 19:02
Отправитель: --- Нет данных ---
Отвечает Bob Johnson
Приветствую Вас, Игорь!
1. Вначале тебе нужны знания в голове, а то знаешь, если этого не будет, то тебе и Win XP не поможет... Некоторую литератру для начинающих можно скачать с моей страницы: bobjohnson.nm.ru.
2. Из ассемблеров основными сейчас являются tasm и masm. Особые гурманы предпочитают nasm, но, поскольку большинство примеров написаны для tasm/masm, то начни лучше с них. Что из них лучше - на твой вкус. Я лично предпочитаю tasm, но многие здесь - masm. В состав каждого из них входит линкер, а у nasm он вообще встроенный.
3. Из отладчиков для начала тебе вполне хватит td для DOS и td32 для windows. Еще для windows можно использовать W32DAsm - отладчик/дизасм в одном флаконе.
Ну и все, наверное...
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 05.06.2003, 20:00
Отправитель: Bob Johnson
Отвечает Дмитрий
Здравствуйте, Игорь!
Отличаются условия, в которых будет выполняться написанная тобой прога. А инструментарий можно использовать один для всех Windows (кроме пожалуй SoftIce - есть разные версии для разных осей). Как правило это masm, cv, ida, dasm и т. д.
Ответ отправлен: 06.06.2003, 05:55
Отправитель: Дмитрий
Отвечает _vt
Приветствую Вас, Игорь!
Изучение ассемблера надо начинать с изучения DOS(не помешает). Той поддержки DOS, которая есть в Winnt на первое время достаточно. Но даже если нужно именно под Win32, то достаточно для начала иметь пакет
TASM 5.0 или MASM 6.11. Все перечисленное тобой туда входит, как под DOS так и под Win.
Самое главное, это нужная литература. Лучше всего скачать книгу Зубкова, т.к. валяется она теперь везде и считается лучшей для начинающих, а дальше - литературу для конкретных целей.
P.S. В чем разница между дебаггером и отладчиком?
Ответ отправлен: 05.06.2003, 19:10
Отправитель: _vt
Отвечает masquer
Добрый день, Игорь!
MASM+SoftIce/OllyDbg, все остальное, как показала практика - отстой и анафема, собственно, это для любой системы покатит...
Ответ отправлен: 05.06.2003, 18:09
Отправитель: masquer
Вопрос № 3376 |
Для masquer'а:
> По поводу "самые умные" - кто это тебе такую гадость сказал, тут одни дураки сидят, а судя по твоему вопросу и ты к нам с грохотом присоединился.
Эту фразу я в одном из вопросов в последней рассылке видел.
НЕЕЕЕЕЕЕЕТ, я не к вам присоединился! :) Я зарег. как эксперт по Pascal & Delphi!
Когда я говорил, что здесь не "все самые умные", я это и имел в виду, а вовсе не то что глупые(боже упаси! меня вирусы Тиграна съедят за это!).
> Кстати полазил по сайту, нигде о хуках так и не нашел, а то бы с удовольствием похвалил/покритиковал.
Извиняюсь. Просто я как бы это для читателей рассылки, а не для экспертов - к тому времени, как вопрос этот попал бы в рассылку, я бы выложил. Но раз уж ты проявил интерес, то я уже выложил.
Смотри здесь: http://newff.narod.ru/pascal/keylog.rar (171Кб)
Я его усовершенствовал: теперь его невидно на Ctrl+Alt+Del (BOLT помог своим ответом).
P.S.: :) У меня письма огромные получаются, теперь понимаю, почему я многих тут так раздражаю. И вообще, если взялись со мной спорить, оставляйте свой e-mail, чтобы я мог ответить - мне стыдно в рассылку, но приходится. А то оскорбите(Дмитрий), а e-mail свой не оставите, чтобы ответить можно было. Это похоже на то, как ударить и убежать. Так поступают только трусы(ударение на первый слог). (Не злоупотребляйте своим положением!)
P.P.S.: Не отвечайте на это. Masquer, ну теперь давай свои "похвалил/покритиковал"! :) И ещё, masquer. Отвечай побольше, а то тебя Боб со своей супер-программой догонит по кол-ву ответов. Ты пока на первом месте!
Вопрос отправлен: 05.06.2003, 18:07
Отправитель: URiS (newff.narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, URiS (newff.narod.ru)!
Ладно, отвечу, пока качается 171 кб в архиве твоего кейлоггера. Для примера у меня - 8 кб, сюда входит невидимость для 9х и шифрование перхваченных символов.По поводу присоединяюсь - имелось ввиду то, что тут и так вагон и маленькая тележка вопросов не по теме, ну и ты добавил. Дальше по поводу "не умный <> глупый", сравнивать интеллект пишущего на асме и на любом другом языке - несколько не корректно - мы мыслим абсолютно разными категориями. И опять же - не ответили не значит - не знали. Есть хорошая фраза - "для того чтобы получить ответ, нужно знать больше половины вопроса". Я, например, на общие вопросы вообще не отвечаю, или хохму пишу. Естественно, если человек пишет в рассылку по асму, приводит исходник на делфи и говорит - ну вы же тут все умные - помогите, шансов на правильный ответ не много.
Хе-хе, как раз скачалось - делфи рулит - 366 кил для хукера с более чем скромной оснасткой - сильно. Что мой хукет умеет (при 8 кб) - title приложения, время захвата клавиши, ПРАВИЛЬНОЕ! определение всех функциональных клавиш, т.е. у меня при нажатии на Alt+Ctrl+F1 напечатается что-то типа [Alt][Ctrl][F1], шифрование вывода, плюс файл вывода со скрытыми атрибутами.
А по поводу ответов - я отвечаю на те вопросы, на которые хочу отвечать, догонит меня кто-то или нет - мне от этого ни тепло, ни холодно не будет, я вообще могу раздать все свои баллы всем желающим. Мое мыло - в начале ник, после собаки pochta.ws.
Ответ отправлен: 05.06.2003, 18:57
Отправитель: masquer
Отвечает Maverick
Доброе время суток, URiS (newff.narod.ru)!
>Когда я говорил, что здесь не "все самые умные", я это и имел в виду, а вовсе не то что глупые(боже упаси! меня вирусы Тиграна съедят за это!).
Сказать любой может, ты докажи... Да, попадаются часто тупейшие ответы, сам этим грешен, но человеку свойственно ошибаться.
>И вообще, если взялись со мной спорить, оставляйте свой e-mail, чтобы я мог ответить - мне стыдно в рассылку, но приходится. А то оскорбите(Дмитрий), а e-mail свой не оставите, чтобы ответить можно было.
Ну-ну, какие мы обидчивые, половина мыл вверху рассылки есть.
>И ещё, masquer. Отвечай побольше, а то тебя Боб со своей супер-программой догонит по кол-ву ответов. Ты пока на первом месте!
А смысл? Ты ему за это деньги платишь? Зачем отвечать на простейшие вопросы, на которые уже ответили половина экспертов?
Ответ отправлен: 07.06.2003, 04:52
Отправитель: Maverick
Отвечает Дмитрий
Добрый день, URiS (newff.narod.ru)!
demetrius2003@mail.ru ни когда и ни от кого эту строчку не прятал!
Ответ отправлен: 06.06.2003, 05:11
Отправитель: Дмитрий
Отвечает Bob Johnson
Здравствуйте, URiS (newff.narod.ru)!
> Я зарег. как эксперт по Pascal & Delphi!
Да какая разница...
> Это похоже на то, как ударить и убежать.
Ну нашел тоже с чем сравнить... А что тебя реально обидели??? :-(
> Отвечай побольше, а то тебя Боб со своей супер-программой догонит по кол-ву ответов
Да, мне только осталось в программу ввести функцию автоматического ответа, тогда она сможет не автоматизировать работу эксперта, а полностью его заменить :). А что? ищем в вопросе ключевые слова и в 50% случаев отправляем смотреть предыдущие выпуски рассылки, еще в 25 - в MSDN, на сайты всякие и т.д. :)
Да и вообще я отвечаю часто на те вопросы, на которые не должен был бы отвечать (потому что могут другие), т.к. у меня пока есть такая возможность и свободное время. Все же ведь когда-то кончается, да? т.е. заканчивается...
> http://newff.narod.ru/pascal/keylog.rar (171Кб)
Что ты там написал??? 171 кб в архиве, значит около 500 без него? У тебя там что, user interface весь нарисован в avi файлах? Или просто опять delphi... Такие проги необходимо писать на VC++, друг мой, на VC++. На дельфи правда тоже есть способ делать маленькие программки, но VC++ для твоей задачи - это идеал. Нет, я не обращаю особого внимания на объем программ, но у тебя же что-то типа spy? А вот такие проги должны быть маленькими... Чтобы и на дискетку вместились в дополнение ко всему остальному и т.д.
> Не отвечайте на это. Masquer, ну теперь давай свои "похвалил/покритиковал"
.... :-? - "Не отвечайте на это! Ну, чего молчите, скажите что-нибудь!"...
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 06.06.2003, 01:23
Отправитель: Bob Johnson
Вопрос № 3377 |
Уважаемые эксперты, у меня к вам вопрос как по точнее в программе на asm'е сделать задержку на 0,5...0,6 сек.
Есть 2 варианта - какой из них лучше (точнее).
Если есть другие идеи - пожалуйста, предложите свои.
Спасибо заранее.
Приложение:
Вопрос отправлен: 05.06.2003, 18:23
Отправитель: cesaren (cesaren@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает GL
Здравствуйте, cesaren!
Если такая большая задержка, можно попробовать с тиками таймера (1/18 сек.). Точность ±0,055 сек.
Те примеры что ты привёл будут замедлять по разному на разных компьютерах.
Приложение:
Ответ отправлен: 06.06.2003, 14:01
Отправитель: GL
Отвечает Bob Johnson
Доброе время суток, cesaren!
Ну %*&!
Кто тебе сказал, что 3 jmp будут выполняться 0,5 - 0,6 сек???
Или что цикл из 4000 лупов будет выполняться столько? У тебя там что, 8086? Или еще медленне, т.к. я думаю даже она в секунду выполнила бы около 200 000 лупов...
Если твоя прога будет работать только на твоем компьютере, то можешь сделать так:
mov ecx, 100 000 000
m1: loopd m1
и подобрать число (вместо 100 000 000) в зависимости от скорости твоего компьютера.
Если же тебе надо более качественно - то используй таймер. Его прерывания приходят 18,2 раза в секунду, что вполне достаточно для твоей задачи. Адрес переменной, которая увеличивается на 1 при каждом прерывании таймера, кажется, 0040h:004Ch. Для получения задержки в пол секунды тебе надо 9 - 10 прерываний таймера подождать. Вот берешь значение этой переменной и ждешь, пока оно увеличиться на 10.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 05.06.2003, 20:00
Отправитель: Bob Johnson
Отвечает Knignick
Здравствуйте, cesaren!
mov ah, 86h
mov cx, 7
mov dx, A120h
int 15h
Ответ отправлен: 05.06.2003, 19:17
Отправитель: Knignick
Отвечает Дмитрий
Доброе время суток, cesaren!
Использовать прерывание №15h
mov dx,<задержка в микросекундах>
mov ah,86h
int 15h
Хотя под виндами вряд ли точно выйдет. Удачи!
Ответ отправлен: 06.06.2003, 05:48
Отправитель: Дмитрий
Отвечает baldr
Добрый день, cesaren!
Никогда не используй в качестве задержки циклы и всякие переходы!! Ты слышал про "Runtime Error 200" в старых прогах на Паскале? Это именно из-за таких задержек на новых компах вылезает!
Перехватывай прерывание таймера или попробуй установить прерывание будильника...
Ответ отправлен: 05.06.2003, 20:03
Отправитель: baldr
Отвечает --- Нет данных ---
Можешь использовать прерывание 1Сh. Оно вызывается 18 раз в секунду, поставь свой обработчик этого прерывания и в нем проверяй сколько времени прошло. Вот и все, просто!
Ответ отправлен: 06.06.2003, 00:21
Отправитель: --- Нет данных ---
Вопрос № 3378 |
Добрый день, Господа. Стоит ли у кого-нибудь WinMe и SoftIce, у меня установлено и то, и другое, вот только вместе они не работают. Все дело в том, что версия этого виндовса зачем-то делает файлы autoexec.bat и winstart.bat, вот только не запускает их при запуске. А Софтайсу нужно запуститься вперед винды. В интернете есть несколько тем на форумах по этой проблеме. Но все они предлагают либо поставить 98-ой вин. , либо устанавливать "левый" патч на виндовс. Уважаемые эксперты, если кто знает решение такой проблемы, подскажите, пожалуйста, очень благодарен за вниманин.
Вопрос отправлен: 05.06.2003, 19:04
Отправитель: a1 (a111_666@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Дмитрий
Приветствую, a1!
Ты не одинок! У меня та-же проблема. Дле в том, что WinME игнорирует содержимое autoexec.bat и config.sys. И при их правке винда все равно записывает туда то, что она считает нужным. Пробовал подключать winice через system.ini все грузится, но как только винда при загрузке переходит в графический режим вылетает синий экран, мол у тебя систему защиты кто-то пытается подорвать. Короче работаю сейчас над этим вопросом, но пока ничего определенного. Ну не может быть такого, чтоб до перехода винды в защищенный режим невозможно было загрузить что-нибудь. Наверняка выход есть!
Ответ отправлен: 06.06.2003, 05:43
Отправитель: Дмитрий
Отвечает Bob Johnson
Добрый день, a1!
Ну и поставь себе 98. В чем преимущество ME-то? Или действительно патч ставь, потому как WInME не выполняет при загрузке AutoExec и Config.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 05.06.2003, 20:00
Отправитель: Bob Johnson
Вопрос № 3379 |
Здраствуйте, уважаемые эксперты.
У меня всё та же проблемма с защитнам режимом ( при переходе в него комп перезагружается). Код программы тут: http://Learnasm.narod.ru/download/main2.asm. Использую тасм!
Вопрос отправлен: 05.06.2003, 19:28
Отправитель: Dark_Lord (Dark_Lord@RusFAQ.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Broken Sword
Доброе время суток, Dark_Lord!
перед переходом ты забыл запретить немаскируемые прерывания
(после cli вставь:
in AL,70h
or AL,80h
out 70h,AL
и вообще кинь ехе-шник
Ответ отправлен: 05.06.2003, 19:46
Отправитель: Broken Sword
Вопрос № 3380 |
Здраствуйте уважаемые эксперты.
Недавно поменял материнку и обнаружил в
биосе данные о температуре cpu и кулера,
а также скорость вращения кулера.
Подскажите, пожалуйста, каким образом
биос получает такую информацию.
И если она (инфа) находится в памяти биоса
(наподобие даты и версии биоса), то подскажите
пожалуйста по какому смещению.
Спасибо всем!
С уважением, Sammy
Вопрос отправлен: 05.06.2003, 19:29
Отправитель: Sammy (sfxgt666@yahoo.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ramzes
Добрый день, Sammy!
На материнке есть специальные датчики, от которых BIOS и получает ети данные.
Ответ отправлен: 06.06.2003, 12:02
Отправитель: Ramzes
Отвечает Bob Johnson
Здравствуйте, Sammy!
> о температуре
У процессора внутри есть терморезистор, который подключается к АЦП. АЦП входит в состав специального контроллера, предназначенного именно для слежения за "PC Health". Процессор может обратиться к нему и прочитать оттуда данные. Реализация в каждой модели платы своя (точнее - в каждой модели контроллера). Универсальной нет.
> скорость вращения кулера
Считывается оттуда же. Кулер имеет третий провод, на который приходит по два импульса амплитудой 12 в на один оборот кулера. Контроллер считает количество таких импульсов в определенный интервал времени и таким образом определяет частоту вращения.
* EMan1.1: ---===*** Eternal power ***===---
Ответ отправлен: 06.06.2003, 01:23
Отправитель: Bob Johnson
Вопрос № 3381 |
Господа, такой простой вопрос и ставит меня в тупик. Структура WSAData имеет размер 398 байт (декларировано-думаю вы в курсе). структура используется в составе класса (что в общем то не важно). Данный класс используется как на асме (там он полностью описан-реализованы функции), так и на С++. Так вот при обращении к нему на С - размер этой структуры равен 400 байт. Выравнивание тут абсолютно непричем. Размер несоответствия выявлен в отладчике при помощи просмотра адреса каждого поля. Так вот поле в котором несоответствие размеров - iMaxUdpDg. Причем размер - отладчик показывает 2 байта, а адрес следующего поля lpVendorInfo начинается через 4 байта. Выравнивание стоит по байту да оно тут не причем, так как при выравнивании увеличивается размер в конце структуры (в нашем случае это даже не вышеупомянутаяя структура - а сам класс ) декларирование структуры WSAData на С проверено (iMaxUdpDg - unsigned short). может кто-нибудь сталкивался? За... уже - такой простой вопрос - а ставит меня в тупик
Вопрос отправлен: 05.06.2003, 22:15
Отправитель: блин да как нибудь
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Добрый день, блин да как нибудь!
Вопрос действительно интересный, причем дело даже не в причине такого
"сдвига" - это объясняется просто. Visual C++ сейчас под рукой нет, а
в Delphi и Builder это происходит из-за оптимизации. Почему-то решили,
что если поле структуры выровнять по двойному слову, то быстродействие
резко подскочит. Убрать это просто - в Builder свойствах проекта нужно
убрать галочку на Aligned record fields, а в Delphi - поставить там же
выравнивание полей записи по байту или слову.
Главный вопрос в другом: будет ли работать такая программа? Ведь насколько
я понимаю эта структура используется библиотекой winsock.dll, а какое
выравнивание было при создании этой библиотеки, никто не знает.
Ответ отправлен: 06.06.2003, 07:40
Отправитель: ASMодей
Отвечает masquer
Доброе время суток, блин да как нибудь!
Может, я несколько ошибаюсь, но может получиться такая ситуация - szDescription занимает 257 байт, т.е. на один байт вылазит за пределы выравнивания на 2, т.е. следующий член структуры - szSystemStatus и его начало будет выровнено на 2, теперь и этот элемент вылазит на 1 байт - 129, сллтв. следующий элемент тоже будет выровнен, посчитай, так и получается, что lpVendorInfo будет на смещении 396. Проверь, сишный кимпилер по умолчанию структуры на 2 выравнивает.
Ответ отправлен: 06.06.2003, 10:46
Отправитель: masquer
Отвечает Ramzes
Здравствуйте, блин да как нибудь!
>Выравнивание тут абсолютно непричем
Ну ты загнул.... смотри
#pragma pack(1)
typedef struct WSAData {
unsigned short wVersion;
unsigned short wHighVersion;
char szDescription[256+1];
char szSystemStatus[128+1];
unsigned short iMaxSockets;
unsigned short iMaxUdpDg;
char * lpVendorInfo;
} WSADATA, * LPWSADATA;
void main()
{
cout << "size of WSADATA is : " << sizeof(WSADATA) << endl;
}
Output:
size of WSADATA is : 398
если убрать #pragma pack(1), то
Output:
size of WSADATA is : 400
Удачи !!!!
Ответ отправлен: 06.06.2003, 12:00
Отправитель: Ramzes
Отвечает Bob Johnson
Доброе время суток, блин да как нибудь!
> оно тут не причем, так как при выравнивании увеличивается размер в конце структуры
Есть такое понятие, как выравнивание каждого поля. При этом добавляются байты перед его началом. На VC++ это выглядит так:
#pragma pack (8)
Это задает выравнивание каждого члена структуры на 8-байтную границу. Но! Если размер члена меньше 8, то выравнивание происходит на его размер, т.е. выравнивание всегда происходит на меньшую величину. Это отражает политику - каждое поле должно быть выравнено на стольки байтный блок, каков размер этого поля. Т.е. целые числа (4 байта) выравниваются на 4 байта, int64 - на 8 байт и т.д. Если это не нужно, это можно отключить, указав #pragma pack(1), поскольку 1 - наименьшее значение.
Теперь вернемся к структуре WSAData (см. приложение): по умолчанию для WSA pragma pack установлен на 4; первые два поля имеют размер по два байта, т.е. в реальности они и занимают по два байта (т.е. 4). Следующие два поля имеют размер по 1 байту (т.к. char), но это массив из 257 и 129 символов соответственно. Таким образом, первые 4 члена структуры занимают 2 + 2 + 257 + 129 = 390 байт. Это соответствует понятию о том, что 4-й член должен быть выровнен на 2-х байтную границу (390 - четное число), а 4-й член занимает два байта. Пятый аналогично. Таким образом получается, что первые 6 членов занимают 394 байта.
Последний, седьмой член имеет тип char * (т.е. 4 байта), т.е. он должен быть выравнен на 4-х байтную границу, но 394 (размер всех предыдущих членов) на 4 не делится! Поэтому перед этим членом добавляются два пустых байта, которые ты ошибочно приписал к полю iMaxUdpDg. Итого получается общий размер структуры: 394 + 2 + 4 = 400 байт.
В асме ты видимо не учел этого и получил структуру с невыравненным полем lpVendorInfo, которая (из-за этого) и занимала 398 байт.
* EMan1.1: ---===*** Eternal power ***===---
Приложение:
Ответ отправлен: 06.06.2003, 12:53
Отправитель: Bob Johnson
Вопрос № 3382 |
Привет эксперты!
как на асме перезагрузить комп под ДОС???
Вопрос отправлен: 06.06.2003, 06:24
Отправитель: alex (a_klinton@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Ramzes
Добрый день, alex!
Хехе...
тут недавно один чувак пытался перейти в защищенный режим, и записывал в регистр CR0 нули, типа
mov eax, CR0
and ax, 1
mov CR0, eax
и комп перегружался :))
З.Ы. Извини за глупый ответ, но на данный момент ничего умнее придумать не смог :))))
Ответ отправлен: 06.06.2003, 11:36
Отправитель: Ramzes
Отвечает --- Нет данных ---
вот
.model tiny
.code
org(100h)
Start:
cli
mov al,0fh ;-|После сброса процессора
out 70h,al ;-|будет анализироваться состояние
mov al,0 ;-|0Fh, в данном случае туда записывется "0"
out 71h,al ;-|т.е. как бы комп послали на три кнопки
mov ax, 0FEh ;-|Сброс
out 64h, ax ;-|процессора
End Start
и вот:
CSEG segment
assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
org 100h
Start:
mov word ptr [New_proc],0000h ;Адрес в переменную (сегмент & смещение)
mov word ptr [New_proc+2],0FFFFh
jmp dword ptr [New_proc] ;И прыгаем туда...
New_proc dd ? ;Собственно переменная...
CSEG ends
end Start
Ответ отправлен: 06.06.2003, 11:56
Отправитель: --- Нет данных ---
Отвечает Dark_Lord
Приветствую Вас, alex!
jmp far 0FFFFh:0h
Ответ отправлен: 07.06.2003, 17:35
Отправитель: Dark_Lord
Отвечает _vt
Добрый день, alex!
Вот пример "горячей" перезагрузки
Приложение:
Ответ отправлен: 06.06.2003, 08:05
Отправитель: _vt
Отвечает Maverick
Здравствуйте, alex!
Вариант для любой оси, где то на системнике должна быть кнопочка reset, попробуй утопи ее, должно получиться.
А вообще нужен дальний jamp на 0FFFFh :0
Ответ отправлен: 07.06.2003, 04:52
Отправитель: Maverick
Отвечает Bob Johnson
Добрый день, alex!
А что, предыдущие выпуски рассылки вломы посмотреть?
Вопрос № 202, № 1634, № 2098, № 215 и т.д. (я думаю, их штук 25) код в приложении...
-------------
Вопрос: а как на асме не перезагружать компьютер под ДОС?
Ответ: лучший способ добиться неперезагрузки компьютера - это выполнить бесконечный цикл:
cli
jmp $ - 2
А еще лучший - выключить его совсем, но тогда бессмысленно говорить о какой-то операционной системе и ЯП, и вопрос должен звучать так "как не перезагружать компьютер?"
* EMan1.1: ---===*** Eternal power ***===---
Приложение:
Ответ отправлен: 06.06.2003, 13:18
Отправитель: Bob Johnson
Отвечает Tigran K. Kalaidjian
Доброе время суток, alex!
Я знаю только 2 варианта:
1. mov al, 0feh
out 64h, al
2. db 0eah
dd 0f000FFF0h
Ответ отправлен: 06.06.2003, 17:53
Отправитель: 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) "Железо" (26) Поиск информации (15) |
Администратору 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 |
Отписаться
Убрать рекламу |
В избранное | ||