ВУЗ:
Составители:
Рубрика:
144
–
трассировка (отладка) дизассемблированной программы.
Исходные тексты программ и файлы данных в текстовом формате - это
самый легкий способ узнать, "как там все устроено". Только ленивый может
удержаться от этого. Поэтому весьма наивным было бы оставлять хоть ка-
кую-то информацию, связанную с защитными мерами в текстовом формате,
и надеяться на ее действенность
. Это все равно, что поставить на дверь су-
перзамок и держать ключ под ковриком возле двери. Правда, профессио-
нальный взломщик может, ввиду очевидности, и не "догадаться" до этого, но
каждый сам должен решать, насколько можно доверять тому, что именно так
и будет в дествительности.
Дизассемблирование осуществляется с помощью специальных программ,
которые программу в машинном коде в формате исполняемого com- или exe-
файла преобразуют в текстовый файл, содержащий запись этой программы
на языке ассемблера, независимо от того, на каком языке был написан исход-
ный текст этой программы до ее компиляции. Следует иметь ввиду, что
трансляция с языка высокого уровня в принципе необратима, так как
много
информации из исходного текста утрачивается безвозвратно. Более того, да-
же ассемблерный текст дизассемблированной программы будет отличаться
от исходного текста программы на ассемблере, и отнюдь не только отсутст-
вием комментариев и макроопределений. Единственное, что гарантирует ди-
зассемблирование - что если восстановленный ассемблерный текст вновь
протранслировать, получится машинная программа, дающая в точности
тот
же результат при ее исполнении. Основное, что дает дизассемблирование -
это изучать в ассемблерной форме работу программы ("читать" ее) человеку,
гораздо легче, чем многотысячные потоки нулей единиц машинного кода.
Трассировка (отладка) это выполнение (скорее имитация выполнения)
программы с помощью специальной программы - отладчика, который позво-
ляет осуществлять пошаговое выполнение программы с возможностью
в лю-
бой момент времени просмотреть содержимое любых аппаратных регистров,
флагов процессора и любых областей памяти, в том числе и областей, ис-
пользуемых операционной системой. Трассировка это мощное подспорье при
отладке своих программ и, естественно, при изучении чужих. Некоторые от-
ладчики используют специальную аппаратную поддержку в виде отдельно
вставляемого в
компьютер электронного модуля (платы). В этом случае уда-
ется подсмотреть такие интимные подробности выполнения программ, кото-
рые иначе практически недоступны (отслеживание вложенных прерываний,
просмотр асинхронных обменов и т.п.). Однако любой трассировщик имеет
больное место - он всегда интенсивно использует систему прерываний, кото-
рая и служит основой для имитации пошагового режима отладки
.