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

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


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

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

Выпуск № 442
от 14.12.2002, 01:40

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


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

masquer
Статус: Профессиональный
Общий рейтинг: 149.92
[Подробней >>]
Andrew Vext
Статус: Доверительный
Общий рейтинг: 108.01
[Подробней >>]
Broken Sword
Статус: Профессиональный
Общий рейтинг: 128.22
URL: моя рассылка по Protected Mode
[Подробней >>]
 
Bob Johnson
Статус: Профессиональный
Общий рейтинг: 151.69
[Подробней >>]
Maverick
Статус: Профессиональный
Общий рейтинг: 138.62
URL: Задачи по ассемблеру
Телефон: 89039415024 (BeeLine GSM)
[Подробней >>]
Traish
Статус: Начальный
Общий рейтинг: 124.07
[Подробней >>]
 
baldr
Статус: Профессиональный
Общий рейтинг: 114.31
URL: Сайт об ОС DOS. Всем, кто любит эту ОС!
[Подробней >>]
Sensey
Статус: Профессиональный
Общий рейтинг: 122.36
URL: Страничка рассылки по Паскалю
Телефон: +38 (0572) 41-76-04 дом.
[Подробней >>]
Ayl
Статус: Профессиональный
Общий рейтинг: 117.18
[Подробней >>]
 
igorash
Статус: Профессиональный
Общий рейтинг: 115.36
Телефон: 8(903)251-86-01
[Подробней >>]
DiGiT[old]
Статус: Опытный
Общий рейтинг: 107.07
[Подробней >>]


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

Вопрос № 2076. Уважаемые эксперты. Есть задача. Помогите хотябы с идеей. 1. Есть программа работающая в дос-боксе. ... (ответов: 2)
Вопрос № 2077. Доброе время суток, уважаемые эксперты! У Юрова в учебнике по асму (второе издание) написано, что TA... (ответов: 2)
Вопрос № 2078. Приветствую вас, уважаемые эксперты! Буду вам премного благодарен, если вы мне поможете с курсовой. ... (ответов: 5)
Вопрос № 2079. Здраствуйте! У меня есть один вопрос по теме Безопасности. А точнее по теме Exploit-ов. Это даже не ... (ответов: 1)
Вопрос № 2080. Здравствуйте. >Ты бы хоть объяснил для чего тебе это надо? - это (как бы сказат ?), на тот случай ж... (ответов: 1)
Вопрос № 2081. Здравствуйте. Вышлете пожалуйста мне, если у Вас есть возможность, справочную документацию по команд... (ответов: 1)
Вопрос № 2082. Доброго времени суток уважаемые эксперты. Столкнулся с проблемой при перехватывании int 21h функции ... (ответов: 1)
Вопрос № 2083. Dobrogo vremeni sutok usem expertam!! Please, help me.... RAsskazhite mne pro programmirovanie mysh... (ответов: 1)
Вопрос № 2084. Уважаемые эксперты, мне нужно провести мониторинг производительности. Для этого надо использовать MS... (ответов: 2)
Вопрос № 2085. Доброго времени суток уважаемые эксперты. Спасибо Traish. Ты был прав. Дос, даже из Нортона использу... (ответов: 1)
Вопрос № 2086. Пожалуйста!!! Пришлите, кто-нибудь, електронный справочник по функыиям Dos... (ответов: 3)
Вопрос № 2087. Здравствуйте, эксперты! У меня к вам 2 вопроса :) 1. Где взять предыдущие выпуски этой рассылки? На ... (ответов: 3)
Вопрос № 2088. Здравствуйте! Мне надо на форме с помощью OpenGL нарисовать шарик. На Wasm.ru ничего интересного нет... (ответов: 1)
Вопрос № 2089. Доброго времени суток, уважаемые эксперты. Не подскажете ссылки на описания форматов файлов .rc и ma... (ответов: 1)
Вопрос № 2092. Хайль, the best Эксперты!!! У меня появилось желание писать дрова (сначала хотя бы под DOS), подскаж... (ответов: 1)
Вопрос № 2093. Есть готовая программа, под Windows 95/98 - написана на C++, исходников нету. Я написал некую програ... (ответов: 4)

Вопросов: 16, ответов: 30


 Вопрос № 2076

