Показать сообщение отдельно

  #4  
Старый 24.09.2009, 01:03
Hiro Protagonist
Участник форума
Регистрация: 26.08.2009
Сообщений: 133
С нами: 8795069

Репутация: 79
По умолчанию

2desTiny

я не про depricated говорил вообщето

Код:
/GS [-]
Обнаружение некоторых возможных переполнений буфера, при которых перезаписывается возвращаемый адрес.

MSDN!
Оно работает таки )

PHP код:

 sub_401000      proc near               
; CODE XREF: sub_401030+Ap
.text:00401000
.text:00401000 var_10          = byte ptr -10h
.text:00401000 var_4           = dword ptr -4 <- помещаем переменную между буфером и адресом возврата, etc
.text:00401000 arg_0           = dword ptr  8
.text:00401000
.text:00401000                 push    ebp
.text:00401001                 mov     ebp, esp
.text:00401003                 sub     esp, 10h
.text:00401006                 mov     eax, dword_40A000
.text:0040100B                 xor     eax, ebp <- для каждой функции свое персональное значение
.text:0040100D                 mov     [ebp+var_4], eax <- сохраняем значение в качестве метки
.text:00401010                 mov     eax, [ebp+arg_0]
.
text:00401013                 push    eax             ; char *
.
text:00401014                 lea     ecx, [ebp+var_10]
.
text:00401017                 push    ecx             ; char *
.
text:00401018                 call    _strcpy
.text:0040101D                 add     esp, 8
.text:00401020                 mov     ecx, [ebp+var_4]
.
text:00401023                 xor     ecx, ebp <- в случае если буфер переполнится, локальная переменная затрется
.text:00401025                 call    sub_401148 <- что и проверяется здесь, если она не соответствует постоянному значению процесс тихо прибъется.
.
text:0040102A                 mov     esp, ebp
.text:0040102C                 pop     ebp
.text:0040102D                 retn
.text:0040102D sub_401000      endp 

Последний раз редактировалось Hiro Protagonist; 24.09.2009 в 01:14..
 
Ответить с цитированием