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

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


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

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

Выпуск № 345
от 17.08.2002, 20:50

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


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

masquer
Статус: Профессиональный
Общий рейтинг: 158.92
[Подробней >>]
vitya
Статус: Профессиональный
Общий рейтинг: 112.5
[Подробней >>]
Dark_Lord
Статус: Опытный
Общий рейтинг: 141.96
[Подробней >>]
 
Pablo
Статус: Опытный
Общий рейтинг: 131.57
URL: Моя страничка
[Подробней >>]
ASMодей
Статус: Опытный
Общий рейтинг: 127.11
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 137.06
URL: моя шедевра
[Подробней >>]
 
nix
Статус: Доверительный
Общий рейтинг: 113.07
[Подробней >>]
LIFO
Статус: Опытный
Общий рейтинг: 135.58
Телефон: 8 01710 24758
[Подробней >>]
Igoryk
Статус: Опытный
Общий рейтинг: 113.77
URL: В помощь программисту
[Подробней >>]
 
ARDoS
Статус: Начальный
Общий рейтинг: 104.16
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 122.28
[Подробней >>]
copycon
Статус: Доверительный
Общий рейтинг: 113.49
[Подробней >>]
 
Артём Шегеда
Статус: Профессиональный
Общий рейтинг: 119.9
URL: Пристанище неодинокого программиста
[Подробней >>]
Александр
Статус: Профессиональный
Общий рейтинг: 118.33
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 132.04
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
 
Painbringer
Статус: Доверительный
Общий рейтинг: 115.04
[Подробней >>]


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

Вопрос № 966. Уважаемые эксперты! Подскажите: Как блокировать и разблокировать кнопки в диалоговых окнах? Так как,... (ответов: 4)
Вопрос № 967. Привет всем! Я пытаюсь освоить asm'ование для win32, и, конечно, пользуюсь SoftIce'ом. У меня така... (ответов: 6)
Вопрос № 968. Здравствуйте эксперты! Спасибо за помощь, но работу функции Set(Get)-WindowLong я знаю и она не подх... (ответов: 1)
Вопрос № 969. Пришлите, пожалуйста, пример на ассемблере для вывода диалогового окна. Если можно с параметрами ком... (ответов: 3)
Вопрос № 970. Здравствуйте, Есть ли у кого книга Зубкова Assembler для DOS, Windows и UNIX??? Скиньте плиз можно л... (ответов: 4)
Вопрос № 971. всем здрасти. Есть такой вопрос. В описании функции 13h int 10h (вывод строки в позиции курсора) чит... (ответов: 5)
Вопрос № 972. 1.Уважаемые эксперты, у нас в Универе есть один кабинет с древними 4-ками. Сидит там злой админ, и с... (ответов: 5)
Вопрос № 973. Привет Экспертам у меня к вам вопрос где можно достать исходники к книге Ассемблер в задачах защит... (ответов: 2)
Вопрос № 974. Господа Эксперты у кого есть инклюдники под fasm ------>for windows и пожалуста поделитесь инфой по... (ответов: 4)
Вопрос № 976. Hi. Я по поваду вопроса про выделение com всей памяти. Я просто за этот день немного натоскался в ас... (ответов: 2)
Вопрос № 977. Товарищи эксперты вы наверное меня плохо понимаете обычно ,как я знаю защита под DOS пишется за счет... (ответов: 5)
Вопрос № 978. Уважаемые эксперты, неужели это слишком чайниковый вопрос (№912 про обмен с LPT через канал DMA). Мо... (ответов: 3)

Вопросов: 12, ответов: 44


 Вопрос № 966

Уважаемые эксперты! Подскажите:
Как блокировать и разблокировать кнопки в диалоговых окнах?
Так как, когда создаю окно в редакторе ресурсов(apstudio.exe), то в Dialog: Push Button Properties > General, когда устанавливаешь флажок на , то кнопка блокируется, а как это сделать из своей проги?? Какие только сообщения по средствам функции(SendDlgItemMessage)ни посылал, все бестолку!!!!
Выручайте!!!



Вопрос отправлен: 13.08.2002, 07:10
Отправитель: Андрей (assing@glazov.net)

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

Отвечает masquer

Приветствую Вас, Андрей!
EnableWindow

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


Отвечает vitya

Добрый день, Андрей!