Уважаемые эксперты.
Есть задача. Помогите хотябы с идеей.
1. Есть программа работающая в дос-боксе.
Чужая, т.е. я не могу там ни строчки код изменить.
Но из нее есть возможность вызвать мою программу.
2. Есть моя виндовая программа, т.е. с ней я могу делать что хочу.
Внимание, вопрос: как организовать быстрый
обмен информацией между этими программами?
Файл не предлагать.
И попутно вопрос, как дос-программа может определить что
она запущена под виндой(пример - досовые утилиты нортона)?




Вопрос отправлен: 09.12.2002, 01:49
Отправитель: Валентин (recpl@yandex.ru)

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

Отвечает masquer

Добрый день, Валентин!
Меня смущает фраза - файл не предлагать, к чему бы это, а? Это мне напоминает вопрос из какого-то фака по программированию на винапи...
ReadProcessMemory используй...

Ответ отправлен: 09.12.2002, 12:04
Отправитель: masquer


Отвечает Andrew Vext

Приветствую Вас, Валентин!
Есть такая штука - буфер обмена Windows. Программа из Dos-бокса закидывает данные в буфер обмена, а программа под Windows - забирает и наоборот.

Ответ отправлен: 09.12.2002, 12:32
Отправитель: Andrew Vext


 Вопрос № 2077

Доброе время суток, уважаемые эксперты!
У Юрова в учебнике по асму (второе издание) написано, что TASM не поддерживает MMX инструкции (он там предлагает способ обучения тасма mmx, но это дополнительное усложнение кода программы). В одном, из предыдущих выпусков вашей рассылки, промелькнуло, что tasm32 поддерживает mmx. Вопрос: поддерживает ли tasm32 версии 5.3 mmx инструкции?
И еще, я установил DriverStudio 2.7 под WinXP. После этого ОС запустилась только со второго раза в аварийном режиме. Правда, при инсталляции, я запретил устанавливать драйвера. Что я сделал не так, и что за драйвера она хотела установить? А то может, их нужно было разрешить устанавливать?
Спасибо за ответы.



Вопрос отправлен: 09.12.2002, 08:00
Отправитель: Sergey Pavl

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

Отвечает Broken Sword

Здравствуйте, Sergey Pavl!
зря ты запретил драйвера - она ставит универсальный видеодрайвер, патчит клаву и мышь, хотя если у тебя не USB клава то все это можно отключить в settings. А насчет универсального видеодрайвера - я не видел чтоб SoftICE стабильно работал на каком либо другом (специальном) кроме универсального, да и вообще SI заточен именно на Universal Videodriver, и возможностей при его применении гораздо больше, чем при любом стандартном.

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


Отвечает Bob Johnson

Доброе время суток, Sergey Pavl!
TASM 5.3 поддерживает ммх - директива .mmx


Ответ отправлен: 10.12.2002, 20:37
Отправитель: Bob Johnson


 Вопрос № 2078

Приветствую вас, уважаемые эксперты!
Буду вам премного благодарен, если вы мне поможете с курсовой. Нам препод задал написать вирус, а я во время лекций пиво пил;)
Но и в связи с этим вопрос: как перейти в нулевое кольцо защиты?
Заранее спасибо.



Вопрос отправлен: 09.12.2002, 09:27
Отправитель: Макс (zirewin@yandex.ru)

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

Отвечает Broken Sword

Здравствуйте, Макс!
насколько я понял - вирус под мастдай? и вообще - при чем здесь нулевое кольцо защиты? Вирус - это саморазмножающаяся механизма. Все. Деструкция - это уже у кого как фантазия развернется, совершенно второстепенно. Поэтому никаких нулевых колец не нужно, тебе нужен:
@@start:
- вывод на экран приветствия
- поиск файла
- запись в файл
jmp @@start
но если ты действительно хочешь забацать серьезный вирус, то статью Going Ring0 in Windows могу выслать на мыло.

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


Отвечает Maverick

Приветствую Вас, Макс!
Ха, побольше бы таких преподов :))) Привет ему. Но самое веселье начнется тогда, когда он начнет их тестировать.
А зачем переходить? Что, такой навороченый вирус нужен?
Могу дать исходник чернобыля.


Ответ отправлен: 09.12.2002, 19:56
Отправитель: Maverick


Отвечает Traish

