· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.VIROLOGY —› С наступающим господа ассембирщики. Ну и Вопросик задам пожалуй

Посл.отвђт Сообщенiе


Дата: Дек 30, 2003 17:03:25

Хакеры опять обращаюсь к вам.
Почитал я "Сам себе компилятор (или руководство по мазохизму
для дзенствующих)". Оттуда я уяснил, что компилятор это грубо
говоря редактор меток, переменных, т.е. оффигительная штука,
которая проставляет реальные адреса вместо меток, переменных и
разннобрызных фигней из понятия Ассема. Отсуда я убедился, что
в файле хронимом на винте, уже есть адрес(смещение) инфа для ip.
Если чего не правильно понимаю поправьте.
И так как линейный в ДОсе равен физическому адресу, то у меня
до сих пор не отпадает вопрос. Попробую его сформулировать по
точнее:
Написав com-филю(неризидентный вирус) у него после компиляции и
линковки проставлены слева от кода смещения. Если его запустить
он найдет жертву, которая ему подходит и закинет в первые 3 ее
байта jmp, а в конец свой код. Далее когда это инфицированная про-
га начинает работу у нее в cs:100 стоит jmp на конец своего кода,
в конце кода смещения этого кода допустим идут так 0200,0202,0205,
и начиная отсюда находится код виря и его смещения идут так, как
я понимаю: 0100,0110 и так далее. Чтобы ds во время работы виря
правильно показывал, его корректируют. Вопрос таков сs не меняется,
а значит в ip=100 то он бедет обрабатывать jmp, а смещение 0100
стоит и коде и файла и в коде виря, Так почему же cs не корректи-
ровали? Что я еще, ни как не могу понять?

В теме:"способы адресации" лежит исходник. Буду очень благодарен,
если меня ткнут в ответ, ну и спасибо за прочтение вопроса.


Дата: Дек 30, 2003 20:41:53 · Поправил: S_T_A_S_

EvilsInterrupt
Похоже ты совсем запутался.

Смещение CS:100h в com файле может быть только ОДНО:
По адресу CS:00 находятся всякие данные (в книгах написано, какие).
Поэтому com загружается после них (по адресу CS:100h)
Когда вирус находится по адресу CS:200h, его смещение от начала сегмента и равно 200h.
Начало сегмента адресуется регистром CS. Адрес выполняемой команды = CS*10h+IP.
Когда мы делаем JMP CS:200h с адреса CS:100h (реально - это JMP $+100h), к IP прибавляется 100h.
Меняется СУММА CS*10h+IP. Она теперь равна CS*10h+200h. Т.е. как раз вирь.
Если поменять еще и CS, то какая будет сумма??

ЗАГРУЗИ ЭТУ ХРЕНЬ В ОТЛАДЧИК И ПОСМОТРИ ОПКОДЫ И РЕГИСТРЫ.
Ты же не будешь теоретически размышлять, где у бабы п.. лежит, и почему не в другом месте

ЗЫ
На мой вопрос будет в этом году ответ?


Дата: Янв 25, 2004 09:55:20

Хм, странный вопрос, лучше разберись с форматом COM-файла. Там всё ясно как божий день. По умолчанию у него все сегменты настроены на CS. а DS корректируют для того, чтобы правильно адресоваться к данным к примеру через косвенную регистровую адресацию. Хотя я этого пракически никогда и не делал. у меня больше канало
CS:[r,m] там.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.038