
24.09.2009, 01:03
|
|
Участник форума
Регистрация: 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..
|
|
|