Приветствую всех, а особенно Макса!
С радостью сообщаю, что присоединяюсь к вашей веселой тусовке ;)
Теперь о вопросах:
1. Курсовая?!
Ладно, ты только почему-то не уточнил, что именно тебе нужно - написать Ком.оверврайтинг, например, - дело одно,
а Win32-резидент совсем другое, тем более, что по второму вопросу я могу предположить, что нужен тебе именно он.
Уточняй, короче.
2. Способов перехода в Ring 0 для вируса несколько и, конечно, не все мне известны.
Сразу оговорюсь, что все нижесказанное будет относится к Win9x.
а) Написать VxD, который работает в нулевом кольце.
б) Пропатчить IDT (как в CIH'е).
в) Использовать дескриптор шлюза вызова (GDT/LDT), указав селектор 0028h.
г) Модификация контекста (SetThreadContext).
Способов существует много, но не всегда они будут работать - например, под NT системные таблицы защищены от записи.
PS В приложении - способ с GDT.
PPS Клевый у вас препод...


Приложение:

Ответ отправлен: 09.12.2002, 09:59
Отправитель: Traish


Отвечает masquer

Приветствую Вас, Макс!
Судя по вопросу - продолжай дальше пиво пить, оно тебе надо - мозги такой ерундой забивать...
А в связи с этим и ответ - молча, можно попивая пиво.
Для тех, кто в танке, здесь существует негласное правило, таким студентам не помогать.

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


Отвечает Bob Johnson

Добрый день, Макс!
Это легко возможно только под 9х.
1. Сохраняешь указатель на IDT (SIDT).
2. Патчишь в ней какой-либо дескриптор прерывания так, чтобы адрес его обработчика указывал на твой код (обычно - 3 - отладка).
3. Выполняешь int соответствующего номера.
P.S. О сегментах беспокоиться нет необходимости. Все адресуешь по ds не напрягаясь.
После вызова твоего кода в ring0 cs будет содержать стандартный дескриптор нулевого кольца для кода.


Ответ отправлен: 10.12.2002, 20:37
Отправитель: Bob Johnson


 Вопрос № 2079

Здраствуйте!
У меня есть один вопрос по теме Безопасности. А точнее по теме Exploit-ов.
Это даже не вопросик, а просьба.
Не могли бы вы посоветовать почитать мне что-нибудь в Интернет-е, для того, что бы понять устройства памяти в линухе (других осях), как просиходит переполнения буфера и т.д. Желательно на русском.


Приложение:


Вопрос отправлен: 09.12.2002, 10:56
Отправитель: ManderX

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

Отвечает baldr

Добрый день, ManderX!
Насколько мне известно, переполнение буфера - это наиболее часто встречающаяся ошибка в ПО.
НО! Еще ни у кого, по моим сведениям, не хватило ума хоть раз воспользоваться этим чтобы получить
контроль над системой. Для DoS-атак много ума не надо и завесить плохо настроенный сервак,
послав ему строку длиннее нужной просто. А вот подобрать такую строку, чтоб управление при
этом передавалось нужному участку памяти (с нужными привилегиями) еще, кажется, никому не
удавалось. Просто потому, что невозможно предсказать состояние того же сервака в каждый момент
времени с удаленного компьютера чтобы этим воспользоваться...


Ответ отправлен: 10.12.2002, 23:51
Отправитель: baldr


 Вопрос № 2080


Здравствуйте.
>Ты бы хоть объяснил для чего тебе это надо?
- это (как бы сказат ?), на тот случай жизни когда потребуется например написать курсовую . Как бы в роде типа библиотека. Любые темы.
Ссылки? Давайте ссылки. Еще интереснее - документация в e-mail-е - если не сложно. Адрес прежний: bayramanna@investbank.org
Спасибо.



Вопрос отправлен: 09.12.2002, 11:01
Отправитель: Bayram Annanurov

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

Отвечает baldr

Доброе время суток, Bayram Annanurov!
Хм... А если не понадобится? :) А если понадобится написать базу данных? Ты тогда и по ним
тоже собирай... :)
Кажется, была на subscribe.ru даже рассылка, посвященная написанию драйверов. Название я не
помню, но найдешь ты ее, думаю, легко. ссылки надо? www.driver.ru, www.drivers.ru, www.driver.com,
www.ixbt.com, www.emanual.ru... Вообще, чтобы писать драйвер, надо хорошо знать структуру
операционной системы - что ты знаешь про VMM? А про организацию защищенного режима? Тогда читай
и про это тоже.