что бы сделать не доступным
LONG l;
GetWindowLong(hEdit, GWL_STYLE, l);
l |= WS_DISABLED;
SetWindowLong(hEdit, GWL_STYLE, l);
//обратно доступным,
GetWindowLong(hEdit, GWL_STYLE, l);
l &= ~WS_DISABLED;
если уверен, что флаг стоит, то просто
l ^= WS_DISABLED;
SetWindowLong(hEdit, GWL_STYLE, l);


Ответ отправлен: 13.08.2002, 08:39
Отправитель: vitya


Отвечает Dark_Lord

Добрый день, Андрей!
Set/GetWindowLong и windowEnable/disable!

Ответ отправлен: 13.08.2002, 08:47
Отправитель: Dark_Lord


Отвечает Pablo

Здравствуй, Андрей!
Вообще насколько я понимаю pushbutton имеет только 2 состояния: отжата и нажата, а третье состояние имеет кнопка со стилем BS_OWNERDRAW. Ну по крайне мене я так понял из текста приложения, который я нашел в хелпе.

Приложение:

Ответ отправлен: 14.08.2002, 23:29
Отправитель: Pablo


 Вопрос № 967

Привет всем!
Я пытаюсь освоить asm'ование для win32, и, конечно, пользуюсь SoftIce'ом.
У меня такая проблемка: не могу найти в хелпе как перейти в data window на нужный мне адрес: напрмер, у меня курсор стоит на 0030:00000000, а мне, скажем, нужон 0030:04000000 :) Вручную листать - долговато будет...
Подскажите где можно достать самую подробную инфу по сайсу, пжлст.
Спасибо!



Вопрос отправлен: 13.08.2002, 09:18
Отправитель: 86 a5 ad ef

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

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

Приветствую Вас, 86 a5 ad ef!
Насколько я помню, используется команда d Address
(например d 4000000).


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


Отвечает Dark_Lord

Приветствую Вас, 86 a5 ad ef!
пишешь
d 04000000
и ты там!

Ответ отправлен: 13.08.2002, 20:43
Отправитель: Dark_Lord


Отвечает masquer

Добрый день, 86 a5 ad ef!
Вот так и пишешь.
d 04000000
Документация в пакете идет.

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


Отвечает Broken Sword

