Alt: F2-Bkpt at F3-Close F4-Back F5-User F6-Undo F7-Instr F8-Rtn F9-To F10-Local
Экран 2. Введен и записан по адресу 017BH первый символ тестового пароля
В данном примере введен пароль’123’, в нижнем окне появилось шестнадцатеричное представление введенного пароля:
‘31 32 33’ по указанному адресу
Ё File View Run Breakpoints Data Options Window Help READY
╔═[■]═CPU 80486═══════════════════════════════════════════════╤═══════1════[]═╗
║ cs:0100 B409 mov ah,09 │ ax 0133 │c=0║
║ cs:0102 BA8F01 mov dx,018F │ bx 0000 │z=0║
║ cs:0105 CD21 int 21 │ cx 0007 │s=0║
║ cs:0107 B90A00 mov cx,000A │ dx 018F │o=0║
║ cs:010A BE0000 mov si,0000 │ si 0003 │p=1║
║ cs:010DB401 mov ah,01 │ di 0000 │a=0║
║ cs:010F CD21 int 21 │ bp 0000 │i=1║
║ cs:0111 3C0D cmp al,0D │ sp FFFC │d=0║
║ cs:0113 7407 je 011C │ ds 4E86 │ ║
║ cs:0115 88847B01 mov [si+017B],al │ es 4E86 │ ║
║ cs:0119 46 inc si │ ss 4E86 │ ║
║ cs:011A E2F1 loop 010D │ cs 4E86 │ ║
║ cs:011C B409 mov ah,09 │ ip 010D │ ║
║ cs:011E BAFE01 mov dx,01FE │ │ ║
║ cs:0121 CD21 int 21 │ │ ║
╟─────────────────────────────────────────────────────────────┼────────────┴───╢
║ ds:0178 00 CD 21 31 32 33 00 00 ═!123 ‑ ss:0004 9A00 ║
║ ds:0180 00 00 00 00 00 00 00 00 ■ ss:0002 9FFF ║
║ ds:0188 00 00 00 00 00 00 00 69 i ▒ ss:0000 20CD ║
║ ds:0190 6E 70 75 74 20 70 61 73 nput pas ▒ ss:FFFE 0000 ║
║ ds:0198 73 77 6F 72 64 3A 20 24 sword: $ ss:FFFC0000 ║
╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒■▒▒▒▒▒▒▒▒▒▒▒▒▒▒╧═══════════════─┘
Alt: F2-Bkpt at F3-Close F4-Back F5-User F6-Undo F7-Instr F8-Rtn F9-To F10-Local
Экран 3. Введен и записан по адресу 017BH пароль ‘123’(31 32 33Н)
Ввод пароля завершается нажатием клавиши Еnter (0DH)
-----------------------------------------------------------------------------Turbo Debugger Version 2.0 Copyright (c) 1988, 1990 Borland International
input password: 123
input fio:
Экран 4. По ALT F5 просмотр сообщений программы после ввода пароля и приглашения к вводу имени пользователя
После этого совершенно аналогичным образом вводится имя пользователя.
Ё File View Run Breakpoints Data Options Window Help READY
╔═[■]═CPU 80486═══════════════════════════════════════════════╤═══════1════[]═╗
║ cs:0130 B401 mov ah,01 │ ax 010D │c=0║
║ cs:0132 CD21 int 21 │ bx 0000 │z=0║
║ cs:01343C0D cmp al,0D │ cx 004C │s=0║
║ cs:0136 7407 je 013F │ dx 01A0 │o=0║
║ cs:0138 8884AC01 mov [si+01AC],al │ si 0003 │p=1║
║ cs:013C 46 inc si │ di 0000 │a=0║
║ cs:013D E2F1 loop 0130 │ bp 0000 │i=1║
║ cs:013F B409 mov ah,09 │ sp FFFC │d=0║
║ cs:0141 BAFC01 mov dx,01FC │ ds 4E90 │ ║
║ cs:0144 CD21 int 21 │ es 4E90 │ ║
║ cs:0146 BAAC01 mov dx,01AC │ ss 4E90 │ ║
║ cs:0149 CD21 int 21 │ cs 4E90 │ ║
║ cs:014B BAFE01 mov dx,01FE │ ip 0134 │ ║
║ cs:014E CD21 int 21 │ │ ║
║ cs:0150 B90500 mov cx,0005 │ │ ║
╟─────────────────────────────────────────────────────────────┼────────────┴───╢
║ ds:01A8 6F 3A 20 24 41 42 43 24 o: $ABC$ ‑ ss:FFFE 0000 ║
║ ds:01B0 24 24 24 24 24 24 24 24 $$$$$$$$ ■ ss:FFFC0000 ║
║ ds:01B8 24 24 24 24 24 24 24 24 $$$$$$$$ ▒ ss:FFFA 3206 ║
║ ds:01C0 24 24 24 24 24 24 24 24 $$$$$$$$ ▒ ss:FFF8 4E90 ║
║ ds:01C8 24 24 24 24 24 24 24 24 $$$$$$$$ ss:FFF6 0135 ║
╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╧═══════════════─┘
Alt: F2-Bkpt at F3-Close F4-Back F5-User F6-Undo F7-Instr F8-Rtn F9-To F10-Local
Экран 5. Введено и записано по адресу 01AC тестовое имя пользователя
‘ABC’(41 42 43Н)
- Далее в программе в цикле сравнивает содержимое памяти по адресу, начиная с 0201h, с содержимым памяти по адресу 017Bh, при этом применяется шифрование с помощью команды XOR (исключающее ИЛИ) с числом 073H. Команда XOR побитово помещает в первый операнд бит 0, если соответствующие биты операндов совпадают и 1, если биты различны.
После команды XOR (операнд 075Н) первая буква пароля по адресу 0201Н (FE H)дешифрована в регистре BL (8B H = ‘Л’) Значит, первая буква пароля – ‘Л’
Ё File View Run Breakpoints Data Options Window Help
╔═[■]═CPU 80486═══════════════════════════════╤═══════1═[][]═╗
║ cs:014B BAFE01 mov dx,01FE │ ax 0924 │c=1║
║ cs:014E CD21 int 21 │ bx 008B │z=0║
║ cs:0150 B90500 mov cx,0005 │ cx 0005 │s=1║
║ cs:0153 BE0000 mov si,0000 │ dx 01FE │o=1║
║ cs:0156 8A9C0102 mov bl,[si+0201] │ si 0000 │p=1║
║ cs:015A 80F375 xor bl,75 │ di 1AA4 │a=1║
║ cs:015D 389C7B01 cmp [si+017B],bl │ bp 0100 │i=1║
║ cs:0161750D jne 0170 │ sp FFFC │d=0║
║ cs:0163 46 inc si │ ds 5173 │ ║
║ cs:0164 E2F0 loop 0156 │ es 5173 │ ║
║ cs:0166 B409 mov ah,09 │ ss 5173 │ ║
║ cs:0168 BA1402 mov dx,0214 │ cs 5173 │ ║
║ cs:016B CD21 int 21 │ ip 0161 │ ║
╟─────────────────────────────────────────────┤ │ ║
║ ds:0200 24 FE FB F9 FD FF 20 20 $■√∙¤ ‑ │ ║
║ ds:0208 20 20 20 20 20 20 20 20 ■────────────┴───╢
║ ds:0210 20 20 20 20 20 20 20 20 ▒ ss:FFFE 0000 ║
║ ds:0218 20 20 20 20 20 20 20 20 ss:FFFC0000 ║
╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╧═══════════════─┘
Экран 6. Послекоманды XOR (операнд 075Н)
первая буква пароля по адресу 0201Н (FEH)дешифрована в регистре BL
(8BH = ‘Л Значит, первая буква пароля – ‘Л
Проверим, правильно ли определен пароль:
- Применим операцию XOR c 075H ко всем буква пароля по адресу 0201Н:
FE FB F9 FD FF
HEX |
FE |
FB |
F9 |
FD |
FF |
BIN |
1111 1110 |
1111 1011 |
1111 1001 |
1111 1101 |
1111 1111 |
075H |
0111 0101 |
0111 0101 |
0111 0101 |
0111 0101 |
0111 0101 |
Результат XOR |
1000 1011 |
1000 1110 |
1000 1100 |
1000 1000 |
1000 1010 |
HEX |
8B |
8E |
8C |
88 |
8A |
Символ |
Л |
О |
М |
И |
К |
Ё File View Run Breakpoints Data Options Window Help
╔═[■]═CPU 80486═══════════════════════════════╤═══════1═[][]═╗
║ cs:014B BAFE01 mov dx,01FE │ ax 0924 │c=1║
║ cs:014E CD21 int 21 │ bx 008B │z=0║
║ cs:0150 B90500 mov cx,0005 │ cx 0005 │s=1║
║ cs:0153 BE0000 mov si,0000 │ dx 01FE │o=1║
║ cs:0156 8A9C0102 mov bl,[si+0201] │ si 0000 │p=1║
║ cs:015A 80F375 xor bl,75 │ di 1AA4 │a=1║
║ cs:015D 389C7B01 cmp [si+017B],bl │ bp 0100 │i=1║
║ cs:0161750D jne 0170 │ sp FFFC │d=0║
║ cs:0163 46 inc si │ ds 5173 │ ║
║ cs:0164 E2F0 loop 0156 │ es 5173 │ ║
║ cs:0166 B409 mov ah,09 │ ss 5173 │ ║
║ cs:0168 BA1402 mov dx,0214 │ cs 5173 │ ║
║ cs:016B CD21 int 21 │ ip 0161 │ ║
╟─────────────────────────────────────────────┤ │ ║
║ ds:0178 00 CD 21 31 32 33 00 00 ═!123 ‑ │ ║
║ ds:0180 00 00 00 00 00 00 00 00 ■────────────┴───╢
║ ds:0188 00 00 00 00 00 00 00 69 i ▒ ss:FFFE 0000 ║
║ ds:0190 6E 70 75 74 20 70 61 73 nput pas ss:FFFC0000 ║
╚▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒■▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒╧═══════════════─┘
Экран 7. Первая буква тестового пароля ‘123’ по адресу 017Bне проходит сравнение командой CMPс содержимым BL (8В H = ‘Л’), первой буквы верного пароля. Происходит переход на вывод сообщения об ошибке.
Результат работы программы с введенным тестовым паролем ‘123’ – сообщение об ошибке
------------------------------------------------------------------------------Turbo Debugger Version 2.0 Copyright (c) 1988, 1990 Borland International
input password: 123
input fio: ABC
ABC
П Л О Х О !
------------------------------------------------------
Вам НЕ УДАЛОСЬ обойти пароль в программе
Попробуйте еще поработать с AFD-ой
ЖЕЛАЮ ДАЛЬНЕЙШИХ ТВОРЧЕСКИХ УСПЕХОВ !!!
------------------------------------------------------
Экран 8. По ALTF5 просмотр сообщения об ошибке программы после ввода тестового пароля ‘123’
Проверим пароль: ‘ЛОМИК’
------------------------------------------------------------------------------Turbo Debugger Version 2.0 Copyright (c) 1988, 1990 Borland International
input password: ЛОМИК
input fio: ЮЛЯ ВОЛКОВА
ЮЛЯ ВОЛКОВА
ПОЗДРАВЛЯЮ !
------------------------------------------------------
Вы успешно справились с заданием и заслуживаете зачета
Вам осталось только подозвать преподавателя и сказать
КАКОЙ же ПАРОЛЬ был в ЗАДАЧЕ?
------------------------------------------------------
Экран 9. По ALTF5 просмотр сообщения об ошибке программы после ввода верного пароля ‘ЛОМИК’
Пароль правильный.
2. Дизассемблирование.
2.1. Получение текста программы с использованием дисассемблера SOURCER
┌──────────────────────────────────────────────────────────────────────────────┐
│ █▀▀▀▀ █▀▀▀█ █ █ █▀▀▀▀ █▀▀▀▀ █▀▀▀▀ █▀▀▀▀ V COMMUNICATIONS, INC. │
│ ▀▀▀▀█ █ █ █ █ █ █ █▀▀▀ █ Copyright (c)1988-1990 │
│ ▀▀▀▀▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀ ▀▀▀▀▀ ▀▀▀▀▀ ▀ TM V3.07 s/n B116236 │
│ │
│ F1 - help ┌ File format, list(.lst)/source(.asm) Analysis options menu │
│ ┌────────────┴───────────────────────────────────────────────────────────┐ │
│ ┌ Output filename ┌ Header title Xref (cross reference) ON │
│ ┌┴───────────┐┌──────┴──────────────────────────┐ Press return when done │
│ ooo_06.asm Page 3 │
│ 5102:0234 32 D2 xor dl,dl ; Zero register │
│ 5102:0236 CD 11 int 11h ; Put equip bits in ax │
│ 5102:0238 0E A1E4 mov cx,data_6 ; (6033:A1E4=3C1h) │
│ └┬───┘ └┬─────────────────└┬─────────┘ └──┬─────────────────┘ │
│ └ Segment display └ Word case style └ Label type └ Remarks - all │
│ on/off (decimal) │
│ Target Assembler: MASM-5.1 Press "Q" to Quit │
├───────────────────────────────┬──────────────┬───────────────────────────────┤
│ Input filename ooo_06.com │ Label Counts │ Drive e: used for output │
│ Beginning addr 42D1:0100 │ Data 103 │ > 100 Megs available │
│ Ending address 42D1:046F │ Sub 0 │ 431K bytes free (using EMS) │
│ Math off uP 8086/8088 │ Loc 0 │ Code style .COM Passes 5 │
├───────────────────────────────┴──────────────┴───────────────────────────────┤
│ Select highlighted options desired, and enter "G" to Go begin processing
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.