Ответ отправлен: 10.12.2002, 23:51
Отправитель: baldr


 Вопрос № 2081

Здравствуйте.
Вышлете пожалуйста мне, если у Вас есть возможность, справочную документацию по командам Асма, а так же по функциям прерываний.
Мой адрес: bayramanna@investbank.org
Спасибо.



Вопрос отправлен: 09.12.2002, 11:15
Отправитель: Bayram Annanurov

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

Отвечает Sensey

Здравствуйте, Bayram Annanurov!
Выслал по командам.
По прерываниям ссылка
Еще по командам


Ответ отправлен: 09.12.2002, 13:32
Отправитель: Sensey


 Вопрос № 2082

Доброго времени суток уважаемые эксперты.
Столкнулся с проблемой при перехватывании int 21h функции 40h (запись в файл/устройство). Хочу отфильтровать только запись в Com1 (под Дос). Ставлю в соответствии с Tech Help cmp bl,3
je ... - не срабатывает
Задача... просто дописать в порт строку, когда заканчивается печать.
Прошу Help
Программу переделываю из перехватчика int 09, показывала код нажатой клавиши. Проверку на cmp убрал ... (чтобы лишних вопросов не было :)) Сейчас на все вызовы записи в файл/устройство в ком порт отсылает (!)



Приложение:


Вопрос отправлен: 09.12.2002, 12:59
Отправитель: SLaViR

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

Отвечает Traish

Добрый день, SLaViR!
Если проблема только в том, чтобы перехватить 21 интеррапт и отслеживать функцию 40H, то смотри в приложении.
Но ведь в/в в aux может производится через 03h/04h или функции 14h прерывания, например.



Приложение:

Ответ отправлен: 09.12.2002, 14:34
Отправитель: Traish


 Вопрос № 2083

Dobrogo vremeni sutok usem expertam!!
Please, help me....
RAsskazhite mne pro programmirovanie myshi cheres port RS-232. Byl by ochen priznatelen sa lubuju infu!
Kakie registry i kak ih privjasat' k analizu sostojanija myshi....
S uvazheniem Fred!



Вопрос отправлен: 09.12.2002, 15:33
Отправитель: Fred

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

Отвечает Maverick

Приветствую Вас, Fred!
Меняю мыло на доку :)
Алрес то давай, скину мануал.


Ответ отправлен: 09.12.2002, 19:56
Отправитель: Maverick


 Вопрос № 2084

Уважаемые эксперты,
мне нужно провести мониторинг производительности. Для этого надо использовать MSR регистры (как счетчики событий, тактов...). А команды rdmsr/wrmsr не работают, даже в реальном режиме. Как использовать rdmsr/wrmsr в реальном режиме???



Вопрос отправлен: 09.12.2002, 15:49
Отправитель: MuRR

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

Отвечает Broken Sword

Добрый день, MuRR!
Traish, не наводи тень на плетень, команда отлично работает в реальном режиме, и формат у нее такой:
ECX - адрес MSR, а грузится 64-битный MSR в EDX:EAX.
Обычно в таких случаях как у тебя помогают советы из западных мануалов по бытовой электронике (например, если на телевизоре нет изображения, проверьте, включен ли он в розетку). Так и здесь: проверь, поддерживает ли твой проц эти регистры (CPUID, EDX[5]=1), может у тебя 486? или может ты в ECX передаешь адрес несуществующего на данной модели проца регистра ? (адреса для Pentium, Pentium II и III, Pentium IV разные, например в IV пне регистров PMC 18 штук, а в просто пнях - всего 2).

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


Отвечает Traish

Приветствую Вас, MuRR!
Команды rdmsr/wrmsr требуют нулевой уровень привилегий, поэтому в реальном режиме они не работают.
Напиши под win9x VxD, либо под досом переходи в протмод. А лучше использовать команду rdpmc, которая также производит чтение счетчиков производительности, но может делать это при cpl<>0. Но имей ввиду, что эта команда - 686+.
Используется, по-моему, так:
;в ecx - 0/1
;edx:eax указывают куда поместить результат.
rdpmc
В противном случае - получишь #GP.


