Разбираюсь как работает одна прога. В процессе работы она скидывает в LPT порт примерно 4 кило из массива. Нужно эти самые 4 кило скинуть в файл. Пытался искать в экзешнике по первым 4 4 байтам - нигде нет. Вывод - либо генерирует, либо расшифровывает. Отсюда - самый простой способ заполучить эти байтики - сделать дамп памяти. Не подскажет ли всезнающий ALL, как такой провернуть в SoftIce или в TRW2000.
defrag В SoftICE выдаешь команду d вызываешь loader32 и сохраняешь протокол(history). А почему ты уверен, что это массив. Может прога его динамически генерит.....
defrag Динамически означает что никакого массива нет. Генерит байт - посылает, потом другой. Может там вообще не массив, а протокол обмена с электронным ключом ?!
defrag так вот. есть так называемые дебугерные регистры. их 4 штуки. Портоф для лпт всего три, так что, пишешь драйвер, соответствующим образом инициализируешь эти регистры и ловишь их на int 1. Вот и все дела.
Если ты уверен, что этот массив без изменений суют в порт, то останов в этой программе, команда d ( выдача памяти) и сохранение протокола. Ставить IceExt из-за 4 Кб нет резона. У меня он например глючит..... А запись протокола работает
defrag а ещё возьми портмон Руссиновича, да погляди, если твоя прога юзает стандартный системный драйвер
CARDINAL Не, не юзает, она досовская и байты в порт посылает по какому то извращенскому протоколу, который не похож ни на byte mode ни на nibble mode. Есть процедуры передачи данных по EPP, но они начинают работать только после того, как указанный массив заслан в устройство.
Да я совсем забыл, нужно было дамп не в текстовом виде. Тогда либо IceExt, хотя для ДОС возможно и не подойдет, либо уже описанный метод + простенький конвертор. Либо WinHex (с ДОС-ом дружит) и возможно procdump.
defrag ну так а если под дос, то какая разница, процы пентиум уже предоставляют возможность отслеживать манипуляции с портами в реальном режиме, проще не бывает
Процессоры позволяют, но вот SoftIce это умеет только в 98-м, а в 2000-м благополучно ничего не ловит. И bpint тоже не работает. Имеются ввиду ДОС-программы. CARDINAL может ты знаешь в чем причина ?!
Если ничего не ловит, то есть на то интелловские мануалы, пример для доса по отлову портов смотреть в книжке Криса Касперски Техника и филосовия Хакерских Атак, первое издание, и, ещё, про айс, ты глянь в регистр CR4, там кое какой битик должен быть поднят.
Мне не ДОС нужен, а ntvdm вообще-то. В ДОС-е у меня проблем не было. Про CR4 я прочел и даже пропатчил SOFTICE(4.27). Более того - посмотрел регистры прямо в месте останова. Все ОК, но порты не ловит. Дело именно в ntvdm, т.к. в самом W2K я ловил обращения к LPT. Может в 4.31 исправили уже, но мне пока не до ДОС.
valterg Ну, тада не знаю, что тебе ещё посоветовать, пробуй сам руками, пиши дравер, вешай на int #DB, правильно инициализируй отладочные регистры и всё должно работать, такого не бывает, что бы не работало. так что, дерзай.
Не переживай. Я просто 98-й загрузил и нашел все обращения к порту, а потом просто поставил бряки в этих местах. Да и задачка не моя. Мужик попросил и сгинул куда-то Можно еще попробовать в Virtual PC это все провернуть, но SoftICE капризничает. В WIN2K в самой системе не работает, а процесс загрузки отлаживает прекрасно А совет по поводу драйвера Diamond для SoftICE под Virtual PC я не смог применить - ну нету у меня его в списке :-(