Вопрос № 23910: Здраствуйте.
Что нужно, в програмном плане, для начала самообучения на асамблере, под Windows.
Бытует мнение, что для этого недо прикупить старенький комп и на нём обучатся, иначе можно повредить свой основной комп. Вообще для этого надеюсь ...Вопрос № 23915: Скажите как зделать чтоб выводилась строка нпример ЖОлТого цвета..
вот шмацы кодинга и??немогу собрать и понять 0_O! помогити плиз.
;""ИЗВИНИТЕ ЗА ГРАМАТНОСТЬ РУССКИЙ НЕ ИЗУЧЯЛ! ...Вопрос № 23916:
Ds:0000 будет 8484 >ax
почяму веть не указывалясь ds?
И в td нечирта не видно?
ES – дополнительный сегментный
di - индекс приемника
ds - Сегмент данных
немогу понять помогите плиз.
...Вопрос № 23918: Здраствуйте.
Я пытаюсь изучать асамблер по руководству Калашникова. И когда я компилирую вот етот текст:
CSEG segment
org 100h
Begin:
mov ax,0B800h
mov es,ax
mov di,0
mov al,1
mov ah,31
mov cx,2...Вопрос № 23926: Добрый день!
Изучаю 20 урок. Там речь идет о вирусе. Там написано, что первые 6 байт «файла жертвы» мы храним в массиве First_bytes db 4 dup (90h), 0CDh, 20h. Но как я понимаю мы эти первые 6 байт заносим за концом вируса, т.е. после этого массив...
Вопрос № 23.910
Здраствуйте.
Что нужно, в програмном плане, для начала самообучения на асамблере, под Windows.
Бытует мнение, что для этого недо прикупить старенький комп и на нём обучатся, иначе можно повредить свой основной комп. Вообще для этого надеюсь не обязательно ставить DOS?
Отправлен: 23.07.2005, 15:25
Вопрос задал: Васильков Николай Петрович (статус: Специалист)
Всего ответов отправлено: 3
Отвечает: Стас
Здравствуйте, Васильков Николай Петрович!
>повредить свой основной комп.
Повредить комп с помощью ассемблера сложно, можно угробить инфу на винте, и то...
А под виндами сделать это еще сложнее.
DOS ставить не надо -он у тебя уже есть :).
Из программных продуктов нужен блокнот - для написания текста проги,
пакет которым будешь компилировать, напр. MASM32.
И желательно дебаггер - тут уж на вскус и цвет - S-ICE, Olly...
Ответ отправил: Стас (статус: Практикант)
Отправлен: 24.07.2005, 00:51 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ, не можешь ли подказать сайты с помощью по асамблеру, где взять компиляторы - ответ можно в минифоруме.
Отвечает: ASMодей
Здравствуйте, Васильков Николай Петрович!
Повредить сам компьютер вам вряд ли удастся, а вот повредить информацию на дисках можно, поэтому советую использовать специальные программы - эмуляторы компьютеров. Наиболее типичные представители - VMWare (советую), VirtualPC (не советую :) и Bochs (тоже советую, но не для начала обучения, а несколько попозже).
Ответ отправил: ASMодей (статус: Профессионал)
Отправлен: 24.07.2005, 15:16
Отвечает: Евгений Иванов
Здравствуйте, Васильков Николай Петрович!
запросто, если будешь орудовать с портами CMOS или диска.
хотя просто испортишь логически, а физически можно только видеокарту или монитор подпалить, если неправильно программировать видеоадаптер, хотя все правила описаны, читай внимательно.
удачи.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 27.07.2005, 19:12 Оценка за ответ: 5 Комментарий оценки: Спасибо, интересный ответ.
Вопрос № 23.915
Скажите как зделать чтоб выводилась строка нпример ЖОлТого цвета..
вот шмацы кодинга и??немогу собрать и понять 0_O! помогити плиз.
;""ИЗВИНИТЕ ЗА ГРАМАТНОСТЬ РУССКИЙ НЕ ИЗУЧЯЛ!
Приложение:
Отправлен: 23.07.2005, 18:02
Вопрос задал: IngineringG (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Стас
Здравствуйте, IngineringG!
По этому коду ничего сказать нельзя, здесь нет "нашего резидента", который собственно и должен вывожить цветной текст.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 24.07.2005, 00:24
Отвечает: Ayl
Здравствуйте, IngineringG!
В видеопамяти для символа отводится 2 байта: один для кода символа, второй - для аттрибута.
Что же такое аттрибут?
Это такая фишка, которая сообщает видеокарте, каким цветом и на каком фоне отображать символ. Вот его формат:
BFFFCCCC, где:
B - признак мерцания или повышенной интенсивности фона (что именно, определяется установками регистров видеокарты)
FFF - код цвета фона (0-7)
CCCC - код цвета символа (0-15)
Если ты хочешь вывести желтые символы на черном фоне, то в качестве CCCC надо установить 14 (при стандартной установке политры), а в качестве FFF - 0. В качестве B - тоже 0.
Итак, байт аттрибута будет 00001110 = 0eh
См.код.
Приложение:
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 25.07.2005, 11:47 Оценка за ответ: 5
Вопрос № 23.916
Ds:0000 будет 8484 >ax
почяму веть не указывалясь ds?
И в td нечирта не видно?
ES – дополнительный сегментный
di - индекс приемника
ds - Сегмент данных
немогу понять помогите плиз.
Приложение:
Отправлен: 23.07.2005, 18:04
Вопрос задал: IngineringG (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Стас
Здравствуйте, IngineringG!
заметь ты не только DS не указал, но и DI!!
Дело собственно вот в чем, кдгда ты грузишь COM прогу в дебаггер он чистит все регистры AX=BX....=SI=DI=0, SP естественно указывает на стек, а CS=DS=ES!
Именно потому что ES = DS, а di=0 у тебя такой результат.
Стоит заметить, что при запуске без дебаггера, результаты будут не столь радужные. И не забывать инициализировать (давать какие нибудь осмысленные значения) все регистры которые собираешся использовать.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 24.07.2005, 00:37
Отвечает: Евгений Иванов
Здравствуйте, IngineringG!
и так будет работать. использовалось то, что нужно по алгоритму работы
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 27.07.2005, 20:23
Вопрос № 23.918
Здраствуйте.
Я пытаюсь изучать асамблер по руководству Калашникова. И когда я компилирую вот етот текст:
CSEG ends
end Begin
с помощю TASM виплывает ошибка:
**Error** 1.asm<15> Near jump or call to different CS.
Што мне делать?
Зарание блогодарен.
Отправлен: 23.07.2005, 19:00
Вопрос задал: mOrteR (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: Стас
Здравствуйте, D.O.O.!
Дело в том что ассемблер не знает чему у тебя равен CS, поэтому укажи ему, поставь после CSEG segment строку assume cs:CSEG, ds:CSEG, ss:CSEG, es:CSEG
и все заработает.
Ответ отправил: Стас (статус: Практикант)
Отправлен: 24.07.2005, 00:42 Оценка за ответ: 5
Отвечает: Ayl
Здравствуйте, D.O.O.!
Поставь ASSUME cs:CSEG после CSEG segment
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 25.07.2005, 11:50
Отвечает: Евгений Иванов
Здравствуйте, D.O.O.!
добавь директивы ASSUME и MODEl.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 27.07.2005, 20:36
Вопрос № 23.926
Добрый день!
Изучаю 20 урок. Там речь идет о вирусе. Там написано, что первые 6 байт «файла жертвы» мы храним в массиве First_bytes db 4 dup (90h), 0CDh, 20h. Но как я понимаю мы эти первые 6 байт заносим за концом вируса, т.е. после этого массива:
mov ah,3Fh
mov cx,F_bytes ;Читаем первые шесть байт "файла-жертвы"...
mov dx,offset Finish ;...в хвост нашего вируса.
int 21h
И читаем их потом тоже с этой области памяти:
mov ah,40h ;После тела вируса дописываем первые
mov cx,F_bytes ;настоящие шесть байт "файла-жертвы"...
mov dx,offset Finish
int 21h
Но зачем тогда этот массив?
Заранее спасибо за ответ.
Отправлен: 23.07.2005, 20:33
Вопрос задал: Programist (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Стас
Здравствуйте, Programist!
Там же написано, чтобы при первом запуске сработало INT20
Кроме того возможно эти байты участвуют в подсчете длины. (влом разбираться)
Ответ отправил: Стас (статус: Практикант)
Отправлен: 24.07.2005, 00:57
Отвечает: mvp
Здравствуйте, Programist!
Урок не читал, но судя по всему, заражение происходит следующим образом. Найдя подходящий файл-жертву, читается первые его 6 байт и сохраняются в области памяти в конце кода вируса. Далее вычисляется точка входа вируса в заражённый файл и в начало заражённой программы прописывается переход на точку входа вируса (когда вирус получит управление, сделает своё дело, восстановит старые 6 байт заражённой программы, но уже в памяти и передаст ей управление). Далее необходимо записать код вируса в конец файла (подозреваю,
что так и есть), в том числе и сохранённые оригинальные первые шесть байт жертвы.
Предполагаю, что дописать в файл код вируса вместе с этими 6-ю байтами можно было сразу, т. к. они располагаются последовательно. Но, видимо, для наглядности запись кода разделили.
А массив таки надо: Во-первых, чтобы хранить эти 6 байт до записи, а во-вторых этот массив эквивалентен командам:
nop
nop
nop
nop
int 20h
Т. е., если запустить скомпилированный исходник вируса и запустить его, то вирус будет считать, что заразил программу, состоящую из этих строчек, т. е. отработав в первый раз, он передаст управление на эти строчки, которые и завершат работу программы (Int 20h).
Всё вішесказанное лишь предположение, т. к. исходника не видел. Но могу предположить, что это com-вирус и тогда было-бы достаточно обойтись 3 байтами, вместо шести:
First_bytes db 90h, 0cdh, 20h
, т. к. переход происходит в пределах сегмента и длина команды такого перехода как раз 3 байта.
--------- Моя совесть чиста - не бывшая в употреблении
Ответ отправил: mvp (статус: 3-ий класс)
Отправлен: 25.07.2005, 13:10 Оценка за ответ: 5