Ответ отправлен: 09.12.2002, 16:30
Отправитель: Traish


 Вопрос № 2085

Доброго времени суток уважаемые эксперты.
Спасибо Traish.
Ты был прав. Дос, даже из Нортона использует функцию 14h. И мне правда это не сильно помогло... Функция используется не всеми программами. Возможно используется прямой out
типа:
mov ax, 40h
mov es, ax ; в es - сегмент = 0040h
mov dx, es:[00] ; dx = базовый адрес порта COM1
mov COM1_adr, dx ; запомнили адрес порта COM1 в переменной

; mov ds,ds_e
; mov bx,dx_e
; mov ah, byte ptr ds:[bx]
mov ah,33 ;(!)
mov dx, COM1_adr ; DX=базовому адресу COM1
add dx, 5 ; DX=адресу регистра состояния
Wait:
in al, dx ; чтение байта состояния
test al, 40h ; Бит 6=1 (готов к передаче очередного байта)
jz wait ; Нет - ждем
sub dx, 5 ; DX=адресу регистра передатчика
mov al, ah
out dx, al ; Передача
А как бы это перехватить ?
Заранее благодарен...



Вопрос отправлен: 09.12.2002, 16:30
Отправитель: SLaViR

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

Отвечает Traish

Доброе время суток, SLaViR!
Да, в том-то проблема и есть, что программы могут по-разному использовать aux (да и не только). Действительно, некоторые напрямую работают с портом(в приложении фрагмент дизасма одной такой проги).
Вот насчет того, чтобы ПЕРЕХВАТИТЬ ЗАПИСЬ В ПОРТ, я право не знаю, и не думаю, что такое возможно. Может быть есть какие-то другие способы, но о них мне ничего неизвестно. Возможно, у экспертов есть идеи.

Приложение:

Ответ отправлен: 09.12.2002, 18:41
Отправитель: Traish


 Вопрос № 2086

Пожалуйста!!!
Пришлите, кто-нибудь, електронный справочник по функыиям Dos



Вопрос отправлен: 09.12.2002, 17:23
Отправитель: Alex

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

Отвечает Maverick

Приветствую Вас, Alex!
Куда?


Ответ отправлен: 09.12.2002, 19:56
Отправитель: Maverick


Отвечает Sensey

Добрый день, Alex!
www.shegeda.chat.ru\xview.zip = 870 kb


Ответ отправлен: 09.12.2002, 18:24
Отправитель: Sensey


Отвечает Traish

Доброе время суток, Alex!
Так а куда слать-то (ты же мыло не указал)?
Но если надо - вышлю.
Мыло мое - traish@mail.ru


Ответ отправлен: 09.12.2002, 17:44
Отправитель: Traish


 Вопрос № 2087

Здравствуйте, эксперты!
У меня к вам 2 вопроса :)
1. Где взять предыдущие выпуски этой рассылки? На этом адресе я уже была http://subscribe.ru/archive/comp.prog.assembler
2.Есть программа
При нажатии на клавишу ВК (Enter) выдавать на экран приглашение «>». На нажатие на другие клавиши не реагировать. После двадцати нажатий перейти в монитор.
Что это еще значит- перейти в монитор?
Я это естественно не придумывала.
Вот мой вариант, который, к сожалению не пашет.
Может, поможете ? ;)
Заранее благодарю


Приложение:


Вопрос отправлен: 09.12.2002, 18:52
Отправитель: Ольга

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

Отвечает Maverick

Добрый день, Ольга!
Ну и наворотила :)
В приложении твоя прога, исправленная.
В каком смысле не реагировала?
Можешь зациклить ее, и она не будет выходить.


Приложение:

Ответ отправлен: 09.12.2002, 19:56
Отправитель: Maverick


Отвечает Traish

Доброе время суток, Ольга!
Я что-то не совсем понял задачу.
> После двадцати нажатий перейти в монитор.
После двадцати нажатий клавиши Enter или после двадцати нажатий других клавиш? А что такое монитор я сам не знаю.
Но в соответствии с вашим исходником, могу предположить нижеследующее:
1. Ожидать нажатие клавиши.
2. Если это Enter (0dh) - вывести ">" и на выход. Если любая другая клавиша - повторить 1. Если было больше 20 повторов - на выход.
Если так, то исходник в приложении.


