ТЕХНИКА СЕТЕВЫХ АТАК
Шрифт:
·.text:00401042 add esp, 0Ch
·.text:00401042 ;Балансировка стека
·.text:00401045 push offset aLogin; "Login:"
·.text:00401045 ; Заталкивание в стек смещения строки “Login:”
·.text:0040104A call _printf
·.text:0040104A ;Вызов printf(“Login:”)
·.text:0040104F add esp, 4
·.text:0040104F ; Балансировка стека
·.text:00401052 push offset off_0_407090
·.text:00401052 ; Заталкивание в стек указателя на манипулятор stdin
·.text:00401057 push 0Ch
·.text:00401057 ; Заталкивание в стек константы 0xC
·.text:00401059 lea edx, [ebp+var_10]
·.text:00401059 ; Занесение в регистр EDX указателя на буфер var_10 (user)
·.text:0040105C push edx
·.text:0040105C ; Заталкивание его в стек
·.text:0040105D call _fgets
·.text:0040105D ; Вызов ( amp;user[0],0xC,stdin)
·.text:00401062 add esp, 0Ch
·.text:00401062 ; Балансировка стека
·.text:00401065 push offset aPassw; "Passw:"
·.text:00401065 ; Заталкивание в стек указателя на строку Passw
·.text:0040106A call _printf
·.text:0040106A ; Вызов printf(“Passw:”)
·.text:0040106F add esp, 4
·.text:0040106F ; Балансировка стека
·.text:00401072 push offset off_0_407090
·.text:00401072 ;Заталкивание в стек указателя на манипулятор stdin
·.text:00401077 push 0Ch
·.text:00401077 ; Заталкивание в стек константы 0xC
·.text:00401079 lea eax, [ebp+var_44]
·.text:00401079 ; Занесение в регистр EAX указателя на буфер var_44 (pass)
·.text:0040107C push eax
·.text:0040107C ; Заталкивание его в стек
·.text:0040107D call _fgets
·.text:0040107D ; fgest( amp;pass[0],0xC,stdin)
·.text:00401082 add esp, 0Ch
·.text:00401082 ; Балансировка стека
·.text:00401085 lea ecx, [ebp+var_54]
·.text:00401085 ; Занесение в регистр ECX указателя на буфер var_54 (_pass)
·.text:00401088 push ecx
·.text:00401088 ; Заталкивание его в стек
·.text:00401089 lea edx, [ebp+var_44]
·.text:00401089 ; Занесение в регистр EDX указателя на буфер var_54 (pass)
·.text:0040108C push edx
·.text:0040108C ; Заталкивание его в стек
·.text:0040108D call _strcmp
·.text:0040108D ; Вызов strcmp( amp;_pass[0], amp;pass[0])
·.text:00401092 add esp, 8
·.text:00401092 ; Балансировка стека
·.text:00401095 test eax, eax
·.text:00401095 ; Введен правильный пароль?
·.text:00401097 jz short loc_0_4010B0
·.text:00401097; Переход, если введен правильный пароль
·.text:00401099 lea eax, [ebp+var_44]
·.text:00401099 ; Занесение в регистр EAX указателя на буфер var_44 (pass)
·.text:0040109C push eax
·.text:0040109C ; Заталкивание его в стек
·.text:0040109D push offset aInvalidPasswor; "Invalid password: %s"
·.text:0040109D ; Заталкивание в стек указателя на строку “Invalid password: %s”
·.text:004010A2 lea ecx, [ebp+var_34]
·.text:004010A2 ; Занесение в регистр ECX указателя на буфер var_34 (buff)
·.text:004010A5 push ecx
·.text:004010A5 ; Заталкивание его в стек
·.text:004010A6 call _sprintf
·.text:004010A6 ; Вызов sprintf( amp;buff[0],”Invalid password: %s”, amp;pass[0])
·.text:004010AB add esp, 0Ch
·.text:004010AB; Балансировка стека
·.text:004010AE jmp short loc_0_4010C1
·.text:004010B0; ---------------------------------------------------------------------------
·.text:004010B0
·.text:004010B0 loc_0_4010B0:; CODE XREF: main+97j
·.text:004010B0 push offset aPasswordOk; "Password ok\n"
·.text:004010B0; Заталкивание в стек указателя на строку “Password ok”
·.text:004010B5 lea edx, [ebp+var_34]
·.text:004010B5 ; Занесение в регистр EDX указателя на начало буфера var_34 (buff)
·.text:004010B8 push edx
·.text:004010B8 ; Заталкивание его в стек
·.text:004010B9 call _sprintf
·.text:004010B9 ; Вызов spritnf( amp;buff[0],”Password ok\n”);
·.text:004010BE add esp, 8
·.text:004010BE ; Балансировка стека
·.text:004010C1
·.text:004010C1 loc_0_4010C1:; CODE XREF: main+AEj
·.text:004010C1 lea eax, [ebp+var_34]
·.text:004010C1 ; Занесение в регистр EAX указателя на начало буфера var_34 (buff)
·.text:004010C4 push eax
·.text:004010C4 ; Заталкивание его в стек
·.text:004010C4 ; Состояние стека (жирным шрифтом выделен аргумент функции printf)
·.text:004010C4; – 0x04 var_34 (buff)
·.text:004010C4; 0x00 var_54 (_pass)
·.text:004010C4; -0x10 var_44 (pass)
·.text:004010C4; -0x20 var_34 (buff)
·.text:004010C4; -0x40 var_14 (psw)
·.text:004010C4; -0x44 var_10 (user)
·.text:004010C5 call _printf
·.text:004010C5 ; Вызов printf( amp;buff[0])