SoftICE как логгер крис касперски ака мыщъх Хакер, номер #084, стр. 084-112-7 [анимэ и SoftICE] Некоторые отладчики (такие, например, как OllyDbg) имеют одну полезную фишку, которую не имеет SoftICE. А именно - возможность пошаговой анимированной трассировки с условными точками останова на каждом ходу. Например, можно поставить точку останова на конструкцию 'TEST EAX,EAX/Jx XXX', заставив отладчик всплывать всякий раз, когда EAX будет равен нулю или любому другому значению на наш выбор. Что-то вроде 'BPX IF (*word(EIP)==0xC085 && (*byte(EIP+2) & 70h)==70h)'. Здесь 0xC085 - опкод команды TEST EAX,EAX, а 70h - маска инструкции Jx, ну а вся точка останова в целом позволяет отлавливать код типа "if (func(1,2,3)!=0)…", которые часто используется в защитных механизмах. SoftICE таких шуток не понимает и требует, чтобы адрес точки останова был задан явно, например 'BPX EIP...', но и в этом случае он создает одну единственную точку останова, опираясь на текущее значение EIP (каким оно было в момент создания точки останова) и отказываясь автоматически «пересчитывать» его по ходу следования программы. Какая жалость! А ведь ради этой возможности многие хакеры отказываются от привычного SoftICE и мигрируют в сторону OllyDbg. Между тем, решение есть! Макросы могут быть вложенными! Попробуйте написать 'MACRO XYZ="T; XYZ;"', наберите XYZ и посмотрите что получится. SoftICE начнет анимировать программу! Не слишком быстро, но все-таки достаточно производительно. Во всяком случае, для распаковки навесных упаковщиков вполне подойдет. Коль скоро мы научились анимировать программу, создание условных точек уже не станет проблемой. Вот, например, такой полезный макрос: 'MACRO XYZ = "BPX EIP;T;XYZ;"'. Что он делает? А вот что! Он выделяет трассу следования программы, помечая выполненный код, и мы сразу видим, какие условные переходы выполнялись, а какие нет. Только необходимо учитывать, что количество точек останова ограниченно, и потому их периодически необходимо снимать. [заключение] SoftICE - это действительно мощный инструмент необыкновенной разрушительной силы, который позволяет делать все, что нужно и даже немного больше. Главное - фантазию иметь. Русский мужик всегда отличался умением собирать из всяких подручных средств потрясающие вещи. Вот так и с отладкой. Вместо того чтобы искать отладчик, реализующий необходимый нам функционал, мы можем взять в руки напильник и доработать уже существующий, тем более, что логгинг - это не единственная альтернативная профессия SoftICE. При желании из него можно соорудить отличный дампер или что-то еще. Но это тема уже другого разговора. Главное - схватить идею. Эта статья не предлагает готовых решений, но зато поднимает целый пласт возможностей, которые каждый может использовать по своему усмотрению. |