Вообщем пишу прогу на которой хочу посмотреть переполнение буфера с последующим затиранием адреса возврата, получилось вот такая программа: .586p .model flat, stdcall include D:\Masm32\include\user32.inc include D:\Masm32\include\kernel32.inc includelib D:\Masm32\lib\user32.lib includelib D:\Masm32\lib\kernel32.lib .data h1 dword ? lens dword ? buf2 db "Proga",0 .code start: invoke CharToOemA,offset buf2,offset buf2 call FreeConsole call AllocConsole invoke GetStdHandle,-10 mov h1, eax invoke SetConsoleTitleA,offset buf2 call wide mov ecx, 9FFFFFFFh l1: loop l1 invoke CloseHandle,h1 call FreeConsole invoke ExitProcess,0 wide proc push ebp mov ebp,esp mov eax,5 sub esp,eax mov eax,esp push 0 push offset lens push 100 push eax push h1 call ReadConsoleA leave Ret wide EndP end start однако функция ReadConsoleA почему-то не считывает информацию из консоли.
Ulv функция ReadConsoleA почему-то не считывает Посмотри на GetLastError после вызова ReadConsoleA. hint сделай указатель стека кратным четырем.
q_q бесполезно! не поможет все равно не глянет, что вернут функции, что должны возвращать, с какой ошибкой завершатся....
q_q большое спасибо, код исправил и получил вот такую ф-ю: wide proc push ebp mov ebp,esp mov eax,16 sub esp,eax mov eax,esp push 0 push offset lens push 80 push eax push h1 call ReadConsoleA leave Ret wide EndP и переполняешь буфер как хочешь