Вопрос по переполнению буфера

Тема в разделе "WASM.BEGINNERS", создана пользователем Ulv, 3 янв 2008.

  1. Ulv

    Ulv New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    55
    Вообщем пишу прогу на которой хочу посмотреть переполнение буфера с последующим затиранием адреса возврата, получилось вот такая программа:
    .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 почему-то не считывает информацию из консоли.
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    Ulv
    функция ReadConsoleA почему-то не считывает
    Посмотри на GetLastError после вызова ReadConsoleA.

    hint сделай указатель стека кратным четырем.
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    q_q
    бесполезно! не поможет
    все равно не глянет, что вернут функции, что должны возвращать, с какой ошибкой завершатся....
     
  4. Ulv

    Ulv New Member

    Публикаций:
    0
    Регистрация:
    26 апр 2007
    Сообщения:
    55
    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
    и переполняешь буфер как хочешь