Привет Женя !!!
Самая подробная инфа по сайсу идет в комплекте (2 pdf-файла), правда на англицком но это хорошо. У меня есть на русском. Насчет того как перейти по адресу - пишешь
db адрес (переход на адрес и все данные будут отображены "побайтно")
dw адрес (то же самое, только все будет в "словах")
dd адрес (это полезно для просмотра стека (все данные - dword-ы)
Адрес может выглядеть как cs:1234ABCD или просто 1234ABCD, кстати, никогда в сайсе не используй сегм. приставки... (и без них все прекрасно канает)


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


Отвечает nix

Приветствую Вас, 86 a5 ad ef!
могу скинуть доки - мыль nix.q@mail.ru

Ответ отправлен: 13.08.2002, 13:29
Отправитель: nix


Отвечает LIFO

Доброе время суток, 86 a5 ad ef!
В строке пишешь команду BL, нажимаешь ENTER
Пишешь BPX #0030:04000000 нажимаешь ENTER!
Искомая строка выделится цветом.
P.S. С Софтайсом идет классная документация, и не важно что на англицком.



Ответ отправлен: 14.08.2002, 11:41
Отправитель: LIFO


 Вопрос № 968

Здравствуйте эксперты! Спасибо за помощь, но работу функции Set(Get)-WindowLong я знаю и она не подходит, так как я имел ввиду "кнопки" (pushbutton) в ресурсных диалоговых окнах!!! А не в обычных! При обращении к ним нужно указывать:
Dlg - Идентификатоp блока диалога;
IDDlgItem - Идентификатоp элемент.
Хотя посмотрите # Пример1 #, может я там допустил ошибку??
(процедура SenDlgItemMessage - тоже не дает ни какого результата!). Жду ответов и соображений.


Приложение:


Вопрос отправлен: 13.08.2002, 10:08
Отправитель: Андрей (assing@glazov.net)

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

Отвечает masquer

Добрый день, Андрей!
В качестве исправления. Этот код деактивирует кнопку
invoke GetDlgItem, hWnd, 1001
invoke SetWindowLong, eax, GWL_STYLE, WS_DISABLED
Для того чтобы кнопка стала серой (неактивной) нужно отрабатываеть сообщение WM_DRAWITEM. Смотри MSDN за подробностями.

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


 Вопрос № 969

Пришлите, пожалуйста, пример на ассемблере для вывода диалогового окна. Если можно с параметрами компилирования.
Буду очень признателен за коментарий и пример использования WIN API на асм.



Вопрос отправлен: 13.08.2002, 12:05
Отправитель: Yevg

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

Отвечает Dark_Lord

Приветствую Вас, Yevg!
Адрес (мыло) давай, пришлю! Моё Dark_Lord@land.ru!

Ответ отправлен: 13.08.2002, 21:31
Отправитель: Dark_Lord


Отвечает masquer

Здравствуйте, Yevg!
Комментивать не вижу смысла - за этим в МСДН
invoke GetModuleHandle, NULL
mov hInstance, eax
invoke DialogBoxParam,hInstance,ADDR dlgname,0,ADDR WndProc,0
...
WndProc proc hWnd :DWORD,
uMsg :DWORD,
wParam :DWORD,
lParam :DWORD
.if uMsg == WM_INITDIALOG
...
.elseif uMsg == WM_COMMAND
.if wParam == 1000 ; например кнопка нажата
...
xor eax, eax
ret
WndProc endp

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


Отвечает Pablo

Добрый день, Yevg!
.code
...
push offset DlgProc
push [hwndOwner]
push offset lpszTemplate
push [hInstance]
call DialogBox
...
DlgProc
...
ret 10h ;команда возврата их функции для типа __stdcall
...
.data
hwndOwner dd ?
lpszTemplate db 'DialogName',0 ;Имя диалога в ресурсах
hInstance dd ?


Ответ отправлен: 15.08.2002, 10:16
Отправитель: Pablo


 Вопрос № 970

Здравствуйте,
Есть ли у кого книга Зубкова Assembler для DOS, Windows и UNIX???
Скиньте плиз можно линк.



Вопрос отправлен: 13.08.2002, 14:16
Отправитель: nix (nix.q@mail.ru)

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

Отвечает Dark_Lord

Доброе время суток, nix!
У меня только книжка(такая из бумаги), приложения к ней могу скинуть, только мыло дай!

Ответ отправлен: 13.08.2002, 21:31
Отправитель: Dark_Lord


Отвечает Broken Sword

Доброе время суток, nix!
у меня есть. адрес квартиры не дам!

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


Отвечает Igoryk

Доброе время суток, nix!
Эта книга распространяется только в печатном виде, но ко-что можно посмотреть на сайте издательства www.dmk.ru

Ответ отправлен: 13.08.2002, 17:05
Отправитель: Igoryk


Отвечает ARDoS

Доброе время суток, nix!
Уже сто раз писали, что этой книги в электронном виде нет.


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


 Вопрос № 971

всем здрасти.
Есть такой вопрос.
В описании функции 13h int 10h (вывод строки в позиции курсора) читаем:
DH,DL - строка, колонка вывода строки.
Зачем это надо если положние курсора уже определено.
Например после mov ax,0002h int 10h курсор в верхнем правом углу.
Я это к чему, присвоив DX значение прога 'вешается', а если DX не определяем
вроде как работает.



Вопрос отправлен: 13.08.2002, 14:33
Отправитель: dosm

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

Отвечает Dark_Lord

Добрый день, dosm!
Какое же значение ты ему присваеваешь, что прога вешается!!

Ответ отправлен: 13.08.2002, 21:31
Отправитель: Dark_Lord


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

Приветствую Вас, dosm!
Не должна прога вешаться! Может у тебя регистр DX
используется дальше в программе, а ты его здесь изменяешь?


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


Отвечает Ayl

Добрый день, dosm!
Ну, во-первых, функция 13h не есть вывод строки в позицию курсора, а выводит текст в заданную позицию.
Во-вторых, после использования функции 2 регистр DX уже установлен соответствующим образом.
В-третьих, функция 13h имеет 4 подфункции (задаются в AL):
00 - вывод строки в заданную позицию без изменения текущего положения курсора
01 - вывод строки в заданную позицию с установкой курсора за последним выведенным символом
02 - вывод строки с аттрибутами в заданную позицию без изменения текущего положения курсора
03 - вывод строки с аттрибутами в заданную позицию с установкой курсора за последним выведенным символом
В общем, проверь параметры. И учти, что еще изменяется регистр BP. Так что если ты ее собираешься вызывать из ЯВУ, то его нужно обязательно сохранить.
А вообще неплохо бы посмотреть на твой код, а то так ползаешь в потемках...

Ответ отправлен: 13.08.2002, 15:18
Отправитель: Ayl


Отвечает Broken Sword

Добрый день, dosm!
Что значит зачем? Если ты хочешь вывести текст не с левого верхнего а с центра, так что ...? А прога твоя вешается совсем не потому. И что значит "если DX не определяем"? Запусти код из приложения - если не заработает (у меня все ОК) будем разбираться дальше.
p.s. де ты откопал эту ф-цию :) ?


