Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 421
от 20.11.2002, 17:00
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 1879 Отправлено ответов: 5857 Активность: 311.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Bob Johnson Статус: Профессиональный Общий рейтинг: 155.4 [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 152.14 [Подробней >>] |
Ayl Статус: Профессиональный Общий рейтинг: 117.41 [Подробней >>] |
Maverick Статус: Опытный Общий рейтинг: 136.53 URL: Задачи по ассемблеру Телефон: 89039415024 (BiLine GSM) [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 130.2 URL: моя рассылка по Protected Mode [Подробней >>] |
Dark_Lord Статус: Профессиональный Общий рейтинг: 125.85 [Подробней >>] |
keleb-glin Статус: Начальный Общий рейтинг: 118.18 [Подробней >>] |
ASMодей Статус: Профессиональный Общий рейтинг: 120.2 [Подробней >>] |
GL Статус: Опытный Общий рейтинг: 104.06 [Подробней >>] |
LIFO Статус: Профессиональный Общий рейтинг: 127.21 URL: наш сайт Телефон: 8 01710 24758 [Подробней >>] |
Gibbel Статус: Профессиональный Общий рейтинг: 108.45 URL: Страничка обо мне и моих друзьях [Подробней >>] |
Portnov Статус: Профессиональный Общий рейтинг: 117.28 URL: Мой сайтик... [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 1815. Broken sword, отправь и мне сырец с издевками над таймером, пожалуйста. Нельзя ли вместо call Next N... (ответов: 5)
Вопрос № 1816. У меня проблема - я учусь програмировать на встроеном в Delphi Ассемблере и мне надо написать програ... (ответов: 1)
Вопрос № 1817. Здравствуйте Эксперты ! Как запросить и ввести дата в формате "дд/мм/гг" используя функции... (ответов: 5)
Вопрос № 1818. Здравствуйте Эксперты ! Напишите процедуру для установки курсора, начинающегося на 5-й линии сканиро... (ответов: 4)
Вопрос № 1819. Здравствуйте Эксперты ! Напишите две команды для инициализации регистра DS, пологая, что имя сегмент... (ответов: 3)
Вопрос № 1820. Здравствуйте masquer я по вопросу № 1814 думаете я зря просил пример??? пишу типа такого CSEG seg... (ответов: 1)
Вопрос № 1821. -=В РАССЫЛКЕ МОЖНО НЕ ПУБЛИКОВАТЬ ЧТОБЫ НЕ ЗАСОРЯТЬ=- Здравствуйте товарищи ассемлерцики! Скажите p... (ответов: 1)
Вопрос № 1822. Привет. Вопрос ,опять только тебе, тут прога на Visual Basic. Чем ты обычно их взламываешь.... (ответов: 1)
Вопрос № 1823. Здравствуйте уважаемые эксперты! Почему в masm32 не работает способ определения длины кода: Len equ ... (ответов: 2)
Вопрос № 1824. Всем привет. Я тут начал вот MASM32 изучать и наткнулся на некоторые проблемы, а именно: 1. Я исполь... (ответов: 1)
Вопрос № 1826. Здравствуйте эксперты! Появилась у меня такая проблема! Может кто сталкивался и знает как ее решать.... (ответов: 4)
Вопрос № 1827. Господа эксперты! У кого есть документация по работе с IDE контролерами, какие команды и т.д. Поиско... (ответов: 1)
Вопрос № 1828. Здравствуйте ! Кто поможет с информацией по написанию драйверов под NT (Kernel mode). Кроме MSDN...... (ответов: 2)
Вопрос № 1829. Уважаемые эксперты. Нужна консультация по TASM 5.01 Пишу я программу, компилирую её, но ТАСМ32 отказ... (ответов: 1)
Вопрос № 1830. Не работает SoftIce под XP(или руки кривые?) Ставлю бряк: bpx MessageBoxA Выхожу - запускаю прогу(на... (ответов: 4)
Вопросов: 15, ответов: 36
Вопрос № 1815 |
Broken sword, отправь и мне сырец с издевками над таймером,
пожалуйста.
Нельзя ли вместо
call Next
Next:
pop di
писать
lea Next,di?
Вопрос отправлен: 15.11.2002, 17:06
Отправитель: DyC
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, DyC!
НЕТ... Вообще приведенный тобой кусок кода НЕЗАМЕНИМ, когда программа НЕ знает, по какому адресу она находится в памяти (вирус, напр). Потому что call использует относительное смещение, относительно следующей команды, т.е. оно всегда известно.
А вот lea Next, di - это вообще что? Как можно эффективный адрес загружать в память? Первый операнд - только регистр, второй - адрес в памяти. Вот так можно:
lea di, [Next] - но тогда необходимо ОБЯЗАТЕЛЬНО знать адрес метки Next - а он не известен, т.е. пришли к тому, где начинали.
Ответ отправлен: 16.11.2002, 19:32
Отправитель: Bob Johnson
Отвечает masquer
Здравствуйте, DyC!
Нельзя. Такой код (дельта-офсет) используется для кода, который будет внедряться в другой код (вирусы, например), т.е. адрес внедрения неопределен. А компилятор вместо твоего Next подставит твой реальный адрес, которые естественно будет не совпадать с новым адресом после внедрения. Доступно объяснил?
Ответ отправлен: 15.11.2002, 17:53
Отправитель: masquer
Отвечает Ayl
Здравствуйте, DyC!
lea Next, di - это что такое?
А lea di, Next писать нельзя, потому что нам нужно динамическое получение адреса, а lea di, Next выполнит статическое связывание.
Ответ отправлен: 15.11.2002, 18:42
Отправитель: Ayl
Отвечает Maverick
Доброе время суток, DyC!
МОЖНО.
Отправляйте вопрос лично экспертам.
Ответ отправлен: 16.11.2002, 10:03
Отправитель: Maverick
Отвечает Broken Sword
Здравствуйте, DyC!
насчет издевок над таймером - это я погорячился... ) там у меня в лабе не на портах висит delay, а на 1Ch :)
Насчет "можно ли", во первых, ты перепутал Next и DI местами, а во-вторых - тебе уже ответили совершенно верно, что "этот кусок кода незаменим" и все пр., но насколько я помню, этот кусок из того примера, присланного Maverick-ом, а там подразумевается, что вирь находится В НАЧАЛЕ COM-ника, а т.к. это всегда - 100h, то в данном конкретно случае заменить МОЖНО, и даже еще лучше - mov offset-ом (так короче)
Ответ отправлен: 17.11.2002, 00:53
Отправитель: Broken Sword
Вопрос № 1816 |
У меня проблема - я учусь програмировать на встроеном в Delphi Ассемблере и мне надо написать программу: чтобы можно было в pcm-файл вставлять какой-нибудь текст (так называемые "водяные знаки"), а я не представляю как это делать! помогите хоть чем!
спасибо!
Вопрос отправлен: 15.11.2002, 17:29
Отправитель: Алекс (Piero_S@tut.by)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Добрый день, Алекс!
Водяные знаки подразумевают, что текст скрытый должен быть, не так ли? Поэтому тебе прийдется написать какую-нибудь систему шифрования, так чтобы все нормально читалось только с этим текстом. И для этого необязательно ассемблер применять.
Ответ отправлен: 15.11.2002, 17:56
Отправитель: masquer
Вопрос № 1817 |
Здравствуйте Эксперты !
Как запросить и ввести дата в формате "дд/мм/гг" используя функции дос.
Программма под DOS
Вопрос отправлен: 15.11.2002, 18:11
Отправитель: Биржа
[Следующий вопрос >>] [Список вопросов]
Отвечает Dark_Lord
Здравствуйте, Биржа!
Используйте int 1Ah с ах=4, в сх будет возвращён год, в dh месяц, а в dl день, формат BCD
Ответ отправлен: 19.11.2002, 19:14
Отправитель: Dark_Lord
Отвечает keleb-glin
Здравствуйте, Биржа!
Для этого рекомендую воспользоваться 04h функцией прерывания 1ah. Это прерывание предназначено для работы с дата-временными настройками CMOS. Функция выдаёт результат в таком виде:
ah = 0
ch - век
cl - год
dh - месяц
dl - день ( всё в BCD - сейчас объясню )
carry flag = 1, если часы временно недоступны.
BCD - формат хранения десятичных чисел. Число в этом формате - шестнадцатиричное число, по запись совпадающее с десятичным и ему соответствующее. Т.е. если сейчас 14-е число, в dl будет 14h, а не 0Eh.
Ответ отправлен: 15.11.2002, 22:59
Отправитель: keleb-glin
Отвечает Bob Johnson
Добрый день, Биржа!
Думаю, что только ручками разбирать введенную строку и также выводить самому в нужном формате.
Ответ отправлен: 16.11.2002, 19:32
Отправитель: Bob Johnson
Отвечает ASMодей
Приветствую Вас, Биржа!
Насколько я знаю - никак. Придется писать ручками или использовать
готовые библиотеки функций (но их еще нужно найти).
Ответ отправлен: 16.11.2002, 16:42
Отправитель: ASMодей
Отвечает Ayl
Добрый день, Биржа!
Вызываешь функцию ввода строки, а потом ее разбираешь. Если не подходит по формату - можешь запросить заново.
Либо посимвольно вводить.
Стандартной функции нет.
Для ввода строки символов можно использовать функцию 0Ah прерывания 21h
Ответ отправлен: 15.11.2002, 18:46
Отправитель: Ayl
Вопрос № 1818 |
Здравствуйте Эксперты !
Напишите процедуру для установки курсора, начинающегося на 5-й линии сканирования и заканчивающегося на 12-й линии
Программма под DOS
Вопрос отправлен: 15.11.2002, 18:11
Отправитель: Николай
[Следующий вопрос >>] [Список вопросов]
Отвечает GL
Доброе время суток, Николай!
А зачем писать какую-то процедуру?
Есть ведь функция 1h прерывания 10h.
mov ah,1
mov cx,0512h
int 10h
Ответ отправлен: 16.11.2002, 13:25
Отправитель: GL
Отвечает Maverick
Доброе время суток, Николай!
Хмм, напишите...
Напишите, что вам непонятно при написании данной процедуры и вам помогут.
Ответ отправлен: 16.11.2002, 09:04
Отправитель: Maverick
Отвечает Ayl
Здравствуйте, Николай!
Прерывание 10h
Функция 01h
Параметры:
AH = 01h
CH = 5
CL = 12
Ответ отправлен: 15.11.2002, 18:49
Отправитель: Ayl
Отвечает keleb-glin
Приветствую Вас, Николай!
Я тут попытался представить курсор, начинающийсы на пятой строке и заканчивающийся на двенадцатой, но не смог. Ты немного некорректно задал вопрос, но если ты имел в виду, как установить курсор в определённое место экрана, тогда есть функция 2h прерывания 10h. Перед вызовом ты должен запихнуть в dh номер строки, а в dl - номер столбца ( нумерация с нуля ). Например:
mov ah, 2h
mov dx, 0400h
int 10h
Это выставит курсор на начало пятой строки.
Ответ отправлен: 16.11.2002, 18:37
Отправитель: keleb-glin
Вопрос № 1819 |
Здравствуйте Эксперты !
Напишите две команды для инициализации регистра DS, пологая, что имя сегмента данных DATSEG.
Программма под DOS
Вопрос отправлен: 15.11.2002, 18:11
Отправитель: Дмитрий
[Следующий вопрос >>] [Список вопросов]
Отвечает keleb-glin
Приветствую Вас, Дмитрий!
Если тебе нужны две строчки, вот они:
mov bx, DATASEG
mov ds, bx
При этом в assume надо указать, что ds:DATASEG. А также объявить сам DATASEG:
DATASEG segment
db 'data'
DATASEG ends
Ответ отправлен: 16.11.2002, 19:52
Отправитель: keleb-glin
Отвечает Maverick
Здравствуйте, Дмитрий!
assume ds:datseg
Ответ отправлен: 16.11.2002, 09:04
Отправитель: Maverick
Отвечает Ayl
Добрый день, Дмитрий!
Вариант 1 (для любого процессора):
mov ax, seg DATSEG
mov ds, ax
Вариант 2 (286+):
push seg DATSEG
pop ds
Второй вариант короче на 1 байт
Ответ отправлен: 15.11.2002, 18:52
Отправитель: Ayl
Вопрос № 1820 |
Здравствуйте masquer я по вопросу № 1814
думаете я зря просил пример??? пишу типа такого
CSEG segment
org 100h
Begin:
invoke ExitWindowsEx,EWX_SHUTDOWN,NULL
CSEG ends
end Begin
ну и как догодались все придирается к
invoke ExitWindowsEx,EWX_SHUTDOWN,NULL
P.s. ну это конечно не весь код ...
Вопрос отправлен: 15.11.2002, 19:47
Отправитель: lamachok (lamachok@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Доброе время суток, lamachok!
Дык "хто ж так пишет"? Для виндов программа несколько не так оформляется
.386
.model flat, stdcall
option casemap :none
include masm32includewindows.inc
include masm32includeuser32.inc
include masm32includekernel32.inc
includelib masm32libuser32.lib
includelib masm32libkernel32.lib
.data
...
.code
start:
...
end start
Ответ отправлен: 18.11.2002, 13:39
Отправитель: masquer
Вопрос № 1821 |
-=В РАССЫЛКЕ МОЖНО НЕ ПУБЛИКОВАТЬ ЧТОБЫ НЕ ЗАСОРЯТЬ=-
Здравствуйте товарищи ассемлерцики! Скажите pls где бы мне качнуть книжку по в нете или какойнить такой документ где был бы сборник задач для асема. Ну тоесть просто мелкие задачки на математику, программинг, смекалку, оптимизацию и просто интересные задачки, не примитивные но и не слишком сложные... не могу найти задачничка никак.. А так было бы очень удобно тренироваться
Вопрос отправлен: 15.11.2002, 19:53
Отправитель: Эдвард Самохвалов (zeleniy_kot@yahoo.com)
[Следующий вопрос >>] [Список вопросов]
Отвечает Maverick
Доброе время суток, Эдвард Самохвалов!
На моей ссылке вверху рассылки RusFAQ можно подписаться на рассылку "Задачи по ассемблеру".
http://subscribe.ru/catalog/comp.soft.prog.asmtasks
Пропихну в рассылку, может еще кому надо...
Ответ отправлен: 16.11.2002, 09:04
Отправитель: Maverick
Вопрос № 1822 |
Привет. Вопрос ,опять только тебе, тут прога на Visual Basic. Чем ты обычно их взламываешь.
Вопрос отправлен: 15.11.2002, 20:22
Отправитель: mud (mudvayne@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, mud!
SmartCheck+SoftIce. Я обычно ничего не взламываю, это называтеся reverse engeneering, это несколько разные вещи :))
Ответ отправлен: 18.11.2002, 13:43
Отправитель: masquer
Вопрос № 1823 |
Здравствуйте уважаемые эксперты! Почему в masm32 не работает способ определения длины кода: Len equ $ - Start? Если точнее, то при попытке использовать Len компилятор выдает сообщение, что символ не определен. Подскажите, как можно это сделать? Заранее благодарен.
Вопрос отправлен: 15.11.2002, 22:16
Отправитель: axydas
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, axydas!
Все замечательно работает. Может ты где-то еще ее определяешь?
Ответ отправлен: 18.11.2002, 13:45
Отправитель: masquer
Отвечает ASMодей
Приветствую Вас, axydas!
Вообще-то все работает (проверил на всех имеющихся версиях
TASM и MASM). Значит ошибка где-то в программе, может регистр
букв изменил или еще что-нибудь, без исходника не разберешь.
Ответ отправлен: 16.11.2002, 16:42
Отправитель: ASMодей
Вопрос № 1824 |
Всем привет. Я тут начал вот MASM32 изучать и наткнулся на некоторые проблемы, а именно:
1. Я использую диалоговое окно из ресурсов как главное. Как мне убрать с него caption & border навсегда. А ещё лучше сделать рамочку в 1 пиксель вокруг окна. Я использую RedASM и там в редакторе диалогов всё выглядит ОК (свойство диалога Border = Boarder), но после asm&link получаем обычное окно с заголовком и бордером... В чём тут дело и екаки есть ещё пути сделать ТАКОЕ окно?
2. Как мне дописать в конец ехе-файла некоторую информацию (из другой программы), а потом запустив тот ехе-файл, в который писали прочитать то, что в него было дописано. Кажется понятно написал =)
Любые примеры, в тч исходники приму с радостью. Заранее всем спасибо... Ответы можно на мыло - tosha@bratan.ru
Вопрос отправлен: 16.11.2002, 00:25
Отправитель: ToSHA (tosha@bratan.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Приветствую Вас, ToSHA!
1. В диалоге стили пропиши соответствующие
WS_VISIBLE | WS_POPUP | WS_BORDER
2. Совсем непонятно. Все возможно, только проблема в реализации, учи формат РЕ.
Ответ отправлен: 19.11.2002, 11:06
Отправитель: masquer
Вопрос № 1826 |
Здравствуйте эксперты!
Появилась у меня такая проблема! Может кто сталкивался и знает как ее решать.
В общем, что-то случилось с TD5.0:
1) Он не запускается в полноэкранном режиме, экран становится черным и ничего не происходит, после нажатия на любую клавишу, вижу снова Рабочий стол, с мышкиным курсором, но он не движеться, хотя, мышка работает, можно в слепую потыкать куда-нибудь.:)
2) После запуска его в оконном режиме и завершения работы с ним, происходит следующее, ни одна ДОС программа не запускается, будь то Tasm,Tlink,Bp или еще что-то. Появляется окошко программы с надписью, "программа выполнила не допустимую операцию и будет закрыта", при желании можно посмотреть по какому адресу это произошло.:)
После чего это случилось, не знаю, как-то не смог отследить сей момент.:( Пробовал устанавливать Tasm заново, тот же косяк.:( Наверное дело в Винде(98se), но в чем именно?
В общем, к багу с мышкой, когда я проводил в полноэкранном режиме по экрану и после курсора оставались мигающие прямоугольнички добавился еще один.:(
----
Если кому поможет, то видяха у меня GeForce2MX-200.
PS: Сорри, что в эту рассылку, как-то больше она подходит для вопроса, чем Windows95/98/Me - Пользователю, программы специфические.:)
--
С уважением, ILYA D.
Вопрос отправлен: 16.11.2002, 01:06
Отправитель: ILYA D.
[Следующий вопрос >>] [Список вопросов]
Отвечает LIFO
Здравствуйте, ILYA D.!
Попробуй запускать с Dos Navigator'а . У меня так бывает, если с Far'a запускать.
если не получится, то выход все равно есть - ты знаешь какой:)
Ответ отправлен: 16.11.2002, 21:03
Отправитель: LIFO
Отвечает Bob Johnson
Здравствуйте, ILYA D.!
1. Проверь на вирусы. Может быть вирус подхватил.
2. Посмотри свойства ярлыка для запуска TD - все ли там ОК, если что - попробуй вначале запустить что-то типа нортона и уже из него TD.
3. Проверь драйвера видеокарты - может имеет смысл поставить новые? Поставь версии 29.40 - вполне нормальные.
Ответ отправлен: 17.11.2002, 23:45
Отправитель: Bob Johnson
Отвечает Maverick
Здравствуйте, ILYA D.!
Мда, глобальный баг :)
Мож ответ и тупой, но я бы переставил винду.
Ответ отправлен: 16.11.2002, 09:05
Отправитель: Maverick
Отвечает ASMодей
Добрый день, ILYA D.!
Попробуй переустановить драйверы видюхи, а если не поможет,
то и всю винду. Больше я вряд ли что-то посоветую.
Ответ отправлен: 16.11.2002, 16:43
Отправитель: ASMодей
Вопрос № 1827 |
Господа эксперты!
У кого есть документация по работе с IDE контролерами, какие команды и т.д. Поисковиком пользоваться умею.
Вопрос отправлен: 16.11.2002, 03:16
Отправитель: USA (usa-lesh@yandex.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает ASMодей
Доброе время суток, USA!
Раз умеешь, то вперед - ищи сайты с документацией, такие как
например www.wasm.ru, www.interface.ru, document.newmail.ru,
www.rusdoc.df.ru.
Ответ отправлен: 16.11.2002, 16:43
Отправитель: ASMодей
Вопрос № 1828 |
Здравствуйте !
Кто поможет с информацией по написанию драйверов под NT (Kernel mode). Кроме MSDN...
Вопрос отправлен: 16.11.2002, 12:05
Отправитель: Magpie
[Следующий вопрос >>] [Список вопросов]
Отвечает --- Нет данных ---
Доброе время суток, Magpie!
DDK + Soft+Ice + Numega Driver**** = RULEZ
Ответ отправлен: 18.11.2002, 13:43
Отправитель: --- Нет данных ---
Отвечает masquer
Здравствуйте, Magpie!
Кроме MSDN есть еще DDK и сайты, этому посвященные. Если что-то конкретно нужно, спрашивай - может кто-то из экспертов сможет ответить.
Ответ отправлен: 18.11.2002, 13:48
Отправитель: masquer
Вопрос № 1829 |
Уважаемые эксперты. Нужна консультация по TASM 5.01 Пишу я программу, компилирую её, но ТАСМ32 отказывается работать с ней. Компилирую так:
tasm32 /m /ml reboot.asm
tlink32 /Tpe /aa /c reboot.obj
Инклуды содержат следующее:
user32.inc:
includelib import32.lib
extrn ExitWindowsEx:near
kernel32.inc:
includelib import32.lib
extrn ExitProcess:near
При компиляции ассемблер пишет следующие строки:
32loader error: 'D:TASMBINTASM32.EXE'
Invalid import references:
- module 'kernel32.dll' entrypoint 'IsDBCSLeadByteEx'
Do you want to attempt running this program (Y/N)?
При попытке продолжить работу (Y) выдаётся ещё одно сообщение:
32loader runtime error:
Unresolved Import entry called at 0040118E
Объектный файл при этом не создаётся.
Пробовал заменить файл Import32.lib - без толку.
В чём может быть дело? Другие программы компилируются нормально, в том числе и содержащие кусок кода, приведённый ниже.
P.S.: Андрей, интересующийся программированием параллельного порта - сбрось мне письмо на s_man80@inbox.ru, и я вышлю тебе документацию по программированию параллельного порта.
Приложение:
Вопрос отправлен: 16.11.2002, 13:57
Отправитель: Джамаль (s_man80@inbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Bob Johnson
Добрый день, Джамаль!
У меня были проблемы, но не с TASM, а с TLINK32 - когда я пытался сделать прогу, в которой был пустой сегмент данных. Может быть у тебя - похожая ситуация. Хотя мой TASM (5.3) твою программу вполне нормально откомпилировал.
tasm32 /ml /t /m3 /z /q /iF:TASMInclude %FI%.asm
tlink32 -x -Tpe -ap -c -V4.0 -LF:TASMLib %FI%.obj, %FO%.exe , , import32.lib
Где %FI% и %FO% - переменные, в которых определено имя входного и выходного файлов.
Ответ отправлен: 17.11.2002, 23:45
Отправитель: Bob Johnson
Вопрос № 1830 |
Не работает SoftIce под XP(или руки кривые?)
Ставлю бряк: bpx MessageBoxA
Выхожу - запускаю прогу(на VisualC++ своял специально:
void WinMain{MessageBox(NULL,"Test","!",MB_OK);})
- появляется мессаджбокс и все:-((
А САйс хоть бы пикнул!
SoftIce Driver Suite 2.0.1
Вопрос отправлен: 16.11.2002, 15:04
Отправитель: nix (nix.q@mail.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Gibbel
Добрый день, nix!
Все дело в том, что в Windows две функции соответствуют сишному макросу MessageBox. Это MessageBoxW для юникод-версий и MessageBoxA для не-юникод...
Соответственно, поставь бряк на обе - должно сработать...
Ответ отправлен: 16.11.2002, 15:24
Отправитель: Gibbel
Отвечает Broken Sword
Доброе время суток, nix!
Запомни раз навсегда: в Windows 9X все брейкпоинты BPX на диапазон адресов 400000h-7FFFFFFFh являются контекстно-зависимыми. Это означает, что брейкпоинт сработает только в том случае, если контекст, в котором он установлен, является активным. В Windows NT/2000/XP то же самое касается всех адресов ниже 2 Гб (80000000h). Теперь, ты спрашиваешь: "как поменять контекст"? А вот так. Ты должен загрузить прогу и брянуться в ней где нить ДО вызова messageboxa. Как это сделать - много способов. От замены на int 3 первого байта до загрузки чрез SL (про это поподробнее могу рассказать, пиши).
Так вот, как только ты брякнулся (хоть на loadlibrarya, которая вызывается 99% прог win32), - пишешь команду addr. Тебе вылезет список активных процессов. Находишь свой. Допустим, это myprog. Смотришь циферь рядом с этой myprog. Допустим, 666h. Далее пишешь: addr 666h. И все! Ты в контексте проги myprog! ВОТ ТЕПЕРЬ (!!!!) можешь писать bpx messageboxa. Если не поможет - пиши
Ответ отправлен: 16.11.2002, 17:15
Отправитель: Broken Sword
Отвечает Portnov
Приветствую Вас, nix!
Ставьте bpx MessageBoxW! AFAIK XP использует юникод.
С уважением, Portnov.
Ответ отправлен: 16.11.2002, 17:43
Отправитель: Portnov
Отвечает masquer
Здравствуйте, nix!
Введи в айсе команду
exp MessageBox*
Получишь список функций и пробуй каждую :). Под ХР по любому будет MessageBoxW вызываться, даже если явно вызывается MessageBoxA, она потом в W переходит.
Ответ отправлен: 18.11.2002, 13:56
Отправитель: masquer
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (42) C / C++ (30) Perl (8) Delphi (13) Pascal (21) Basic / VBA (11) Java / JavaScript (13) PHP (11) MySQL / MSSQL (9) |
Пользователю Windows 95/98/Me (31) Windows NT/2000/XP (21) "Железо" (27) Поиск информации (17) |
Администратору Windows NT/2000/XP (11) Linux / Unix (16) |
Юристу Гражданское право (7) Семейное право (2) Трудовое право (3) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||