Приложение:

Ответ отправлен: 09.12.2002, 19:37
Отправитель: Traish


Отвечает Ayl

Добрый день, Ольга!
Классная прога :-)
Сначала расскажу про твои ошибки:
1. Ошибка при инициализации сегмента данных. У тебя написано(кстати, в программе эксперта Maverick та же ошибка):
mov ax,@Data
mov dx,ax <- неправильное указание регистра
а должно быть:
mov ax,@Data
mov ds,ax <- адрес сегмента данных заносится в DS
2. Проверка кода клавиши:
cmp al, 'k'
jz yes
yes:
...
mov ah,4ch
int 21h
END
jnz no
no:
Тут вообще прелесть! :-)
2.1. Во-первых, почему сравнивается с символом 'k'? Когда тебе нужна клавиша Enter? У Enter'а код - 0dh. Поэтому должно быть: cmp al, 0dh
2.2. Организация переходов.
jz yes
yes:
...
Смотрим, как эта конструкция будет работать. Процессор проверяет значение флага CF. Если флаг установлен, то происходит переход на команду, помеченную меткой yes. Пока вроже нормально. Теперь смотрим, что произойдет, если флаг сброшен. Условие не выполняется, поэтому передачи управления не произойдет и будет выполняться команда, следующая за инструкцией jz yes. А это опять команда, помеченная меткой yes! Т.е., независимо от значения флага CF следующая выполняемая инструкция - пол меткой yes.
По-моему, это не совсем то, что хотелось получить.
Должно быть реализовано приблизительно так:
cmp al, 0dh
jz yes
no:
...
yes:
...
Вместо многоточий - инструкции для выполнения по каждой ветке.
2.3.
END
jnz no
no:
С переходом - та же фигня. Но тут еще одна ошибка. Исходный текст транслируется до команды END. Когда транслятор встречает эту команду, он прекращает свою работу. Так что до строки jnz no он даже не дойдет!
3. Запись:
mov dx, OFFSET Message mov ah,9
некорректна. В правилах записи программ на языке ассемблера сказано, что каждая команда должна располагаться на отдельной строке. Поэтому в лучшем случае будет обработана команда mov dx, OFFSET Message, в худшем - выдана ошибка при трансляции.
4. Не просматривается даже намека на обработку 20 нажатий. Т.е. задание не выполнено даже в алгоритме.
Теперь перейдем к решению. Насчет монитора - скорее всего, имеется в виду возврат управления монитору операционной системы. Возможно, задания были составлены достаточно давно, когда еще работали на машинах типа ЕС или СМ. В них использовалось такое понятие - монитор ОС. Для DOS применяется другое - коммандные интерпретатор, хотя суть остается той же - взаимодействие ОС с пользователем. В твоем случае достаточно корректно завершить программу.
Теперь собственно программа. Есть ли в задании требование, чтобы использовалась модель SMALL или формировался EXE-файл. Если нет - тогда лучше всего создать COM-файл. Во-первых, он меньше, чем EXE. Во-вторых, быстрее загружается. В-третьих, быстрее работает (за счет отсутствия инициализации сегментов). Всего несколько тактов, но приятно :-)
Поэтому в приложении приведу пример программы для создания COM-файла, а ниже - что нужно сделать, чтобы сформировать EXE-файл в модели памяти SMALL.
Строка Message изменена на 10,13,'>$' для того, чтобы курсор оставался за символом '>', а не переходил на следующую строку.
Теперь о том, как эту программу изменить для модели SMALL.
Для этого надо выполнить 2 изменения:
1. Заменить слово TINY в директиве .Model на слово SMALL
2. Вместо команды ret написать:
mov ax, 4c00h
int 21h
Записываем в регистр AX, а не в AH, потому что после выполнения ф-ции 9 прерывания 21h в регистре AL находится число 24 (код символа '$'). Если код возврата нас не интересует, то можно написать и mov ah, 4ch.
И еще одна вещь. Теперь вместо линковки с помощью команды
tlink.exe 1.obj /t
нужно использовать просто:
tlink.exe 1.obj
При выполнении линковки будет выдано предупреждение No stack, но на это можно не обращать внимания, так как программа практически не использует стек. И для собственных нужд ей хватит места в сегменте данных, как он и устанавливается с помощью директивы .StartUp