Приложение:

Ответ отправлен: 13.08.2002, 16:06
Отправитель: Broken Sword


Отвечает Igoryk

Добрый день, dosm!
Эта функция используется для перемещения курсора не зависимо от его месторасположения. Может быть у тебя ошибка в заполнении DX? Попробуй считывать отдельно в DH и в DL. Иногда требуется определить текущее положение курсора, в этом случае используй код:
mov ah, 03h
mov bh, 00h
int 10h
Тогда в DH и DL окажется строка и столбец соответсвенно.

Ответ отправлен: 13.08.2002, 17:05
Отправитель: Igoryk


 Вопрос № 972

1.Уважаемые эксперты, у нас в Универе есть один кабинет с древними 4-ками. Сидит там злой админ, и стоит там защита для Dos. Ну я её сломал, оттрасировал Int 21h нашел оригинальный обработчик(Паскаль то работал,написал небольшую процедуру на АСМЕ и вызывал ее из Паскаля). Теперь это му..к где то пробил чего-то(самому ему написать слабо) и все моя прога теперь не работает комп виснет. Что посоветуете как еще можно сломать подобные защиты?(Загружаться с дискеты не получиться потому что дисковод подключен так)
2.Можно ли как-нибудь вычислить адрес обработчика зная какие драйверы установлены в (config.sys) и их размер.
3.И еще почему как только моя прога заканчивает работу защита снова работает(я из проги на Паскале переписываю config.sys и перезагружаюсь)


Приложение:


Вопрос отправлен: 13.08.2002, 15:32
Отправитель: Merlyn Manson

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

Отвечает Dark_Lord

Приветствую Вас, Merlyn Manson!
У меня тока вопрос, зачам так мучится из-за кокогото 4-и!!!

Ответ отправлен: 13.08.2002, 21:30
Отправитель: Dark_Lord


Отвечает copycon

Добрый день, Merlyn Manson!
И почему люди любят все делать самым сложным способом?
(через за%%%цу?)
Иди путем который дает сама программа, админ как САМ делает запись? (и вообще что за программа и как работает?)
Он может паролик вводит? А отловить этот пароль или где-то на диске найти? А может у программы есть функции управления? какие-нибуть функции на прерывании,
типа (пример от фонаря): int 13h ax=0FEDСh
bx=0h - отключить защиту
bx=1h - включить защиту
Или один из красивых заломов.
Вспоминаю свой САМЫЙ ПЕРВЫЙ залом, когда вообще ничего
не знал про asm, debug, ext.:
Залом ADM (тоже такая защитка под dos)
пишется програмка на чем угодно :) которая загружаеться в
autoexec.bat стирает с экрана "OK" выданное защитой,
пищит и просит еще раз ввести пароль :))))
Пароль пишет в файлик.
Назвал я ее "graphics.com", через два дня я знал все пароли
Надо быть проще!
Удачи.


Ответ отправлен: 15.08.2002, 20:41
Отправитель: copycon


Отвечает Broken Sword

Приветствую Вас, Merlyn Manson!
не нада ничего трассировать, адрес обработчика всегда лежит в таблице векторов (другое дело что придется попрыгать с адреса на адрес если админ повесил резидент)
p.s. при чем здесь config.sys ?
в чем заключается "защита"?

Ответ отправлен: 13.08.2002, 16:06
Отправитель: Broken Sword


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

Приветствую Вас, Merlyn Manson!

Вообще-то защит (а точнее, систем разграничения доступа) для DOS - пруд пруди, и для определения типа необходим анализ того, что происходит во время загрузки. Для начала, не мешало бы получить autoexec.bat, config.sys, список всех сообщений на экране во время загрузки, а также то, как "защита" разграничивает доступ.
А вообще, дистанционный взлом - то как секс по e-mail: прикольно, но долго, неудобно и, может быть, безрезультатно.


