Рассылка закрыта
При закрытии подписчики были переданы в рассылку "RFpro.ru: Ассемблер? Это просто! Учимся программировать" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
RusFAQ.ru: программирование на языке Assembler
Информационный Канал Subscribe.Ru |
RusFAQ.ru: программирование на языке Assembler
Выпуск № 340
от 11.08.2002, 20:50
Администратор: Имя: Калашников О.А. URL: Информационный ресурс ICQ: 68951340 Россия, Москва |
О рассылке: Задано вопросов: 954 Отправлено ответов: 2821 Активность: 295.7 %
|
Список экспертов, ответы которых опубликованы в данном выпуске |
Pablo Статус: Опытный Общий рейтинг: 129.82 URL: Моя страничка [Подробней >>] |
Александр Статус: Профессиональный Общий рейтинг: 118.47 [Подробней >>] |
Gibbel Статус: Опытный Общий рейтинг: 109.64 URL: Страничка обо мне и моих друзьях [Подробней >>] |
masquer Статус: Профессиональный Общий рейтинг: 159.27 [Подробней >>] |
igorash Статус: Профессиональный Общий рейтинг: 119.77 [Подробней >>] |
ASMодей Статус: Опытный Общий рейтинг: 128.41 [Подробней >>] |
LIFO Статус: Доверительный Общий рейтинг: 136.5 [Подробней >>] |
Dark_Lord Статус: Доверительный Общий рейтинг: 126.66 [Подробней >>] |
Broken Sword Статус: Профессиональный Общий рейтинг: 137.21 [Подробней >>] |
AnSim Статус: Опытный Общий рейтинг: 110.41 [Подробней >>] |
baldr Статус: Профессиональный Общий рейтинг: 117.74 URL: Сайт об ОС DOS. Всем, кто любит эту ОС! [Подробней >>] |
copycon Статус: Начальный Общий рейтинг: 111.53 [Подробней >>] |
Топор Статус: Профессиональный Общий рейтинг: 117.98 URL: Хорошая Русская Металлическая команда Телефон: (8462)500298 [Подробней >>] |
vitya Статус: Профессиональный Общий рейтинг: 113.31 [Подробней >>] |
Sergey Lizin Статус: Начальный Общий рейтинг: 103.64 [Подробней >>] |
Igoryk Статус: Опытный Общий рейтинг: 112.71 URL: В помощь программисту [Подробней >>] |
Shal Статус: Опытный Общий рейтинг: 107.71 [Подробней >>] |
kvINT Статус: Опытный Общий рейтинг: 111.75 [Подробней >>] |
Краткий перечень вопросов |
Вопрос № 913. Здравствуйте уважаемые Эксперты! Вопрос в общем не по ассемблеру, но очень нужна ваша помощь - никак... (ответов: 1)
Вопрос № 914. Здраствуйте уважаемые господа эксперты. Вот решил вам задать наболевший для многих вопрос. Как скопи... (ответов: 3)
Вопрос № 915. Здравствуйте эксперты! Какой функцией и какого прерывания можно открыть файл (не прочитать в память(... (ответов: 7)
Вопрос № 916. Здравствуйте. На сайте www.kalashnikoff.ru взял книгу по написанию вирусов. Я никак не могу понять, ... (ответов: 5)
Вопрос № 917. Здравствуйте. Я снова про открытие файла...Я имею введу что когда я делаю так(см. Приложение),то Vo... (ответов: 1)
Вопрос № 919. Добрый день. Буду очень рад если подскажете как выделить память буффера для шифрофания если ето COM... (ответов: 4)
Вопрос № 920. У меня ламерский вопрос. Только начал изучать asm. Зачем нужна строчка 06. Почему AX и почему 9 (01)... (ответов: 13)
Вопросов: 7, ответов: 34
Вопрос № 913 |
Здравствуйте уважаемые Эксперты!
Вопрос в общем не по ассемблеру, но очень нужна ваша помощь - никак не могу найти подробную инфу по майлслотам - вообще что это такое и с чем их едят. Пытался ОЧЕНЬ внимательно почитать СДК - безрезультатно, много неясного. наваял в дельфи пробную прогу - майлслот вроде бы и создается, как с его помощью обмен данными по сетке реализовать - не знаю. У кого есть исходники - поделитесь плиз, а то уже неделю мучаюсь. Заранее спасибо.
С уважением, Диман
Вопрос отправлен: 07.08.2002, 11:53
Отправитель: Диман (dv2000@hotbox.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Приветствую Вас, Диман!
Ну есть в Дельфях компонент TNMSMTP и TNMPOP3 они как раз и предназначены для рабты с почтой, а работает они просто если отправить какой либо пакет нужно то он отправляется методами writeln или write, ну а принять паект можно методами read и readln, это методы TPowersocks, ну а в компонентах TMNPOP3 есть методы специальные для приема сообщений из почтового ящика, а в TNMSMTP для отправки сообщений.
Ответ отправлен: 07.08.2002, 19:35
Отправитель: Pablo
Вопрос № 914 |
Здраствуйте уважаемые господа эксперты.
Вот решил вам задать наболевший для многих вопрос.
Как скопировать CD с защитой StarForce (protect.dll)?
Заранее извеняюсь за оффтопик.
Вопрос отправлен: 07.08.2002, 13:13
Отправитель: x_alex (x_night@amur.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает Александр
Приветствую Вас, x_alex!
Насколько мне известно, то это возможно только побитовым копированием. Причём дисковод должен поддерживать функцию efm. Хотя на самом деле я не видел ни одной копии программ со StarForce, работавших без крека, поэтому я не ручаюсь за работоспособность побитовой копии. Универсальных креков как для SafeDisc и т.п. мной пока тоже не замечено...
Ответ отправлен: 08.08.2002, 07:05
Отправитель: Александр
Отвечает Gibbel
Здравствуйте, x_alex!
Есть такая прога - CloneCD. Копирует все (по крайней мере, у меня нет ни одного диска, который она не смогла бы скопировать).
Ответ отправлен: 07.08.2002, 13:46
Отправитель: Gibbel
Отвечает masquer
Добрый день, x_alex!Наболевший для многих? Ну, за всех не надо. А скопировать на стационарном приводе у тебя не получиться, ну не может привод субканал копировать, это только в заводских условиях. По крайней мере, я о таких приводах не слышал.
Ответ отправлен: 07.08.2002, 13:49
Отправитель: masquer
Вопрос № 915 |
Здравствуйте эксперты!
Какой функцией и какого прерывания можно открыть файл (не прочитать в память(3Dh),а открыть, как это делает пакетный файл ДОСа?
Всем Спасибо!
Вопрос отправлен: 07.08.2002, 17:42
Отправитель: R@ptor (Spinosaur@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает igorash
Здравствуйте, R@ptor!
Че-то недопонял.... а как это пакетный файл делает, в нем вроде нет команд на открытие файла... а 3D его не читает а открывает и ассоциирует с ним хендл
Ответ отправлен: 07.08.2002, 18:44
Отправитель: igorash
Отвечает ASMодей
Здравствуйте, R@ptor!
Не понял вопроса: функция 3Dh как раз и используется для
открытия файла, а в память файл читается функцией 3Fh.
А пакетный файл DOSа много чего может делать, ты бы
написал конкретную команду, может стало бы понятней.
Ответ отправлен: 08.08.2002, 10:26
Отправитель: ASMодей
Отвечает Pablo
Добрый день, R@ptor!
Между прочим функция 3dh именно открывает файл и занимает его указанным типом доступа. А читает в память файл функция 3fh.
А как открывает файл пакетный файл ДОСа?!
Ответ отправлен: 08.08.2002, 13:35
Отправитель: Pablo
Отвечает masquer
Приветствую Вас, R@ptor!
А что в твоем понимании открыть файл.
С файлом вообще по такой схеме работают: получение/открытие хендла файла, операции с файлом - чтение, запись, закрытие хендла.
А как делает пакетный файл?
Ответ отправлен: 07.08.2002, 18:08
Отправитель: masquer
Отвечает LIFO
Приветствую Вас, R@ptor!
А что ты подразумеваешь под словом открытие?
Всегда данные считываются в сиандартную память в 640 кило.
В частности функцией 3fh.
А уж потом манипулируй с ними как хочешь.
Ответ отправлен: 07.08.2002, 19:07
Отправитель: LIFO
Отвечает Dark_Lord
Добрый день, R@ptor!
А что, 3Dh загружает файл в память, странно... Мне кажется Вы не правильно поняли эту функцию, она возвращает не адрес в памяти а так называемый Handle, который по другому можно назвать указатель!
Ответ отправлен: 07.08.2002, 20:33
Отправитель: Dark_Lord
Отвечает Broken Sword
Приветствую Вас, R@ptor!
чето ты запорол... 3D - открыть СУЩЕСТВУЮЩИЙ ФАЙЛ (никуда ничего не читается) а 3F - уже чтение файла.
Ответ отправлен: 07.08.2002, 20:45
Отправитель: Broken Sword
Вопрос № 916 |
Здравствуйте.
На сайте www.kalashnikoff.ru взял книгу по написанию вирусов. Я никак не могу понять, если меняется смещение области данных вируса, то почему корректируют регистр DS, который отвечает за сегмент области данных. Заранее благодарю за ответ.
Вопрос отправлен: 07.08.2002, 18:29
Отправитель: Борис
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Добрый день, Борис!
Доступ к адресам в ДОС осуществляется с помощью 2-х регистров сегментного и смещения. Но адресуют они очень хитрым способом
для получение абсолютного адреса процессор делает следующее, сдвигает содержимое серментного регистра на 4 разряда влево, а затем добавляет к полученному результату содержимое регистра смещения, результатом является адрес ячейки памяти, к которой произведен доступ.
Например:
ds = 1001h
dx = 0
es = 1000h
bx = 10h
Так вот команды mov ax, ds:[dx] и mov ax, es:[bx] совершенно идентичны, если используемые регистры содержат приведенные выше значения.
Ответ отправлен: 08.08.2002, 13:35
Отправитель: Pablo
Отвечает ASMодей
Доброе время суток, Борис!
Вообще без примера не очень понятно что там делается, но
может быть дело в следующем: если смещение изменяется на
величину кратную 16 (размер параграфа), то в этом случае
можно корректировать адрес данных, изменяя регистр DS.
Ответ отправлен: 08.08.2002, 10:28
Отправитель: ASMодей
Отвечает AnSim
Добрый день, Борис!
меняется смещение области данных (!) вируса, то почему корректируют регистр DS, который отвечает за сегмент области данных (!)
ничего похожего не нашел в этих 2-х фразах?
Ответ отправлен: 08.08.2002, 13:07
Отправитель: AnSim
Отвечает LIFO
Добрый день, Борис!
Это делается для оттого, что в зараженной программе данные вируса сдвигаются на длину самой программы. Принято , что расчеты производятся в параграфах, вот и приходится округлять и прибавлять полученное число в ds.
Ответ отправлен: 07.08.2002, 19:07
Отправитель: LIFO
Отвечает baldr
Здравствуйте, Борис!
Тут надо смотреть сам текст.. Возможно, меняется не только смещение, но и сегмент, а может
быть, DS был раньше настроен на что-то другое...
Ответ отправлен: 09.08.2002, 01:31
Отправитель: baldr
Вопрос № 917 |
Здравствуйте.
Я снова про открытие файла...Я имею введу что когда я делаю так(см. Приложение),то Volcov не открывается(на дисплее его нет).А в пакетном файле я пишу путь к Волкову и при открытии моего пакетного файла я вижу волкова(я уже в оболочке).
Вот это мне и надо от программы на ассемблере...
Приложение:
Вопрос отправлен: 07.08.2002, 18:59
Отправитель: R@ptor (Spinosaur@narod.ru)
[Следующий вопрос >>] [Список вопросов]
Отвечает masquer
Здравствуйте, R@ptor!
Хе-хе, да тебе его просто запустить нужно. Ну приблизительно так делается. Хотя за подробностями лучше TechHelp посмотри - я досом не занимаюсь.
ax=4b00h
dx=c:vc.com
bx=addr ExecParamRec
Ответ отправлен: 08.08.2002, 16:45
Отправитель: masquer
Вопрос № 919 |
Добрый день.
Буду очень рад если подскажете как выделить память буффера для шифрофания если ето COM-программа.,используя 48 функцию 21 прерывания
Заранее благодарен.
До свидания.
Приложение:
Вопрос отправлен: 07.08.2002, 19:43
Отправитель: DARK_ALISON
[Следующий вопрос >>] [Список вопросов]
Отвечает Pablo
Доброе время суток, DARK_ALISON!
Посе загрузки в память COM программа имеет в своем распоряжении вся память, в отличие от EXE-программы которая загружается в память в созданный для нее блок подходящий по размеру.
Ответ отправлен: 08.08.2002, 13:35
Отправитель: Pablo
Отвечает LIFO
Здравствуйте, DARK_ALISON!
ah=48h
bx = число параграфов
C com - прогами немного сложнее. Прога такого типа всегда выделяет под себя максимальный кусок памяти , поэтому перед выделением блока функцией 48h нужно вначале освободить блок ф.49h, а уж потом выделять этот блок под свои нужды.
Ответ отправлен: 08.08.2002, 15:54
Отправитель: LIFO
Отвечает ASMодей
Здравствуйте, DARK_ALISON!
При запуске программы, DOS выделяет ей для использования
всю оставшуюся свободную память. Так что данные можно
записывать сразу после конца программы:
;для COM-программы
mov ax,cs
add ax,1000h
mov es,ax
sub di,di
;теперь в ES:DI находится адрес свободной памяти
Если же использовать функцию 48h, то перед ее
вызовом необходимо выполнить функцию 4Ah, уменьшив
количество памяти выделенное программе (иначе DOS не сможет
выделить большой блок памяти):
push cs
pop es
mov bx,1000h ;COM-программа не может занимать
mov ax,4Ah ;более одного сегмента
int 21h
mov bx,BUFER_SIZE
mov ax,48h
int 21h
Ответ отправлен: 08.08.2002, 10:29
Отправитель: ASMодей
Отвечает Broken Sword
Здравствуйте, DARK_ALISON!
не углубляясь в суть проблемы - у тебя в bx должен быть размер блока в 16-байтных ПАРАГРАФАХ!!! А у тебя что?? (1200*16) параграфов это знаешь сколько байт? тем более нахрена ты влепил .radix 16, если
mov bx,1200*16
это равносильно mov bx,1200h*16h это примерно сто тысяч, в bx не влезет. Вообщем, напорол ты боков...
и вообще не нада тебе ничего выделять, кода то не так много, пиши в конце buffer db code_len dup (?) оно места не займет и не парься (тем более если взять в соображение факт, что при загурзке комника дос сам выделяет ему по минимуму FFFF байт, т.е. по-любому хватит)
Ответ отправлен: 07.08.2002, 20:45
Отправитель: Broken Sword
Вопрос № 920 |
У меня ламерский вопрос. Только начал изучать asm.
Зачем нужна строчка 06. Почему AX и почему 9
(01) CSEG segment
(02) org 100h
(03)
(04) Begin:
(05)
(06) mov ah,9
(07) mov dx,offset Message
(08) int 21h
(09)
(10) int 20h
(11)
(12) Message db 'Hello, world!$'
(13) CSEG ends
(14) end Begin
Вопрос отправлен: 07.08.2002, 20:42
Отправитель: DAS
[Следующий вопрос >>] [Список вопросов]
Отвечает AnSim
Приветствую Вас, DAS!
Потому что 9 - функция 21-го прерывания - вывод на экран - так надо!
Ответ отправлен: 08.08.2002, 13:48
Отправитель: AnSim
Отвечает Pablo
Здравствуйте, DAS!
В данном случает загрузка в регистр ah значения и следующее на ним прерывание означает, что в данном куске программы будет использоваться функция по номеру загруженному в регистр ah из серсива предоставляемнго данным прерыванием.
Ответ отправлен: 08.08.2002, 13:35
Отправитель: Pablo
Отвечает copycon
Здравствуйте, DAS!
Настоятельно советую читать TechHelp и
InterruptList
От-туда ты узнаеш что при вызове прерывания
(int 21h - вызов 21h прерывания)
обработчику прерывания (почти всегда) необходимо
передать параметры - они передаються через регистры
(тоже почти всегда)
21h - главное прерывание для работы с DOS'ом
и в регистре AH(AX) передаетсь номер функции
09h - функция отображения строки на экран
другие функции этого прерывания делают очень
разные вещи.
Начиная от простейших - отображения одного символа,
считывания с клавиатуры символа и заканчивая работой
с файлами, памятью, сетью.
Различные резиденты (TSR) могут менять и|или добавлять
свои функции.
Пример: UNIVBE - добавляет к int10h функции по работе
с VGA, SVGA режимами экрана
SHARE - меняет работу с файлами
и т.д.
Удачи.
Ответ отправлен: 09.08.2002, 22:25
Отправитель: copycon
Отвечает Топор
Здравствуйте, DAS!
Ну, это просто. Перед вызовом прерывания DOS (int 21h) передаём ему параметры - в AX причину вызова (9 - вывод строки), в DX - адрес строки.
Ответ отправлен: 08.08.2002, 10:09
Отправитель: Топор
Отвечает vitya
Добрый день, DAS!
Передается номер фуннкции, обычно это делается через регистр AX, если функций меньше то ah можно al. Прерывания от мышки, например, работают через AX.
Ответ отправлен: 08.08.2002, 08:27
Отправитель: vitya
Отвечает Sergey Lizin
Доброе время суток, DAS!
Вопрос на самом деле ламмерскмй. Ну что-ж,
Прерывание 21h - прерывание с функциями, очень похожее на набор стандартных процедур в любом языке программирования. В регистр ah заносится номер функции, например функция 9 - вывести на экран строку символов.
Счастливо.
Ответ отправлен: 08.08.2002, 09:21
Отправитель: Sergey Lizin
Отвечает Igoryk
Добрый день, DAS!
Это 09 - это функция вывода на экран.
Почему AX? Потому, что того требует прерывание 21h, регистр AX может вмещать в себя максимум 2 байта, т.е. функций, вызванных через это прерывание может быть FFFFh. Части этих функций несуществует, а возможные значения просто зарезервированы.
Ответ отправлен: 08.08.2002, 11:03
Отправитель: Igoryk
Отвечает Dark_Lord
Добрый день, DAS!
Не ах, а ah, в неё задаётся номер функции прерывания 21h, которое вызывается позже, если бы её не было откуда ба прерывание узнало что ему делать с заданой строкой!
Ответ отправлен: 07.08.2002, 23:55
Отправитель: Dark_Lord
Отвечает ASMодей
Приветствую Вас, DAS!
Отвечаю по порядку:
1. Почему AX.
Во-первых не AX, а только AH. Во-вторых именно в AH
передается номер функции, которую будет выполнять
прерывание INT 21h.
2. Почему 9.
Функция с номером 09h как раз и отвечает за вывод
строки символов (адрес которой находится в регистрах
DS:DX) на экран.
Ответ отправлен: 08.08.2002, 10:30
Отправитель: ASMодей
Отвечает Shal
Доброе время суток, DAS!
Именно эти три строки (6, 7 и 8) предназначены для вывода сообщения на экрн. Это стандарт. Ну так сдеално...Не бери лишнего в голову...
Ответ отправлен: 09.08.2002, 16:53
Отправитель: Shal
Отвечает LIFO
Приветствую Вас, DAS!
Это функция прерывания 21h. Это досовское прерываение, имеющее множество функций ( работа с файлами, вывод строки и т.п. )Так вот чтобы вывести на экран ASCII строку( заканчивающуюся символом $) , надо вызвать 21 прерывание , в регистр надо поместить 9.
Ответ отправлен: 07.08.2002, 21:31
Отправитель: LIFO
Отвечает kvINT
Доброе время суток, DAS!
Здесь мы обращаемся к средствам DOS. А именно к 9-й функции 21-го прерывания (которое и позволяет обратиться к средствам DOS). Прерывание мы вызываем посредством int21, при этом в ah должен находиться номер функции этого прерывания (их очень много, этих функций).
Ответ отправлен: 08.08.2002, 20:32
Отправитель: kvINT
Отвечает baldr
Здравствуйте, DAS!
В процессорах Intel и им подобных принято при вызове какого-либо прерывания номер функции
помещать в регистр ax. Обработчик этого прерывания смотрит этот регистр и вызывает саму эту
функцию. Он знает как... 9 - это номер функции вывода строки на экран.
Ответ отправлен: 09.08.2002, 01:31
Отправитель: baldr
Форма отправки вопроса |
Форма может работать некорректно в почтовых программах "Microsoft Outlook" и "Microsoft Outlook Express". В программе The Bat! подобные формы не работают вообще!
После нажатия на кнопку "Отправить", будет открыто второе окно. Заметьте, что в некоторых браузерах могут стоять запреты на открытие других окон, а также "чрезмерное" кэширование данных, при этом факт отправки Вашего вопроса стоит под сомнением.
Мы рекомендуем открывать рассылку в программе Internet Explorer 5.0+ или отправлять вопросы с сайта по адресу: http://rusfaq.ru/cgi-bin/Message.cgi.
© 2002 Команда RusFAQ.ru.
Вопрос и дополнение |
Ваш вопрос:
Приложение (если необходимо):
Получить ответов:
Выбор рассылки |
Программисту Assembler (41) C / C++ (29) Perl (13) Delphi (18) Pascal (33) Basic / VBA (11) Java / JavaScript (12) PHP (10) MySQL / MSSQL (10) |
Пользователю Windows 95/98/Me (47) Windows NT/2000/XP (31) "Железо" (36) Поиск информации (19) |
Администратору Windows NT/2000/XP (17) Linux / Unix (11) |
Юристу Гражданское право (5) Семейное право (3) Трудовое право (4) КоАП (2) |
Отправить вопрос всем экспертам выбранной рассылки.
© 2002 Россия, Москва. Авторское право: RusFAQ.ru |
http://subscribe.ru/
E-mail: ask@subscribe.ru |
Отписаться
Убрать рекламу |
В избранное | ||