|
|
| Посл.отвђт | Сообщен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 |