Ответ отправлен: 13.08.2002, 16:39
Отправитель: Артём Шегеда


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

Приветствую Вас, Merlyn Manson!
1. Если ты всё-таки можешь менять config.sys и autoexec.bat, то можно напсать две простеньких программы - одна будет сохранять таблицу прерываний, а другая восстанавливать из записанного. Ставишь первую перед запуском защитной проги, вторую - после и никаких проблем.
2. Не думаю, если это и возможно то очень заморочено.
3. Так она же у тебя не резидентная. Используй int 27h. Посмотри как пишутся резидентные обработчики прерываний. Там всё просто.


Ответ отправлен: 14.08.2002, 08:28
Отправитель: Александр


 Вопрос № 973

Привет Экспертам
у меня к вам вопрос где можно достать исходники к книге
Ассемблер в задачах защиты информации Бурдаев О. В., Иванов М. А., Тетерин И. И. Ассемблер в задачах защиты информации Учебно - справочное издание Кудиц - образ, 2002г., 320 стр. если у кого таковые имеются кинте плз. в ящик указанный ниже
regards _Nomad



Вопрос отправлен: 13.08.2002, 16:14
Отправитель: _Nomad (_nomad@mail.kz)

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

Отвечает Sensey

Приветствую Вас, _Nomad!
А почему ты решил, что я знаю эту книгу или у меня есть исходники? Перефразирую вопрос: Почему вопрос персональный?
Такой вопрос надо всем наравлять...
Я, к сожалению, информацией (исходниками) не располагаю...

Ответ отправлен: 13.08.2002, 16:31
Отправитель: Sensey


Отвечает LIFO

Доброе время суток, _Nomad!
Ака нигде - в самой книге все листинги полные,так что не брезгуй и набирай ручками:)

Ответ отправлен: 14.08.2002, 12:18
Отправитель: LIFO


 Вопрос № 974

Господа Эксперты
у кого есть инклюдники под fasm ------>for windows
и пожалуста поделитесь инфой по этому компилятору
только на русском



Вопрос отправлен: 13.08.2002, 16:21
Отправитель: _Nomad (_nomad@mail.kz)

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

Отвечает Dark_Lord

Доброе время суток, _Nomad!
Fasm for Windows, ты с какого пня упал? А такое вообще существует, хотя есть исходники, а их можно профиксить под 32бита! (ящик проверь!)

Ответ отправлен: 13.08.2002, 21:30
Отправитель: Dark_Lord


Отвечает Broken Sword

Приветствую Вас, _Nomad!
Выслал все что тебе нада, см. почту )

Ответ отправлен: 13.08.2002, 17:26
Отправитель: Broken Sword


Отвечает LIFO

Добрый день, _Nomad!
Вперед на мины , на сайт asmfanat.narod.ru. Создатель сайта сам использует этот ассемблер, у него это все есть.

Ответ отправлен: 14.08.2002, 12:18
Отправитель: LIFO


Отвечает ARDoS

Добрый день, _Nomad!
Смотри в ящике инклюды для вин и док на русском.


Приложение:

Ответ отправлен: 16.08.2002, 13:53
Отправитель: ARDoS


 Вопрос № 976

Hi. Я по поваду вопроса про выделение com всей памяти. Я просто за этот день немного натоскался в асме (несколько прог набил:) и решил сам попробовать ответить на свой вопрос. Т.к. не получил нормальный ответ.
Это поведение не зависит от архитектуры доса или еще чего. Просто комы пашут на нулевом уровне операционки. Или еще проще говоря - все операционки должны быть в формате COM (не зависимо от расширения и тп)!!! Именно в этом формате программа может работать вообще без доса (загрузчик+файл),если не использовать досовские прерывания. A любой ОСи должна быть в распоряжение предоставлена вся память. Ну а почему только один сегмент, помоему уже понятно. Вывод: exe - только для доса или win. Вообщем тема длинная, можно дисертацию написать:)
Ну как, я не ошибся?
Извените за назойливость, но надеюсь эта информация кому и поможет (в создании операционки,например).



Вопрос отправлен: 13.08.2002, 17:58
Отправитель: uncle Susanin

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

Отвечает Broken Sword

