Код (Text): 00000000: BA6301 mov dx,00163 ;" c" 00000003: B409 mov ah,009 ;" " 00000005: CD21 int 021 00000007: B40A mov ah,00A ;" " 00000009: BA7B01 mov dx,0017B ;" {" 0000000C: CD21 int 021 0000000E: BA7801 mov dx,00178 ;" x" 00000011: B409 mov ah,009 ;" " 00000013: CD21 int 021 00000015: EB0A jmps 000000021 -------- (1) 00000017: 155DD4 adc ax,0D45D ;"Ф]" 0000001A: 06 push es 0000001B: C602B6 mov b,[bp][si],0B6 ;"¶" 0000001E: 14F8 adc al,0F8 ;"ш" 00000020: 24BE and al,0BE ;"ѕ" 00000022: 0000 add [bx][si],al 00000024: B90900 mov cx,00009 ;" " 00000027: 8A9C0001 mov bl,[si][00100] 0000002B: 009C1701 add [si][00117],bl 0000002F: 8ABC7D01 mov bh,[si][0017D] 00000033: 30BC6301 xor [si][00163],bh 00000037: 8084630199 add b,[si][00163],099 ;"™" 0000003C: 46 inc si 0000003D: E2E8 loop 000000027 -------- (1) 0000003F: FC cld 00000040: 8D361701 lea si,[00117] 00000044: 8D3E6301 lea di,[00163] 00000048: B90900 mov cx,00009 ;" " 0000004B: F3A6 repe cmpsb 0000004D: E302 jcxz 000000051 -------- (2) 0000004F: 7508 jne 000000059 -------- (3) 00000051: B409 mov ah,009 ;" " 00000053: BA6D01 mov dx,0016D ;" m" 00000056: CD21 int 021 00000058: C3 retn 00000059: B409 mov ah,009 ;" " 0000005B: BA7101 mov dx,00171 ;" q" 0000005E: CD21 int 021 00000060: C3 retn 00000061: EBE8 jmps 00000004B -------- (4) 00000063: 7061 jo 0000000C6 00000065: 7373 jae 0000000DA 00000067: 776F ja 0000000D8 00000069: 7264 jb 0000000CF 0000006B: 3A24 cmp ah,[si] 0000006D: 4F dec di 0000006E: 4B dec bx 0000006F: 2124 and [si],sp 00000071: 57 push di 00000072: 52 push dx 00000073: 4F dec di 00000074: 4E dec si 00000075: 47 inc di 00000076: 2124 and [si],sp 00000078: 0D0A24 or ax,0240A ;"$ " 0000007B: 0A00 or al,[bx][si] Выдран полный текст проги из Хива. прога начинает выполняться с 00000000: BA6301 ? Почему идёт прерывание ввода текста а потом сразу вывода на консоль а где проверка кода? И где здесь данные? Код (Text): 00000000: BA 63 01 B4-09 CD 21 B4-0A BA 7B 01-CD 21 BA 78 єc ґ Н!ґ є{ Н!єx 00000010: 01 B4 09 CD-21 EB 0A 15-5D D4 06 C6-02 B6 14 F8 ґ Н!л ]Ф Ж ¶ ш 00000020: 24 BE 00 00-B9 09 00 8A-9C 00 01 00-9C 17 01 8A $ѕ № Љњ њ Љ 00000030: BC 7D 01 30-BC 63 01 80-84 63 01 99-46 E2 E8 FC ј} 0јc Ђ„c ™Fвиь 00000040: 8D 36 17 01-8D 3E 63 01-B9 09 00 F3-A6 E3 02 75 Ќ6 Ќ>c № у¦г u 00000050: 08 B4 09 BA-6D 01 CD 21-C3 B4 09 BA-71 01 CD 21 ґ єm Н!Гґ єq Н! 00000060: C3 EB E8 70-61 73 73 77-6F 72 64 3A-24 4F 4B 21 Глиpassword:$OK! 00000070: 24 57 52 4F-4E 47 21 24-0D 0A 24 0A-00 $WRONG!$ $
Лучше засунь в Иду, там все сразу понятней станет, второй вывод -- это просто переход на новую строку, а вывод правильности-неправильности пароля -- ниже, после того как там расшифровываются байты по смещению 117h и сравниваютя с введенным паролем..
Ну со 100h начинается код =), а Ида вот: http://www.cracklab.ru/download.php?action=list&n=NQ==, может и на вазме где-нибудь лежит..
Чёт ни хрена не понял. Ида показывает сразу 3 вызова int21 сначала на вывод текста потом на ввод потом снова на вывод, а уж потом джамп, чёт не пойму, проверка паса ниже а он уже говорит на 3-ем int о правильности или не правильности. Подскажите?
Ну первый int21h -- это приглашение ввести пароль, второй -- ввод пароля, третий --- вывод перехода на новую строку, и есть еще четвертый и пятый, которые выводят правильный пароль или нет.