Приложение:

Ответ отправлен: 10.12.2002, 14:37
Отправитель: Ayl


 Вопрос № 2088

Здравствуйте!
Мне надо на форме с помощью OpenGL нарисовать шарик.
На Wasm.ru ничего интересного нет.
Был на codenet.ru, там тоже мало чего...
Точней сказать много, но всё не очень понятно.
Заранее спасибо.



Вопрос отправлен: 09.12.2002, 20:35
Отправитель: Kron (kron@sigmanet.ru)

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

Отвечает Bob Johnson

Доброе время суток, Kron!
Вот тебе кусок работающего приложения, которое выводит кращающийся кубик.


Приложение:

Ответ отправлен: 10.12.2002, 20:38
Отправитель: Bob Johnson


 Вопрос № 2089

Доброго времени суток, уважаемые эксперты.
Не подскажете ссылки на описания форматов файлов .rc и makefile'ов
Заранее благодарен.



Вопрос отправлен: 09.12.2002, 20:44
Отправитель: v0id (v0id_dev@mail.ru)

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

Отвечает masquer

Приветствую Вас, v0id!
MSDN смотри, там про rc точно есть, а makefile - это ключи компилятора и директивы - что-где лежит, наверняка там тоже есть...

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


 Вопрос № 2092

Хайль, the best Эксперты!!!
У меня появилось желание писать дрова (сначала хотя бы под DOS), подскажите please где можно достать литературу по дровам или по программированию hardware (если это не одно и то же)?
Thanks forever!



Вопрос отправлен: 09.12.2002, 22:15
Отправитель: elm thasa (rix@vlink.ru)

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

Отвечает Maverick

Здравствуйте, elm thasa!
http://src.fitkursk.ru/books/prog-wdm.zip


Ответ отправлен: 10.12.2002, 05:48
Отправитель: Maverick


 Вопрос № 2093

Есть готовая программа, под Windows 95/98 - написана на C++, исходников нету. Я написал некую программу на C++, код которой мне необходимо вставить в этот экзэшник, причем так, что сначала выполняется моя програма, а потом данная. Возможно ли это? Трудно ли это? Если не очень трудно - то как это сделать? Опыта работы с ассемблером практически не имею, но проблема очень важная и срочная - так что если сможете - пожалуста помогите - отвечайте как можно полнее...



Вопрос отправлен: 09.12.2002, 23:18
Отправитель: Ivan

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

Отвечает masquer

Доброе время суток, Ivan!
Если необходимо именно "вживить" свой код в чужой экзе, то без ассемблера это достаточно проблематично. Смотри, и у твоей программы и у жертвы имеются таблицы импорта, собранные компилятором. Допустим ты сможешь создать новую секцию, скинуть в нее свой код, поправить заголовок, а как с импортом быть - тут либо твоя программа не заработает, либо жертва рухнет. Это так, для начала. Дальше еще больше проблем.
Резюме - сам ты этого сделать не сможешь, лучше попроси кого-нибудь за много литров пива :)

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


Отвечает igorash

Здравствуйте, Ivan!
Если эта прога некритична к своему названию, т.е. abc.exe или abc1.exe, и для нее ничего не изменится, то можно просто свою прогу назвать abc.exe, а из нее вызывать старую, которую назвать abc1.exe, и никакого асма ;)... а так... надо лезть в заголовок, менять точку входа на начало твоего куска кода, потом в конце твоего кода передавать управление на оригинальную точку входа..

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


Отвечает Maverick

Приветствую Вас, Ivan!
Да запросто, возьми любой исходник вируса, заражающкго екзешник, переделай его, вот и будет тебе то, что нужно.
Тебе надо "заразить" своей прогой другую, только не забудь убрать ту часть кода, которая отвечает за размножение и деструкцию :)
P.S.А говорят, что вирусы, это бесполезные проги.


Ответ отправлен: 10.12.2002, 05:48
Отправитель: Maverick


Отвечает DiGiT[old]

Добрый день, Ivan
Пишешь bat файл и в некм последовательно выполняешь две твое проги. А если серьезно ну и глупый вопрос... :))

Ответ отправлен: 10.12.2002, 09:21
Отправитель: DiGiT[old]



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

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

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




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

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


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

В избранное