Добрый день, uncle Susanin!
эта информация уж точно никому не поможет, разве что только может запудрить мозги новичку... То что ты сказал про нулевой уровень - это чистый бред, потому как когда появился первый комник дескрипторы еще сидели на деревьях а твоя фраза "комы пашут только на нулевом уровне операционки" только рассмешила своей глупостью... :)
То что операционка должна работать без операционки - это очень правильное и глубокое наблюдение :)
Вывод у тебя вообще превзошел все ожидания...)
p.s. "все операционки должны быть в формате COM". У меня вопрос к тебе - сколько ты думаешь весит ядро той же винды ?
Если ты думаешь что оно влезет в один сегмент ты очень заблуждаешься...


Ответ отправлен: 13.08.2002, 20:49
Отправитель: Broken Sword


Отвечает Ayl

Добрый день, uncle Susanin!
Нет, ты не прав.
COM-программа не будет работать без DOS'а, потому что именно DOS формирует такую вещь, как префикс программного сегмента (PSP).
И даже драйвер системы работать не будет без DOS, потому что структура списка драйверов и правмла их написания зависят от ОС.
По поводу нулевого уровня я вообще не понял, что ты имел в виду. Также как и про операционку в формате COM.
На самом деле, COM-файл это именно понятие DOS'а. Я больше не встречал операционок (CP/M не в счет), где бы было что-то похожее, может, только в малых и больших ЭВМ, но их мы сейчас брать в расчет не будем.
И это был первый тип выполняемого файла. EXEшники появились гораздо позже, когда памяти стало больше в компах.
До этого использовалась оверлейная технология, когда прога сама подгружала во время выполнения свои части по мере необходимости.
Поэтому, видимо, и ограничение осталось на размер COM-программы, да и грузить ее так проще. Плюс не требуется никаких дополнительных действий по настройке адресов. Плюс все ресурсы выделяются программе сразу же после загрузки - просто и красиво. И удобно...
А по поводу работы без ОС - так здесь надо писать уже загрузочную программу. Которая будет выполнятся из BootSector'а. А уж что она потом будет делать - тут уж насколько фантазии хватит. Но эта программа будет и не COM, и не драйвер.

Ответ отправлен: 13.08.2002, 19:04
Отправитель: Ayl


 Вопрос № 977

Товарищи эксперты вы наверное меня плохо понимаете обычно ,как я знаю защита под DOS пишется за счет перехвата прерываний, это только в защишенном режиме можно всякую фигню делать. А защита делает ограничения на вход в каталог,
удаление,запуск и запись фаилов на ж.д. Так вот вся эта защита висит на 13h,21h векторах.



Вопрос отправлен: 13.08.2002, 18:32
Отправитель: merlyn manson

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

Отвечает Broken Sword

Здравствуйте, merlyn manson!
ну вот и все! значит это резидент, ищи его в autoexec-е (не думаю что админ запихал все это дело в бут)

Ответ отправлен: 13.08.2002, 20:49
Отправитель: Broken Sword


Отвечает Dark_Lord

Здравствуйте, merlyn manson!
Чи-и-иго, и где вопрос!!!

Ответ отправлен: 13.08.2002, 21:27
Отправитель: Dark_Lord


Отвечает Painbringer

Доброе время суток, merlyn manson!
Marilyn Manson пишется так! отвечать из принципа не буду - не обижай дяденьку (Брайана Уорнера в смысле, а не вашего долбаного админа). (хотя информации слишком мало чтоб тебе чем то помочь)

Ответ отправлен: 13.08.2002, 23:03
Отправитель: Painbringer


Отвечает copycon

Доброе время суток, merlyn manson!
Первое:
DOS то-же скорее всего защищенный режим, EMM или QEMM грузиться? Память >640K доступна?
Ты забыл еще кое-что:
int 40h - diskette
int 25/26h - DOS absolute Disk Read/Write
Так-же можно недокументированно встраиваться в DOS.
И вообще: ты глянь где и как защита хранит права и атрибуты на файлы? Может прямо в Directory Entry Layout и проще просто дискедитом там все подправить (а chkdsk.exe на эти каталоги и файлы не ругаеться?)

Удачи.


Ответ отправлен: 15.08.2002, 21:39
Отправитель: copycon


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

Приветствую Вас, merlyn manson!

