
27.09.2009, 23:46
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами:
10139366
Репутация:
1502
|
|
Buffer Security что-то там (/GS) включён
компилирую вот такой код в Release (вывод добавлен, чтобы оптимизация не убила массив вообще):
Код:
#include "stdio.h"
int main(){
int a[100];
for (int j = 0; j < 1000; j++){
a[j] = j;
}
printf("%d",a[99]);
}
получаю код:
Код:
00401000 SUB ESP,190
00401006 XOR EAX,EAX
00401008 JMP SHORT aaaqqww.00401010
0040100A LEA EBX,DWORD PTR DS:[EBX]
00401010 /MOV DWORD PTR SS:[ESP+EAX*4],EAX
00401013 |INC EAX
00401014 |CMP EAX,3E8
00401019 \JL SHORT aaaqqww.00401010
0040101B MOV EAX,DWORD PTR SS:[ESP+18C]
00401022 PUSH EAX ; /<%d> = 0
00401023 PUSH aaaqqww.004020F4 ; |format = "%d"
00401028 CALL DWORD PTR DS:[<&MSVCR90.printf>] ; \printf
0040102E XOR EAX,EAX
00401030 ADD ESP,198
00401036 RETN
Наслаждайся 
Кстати конкретно данный код приводит к выполнению шеллкода совсем смешным образом - вначале он переписывет SEH запись, а затем уже пытается записать что-то выше верхней границы стека и вызывает exception, обрабатываемый перезаписанным обработчиком. Но можно и просто переписать, если тысячу уменьшить
__________________
Bedankt euch dafür bei euch selbst.
H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
|
|
|