"Опыт дизассемблирования большой .com - программы" - читать интересную книгу автора (Крупник А.Б.)

ОПЫТ ДИЗАССЕМБЛИРОВАНИЯ БОЛЬШОЙ .COM ПРОГРАММЫ




А.Б.КРУПНИК



В данной статье мне хочется рассказать о дизассемблировании большой
программы (графического редактора). Не будучи знатоком ассемблера, не
зная до сих пор, как использовать большинство возможностей своего дизас-
семблера(DisDoc 2.3), я все же решился написать эту статью, так как пре-
красно помню, в какой кромешной тьме начинал заниматься дизассемблирова-
нием.
Тогда, год назад, я попробовал дизассемблировать простенькую програм-
му и был страшно удивлен тем, что дизассемблер делает это неправильно, и
при повторном ассеблировании программа не работала так, как надо. Тогда же
мне удалось поговорить со знающим человеком и, хотя я чувствовал себя на-
ивным дурачком, мне удалось выяснить главное: ПОЛНОЕ,АВТОМАТИЧЕСКОЕ ДИЗАС-
СЕМБЛИРОВАНИЕ НЕВОЗМОЖНО, над тем текстом, который выдает дизассемблер, нуж-
но довольно долго работать, прежде чем ассемблирование этого текста даст ра-
ботоспособную программу.
В дальнейшем я постараюсь рассказать о тех приемах, которые превращают
"плохой" текст в "хороший" , т.е. в текст, который не только дает корректно
работающую программу при ассемблировании, но и позволяет себя изменить, что-
бы усовершенствовать исходную программу.



ПОЧЕМУ DisDoc?

SOURSER - это название знают все, кто хотя бы краем уха слышал о дизас-
себлировании. Считается, что это дизассеблер замечательный, мощный, не име-
ющий конкурентов. Я думаю, что слухи об огромных преимуществах SOURSERа силь-
но преувеличены. У меня сложилось такое впечатление, что при дизассемблирова-
нии небольших программ (до 7 кб.) SOURSER предпочтительнее. Когда программа
велика (в моем случае - 58 кб ), SOURSER работает очень медленно и, на мой
взгляд, не дает никаких преимуществ.
Выбор дизассемблера DisDoc 2.3 был для меня во многом случаен. Начиная ра-
боту, я получил тексты на ассемблере как с помощью SOURSERa (версия 3.07), так
и с помощью дизассемблера DisDoc 2.3. Затем оба текста после устранения очевид-
ных ошибок были ассемблированы. И вот, то, что было выдано SOURSERом, повисло
сразу, а то, что выдал DisDoc 2.3, прежде чем повиснуть, вывело на экран нес-
колько линий. Это и определило выбор. В процессе работы я не раз имел возмож-
ность оценить основное преимущество дизассемблера DisDoc - интуитивно понятный,
неизощренный, удобный и компактный листинг.
Чтобы понять дальнейшее, необходимо познакомиться с отрывком из листинга, кото-
рый выдает DisDoc 2.3