Да никто не спорит, что защита висит на этих векторах. Проблема в том, что цепочку вызовов прервать невозможно. То есть, если был установлен драйвер A, и он перехватил прерывание 21h, а потом установился драйвер B, который тоже перехватил прерывание 21h, то драйвер A уже выгрузить нельзя, поскольку неизвестна точка входа в старый обработчик (ТВСО).
Другое дело, если ты напишешь программу, которая, зная, где драйвер A хранит ТВСО, "врежется" в этот драйвер и будет просто передавать управление на этот старый обработчик. Для этого неоходимо, чтобы драйвер A всегда хранил точка входа по одному и тому же адресу.
Вручную трассировать драйвера - неблагодарное занятие, зачастую приводящее к зависанию машины. Но если ты найдёшь тот драйвер, который управляет разграничением доступа, то 90% пути ты прошёл - осталось только найти адрес, по которому драйвер хранит ТВСО.

Ответ отправлен: 13.08.2002, 19:41
Отправитель: Артём Шегеда


 Вопрос № 978

Уважаемые эксперты, неужели это слишком чайниковый вопрос (№912 про обмен с LPT через канал DMA).
Можно хотя бы ссылкой кинуть с примером такой реализации (раз тут все такие крутые).
Всех успехов



Вопрос отправлен: 13.08.2002, 18:34
Отправитель: Soho

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

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

Приветствую Вас, Soho!
Выводы неправильные, скорее наоборот с этим никто не работал. На самом деле, когда работаешь с DMA тебе должно быть пофигу, что там за устройство, главное знать номер этого самого DMA канала. Когда устанавливаешь в BIOS, что LPT-порт должен быть ECP, то можно выбрать и номер DMA канала. Запомни это число...
Сначала хотел привести какой-нибудь исходник, но первое что попалось был алгоритм работы с DMA контроллером. Правда только на примере 8-битных каналов 0 1 и 3. Для 16-битных каналов 4-7 всё должно быть очень похоже. Вот этот алгоритм.
1. Сброс триггера-защёлки байтов. Записать число в порт 0Ch.
2. Установка режима работы канала - код режима записать в порт 0Bh(возможные режимы описаны в таблице P005 - моё прим.).
3. Установка адреса блока памяти, который будет передаваться через канал. Адрес смещения записывается в порт 00h, 02h или 06h для каналов 0, 1 и 3 соответственно. Сначала записывается младший байт, затем старший. Адрес страницы(старшие 4 бита сегментного регистра) записывается в порты 87h, 83h и 82h для каналов 0, 1 и 3 соответственно.
4. Установка количества циклов пересылки(для 8-разрядного канала равно числу пересылаемых байт). Длина блока записывается в порт 01h, 03h или 07h для каналов 0, 1 и 3 соответственно. Сначала записывается младший байт, затем старший.
5. Разрешение работы канала. Для этого необходимо записать номер канала в порт 0Ah.
6. Всё. Ждать результатов. Из-за ограничений протокола пересылка более 64КБ невозможна, поэтому придётся повторять эту операцию достаточно часто...
А в приложении привожу выдержку из Ralf's Braun interrupt List(из файла ports.lst), касающуюся DMA.


Приложение:

Ответ отправлен: 14.08.2002, 22:34
Отправитель: Александр


Отвечает Dark_Lord

Здравствуйте, Soho!
Вопрос не слишком, просто как сделают "такие крутые", зайдут в поисковик и найдут, так почему ты так сделать неможешь?!

Ответ отправлен: 13.08.2002, 21:27
Отправитель: Dark_Lord


Отвечает Pablo

Добрый день, Soho!
Ну примерно можно так:
.code
...
push offset dlgproc
push [hwndowner]
push offset lpsztemplate
push [hinstance]
call DialogBox
...
dlgproc:
...
ret 10h ;если эта функция __stdcall
.data
hinstance dd ?
lpsztemplate db 'DialogName',0
hwndowner dd ?


Ответ отправлен: 14.08.2002, 23:29
Отправитель: Pablo



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

Внимание!
Форма может работать некорректно в почтовых программах "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 (39)
C / C++ (28)
Perl (15)
Delphi (18)
Pascal (27)
Basic / VBA (11)
Java / JavaScript (13)
PHP (12)
MySQL / MSSQL (12)
Пользователю
Windows 95/98/Me (47)
Windows NT/2000/XP (32)
"Железо" (37)
Поиск информации (18)
Администратору
Windows NT/2000/XP (16)
Linux / Unix (13)
Юристу
Гражданское право (7)
Семейное право (5)
Трудовое право (6)
КоАП (4)

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




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

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


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

В избранное