Вопрос по буферу

Тема в разделе "WASM.BEGINNERS", создана пользователем Denis__, 5 янв 2006.

  1. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    С Новым Годом!

    У меня такой вопрос, создаю DIALOG, где вызываю функцию GetDlgItemTextA и помещаю из Edit текст в buffer.

    Я хочу, чтобы buffer находился по адресу 465789h. Как это реализовать в Masm.
     
  2. FsynC

    FsynC New Member

    Публикаций:
    0
    Регистрация:
    27 дек 2005
    Сообщения:
    34
    А каким макаром ты его в буффер помещаешь..?

    И сколько памяти выделенно?

    Может там 421000h потолок...
     
  3. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    Ниже кусок кода



    .386

    .model flat, stdcall

    option casemap:none

    ;инклюды

    include \masm32\include\windows.inc

    include \masm32\include\user32.inc

    include \masm32\include\kernel32.inc

    include \masm32\include\gdi32.inc

    include \masm32\include\masm32.inc

    ;либы

    includelib \masm32\lib\user32.lib

    includelib \masm32\lib\kernel32.lib

    includelib \masm32\lib\gdi32.lib

    includelib \masm32\lib\masm32.lib



    ;=========================================

    DlgProc PROTO :lol: WORD,:lol: WORD,:lol: WORD,:lol: WORD

    ;=========================================

    ;секция данных

    .data

    hWnd dd 0

    hInstance dd 0

    hEdit1 dd 0 ; EditBox1

    hEdit2 dd 0 ; EditBox2

    hButn1 dd 0 ; Button1

    dlgname db "Keygen",0

    .data?

    buffer db 512 dup(?)

    ;секция кода

    .code

    start:



    invoke GetModuleHandle, 0

    mov hInstance, eax

    invoke DialogBoxParam,hInstance,1000,NULL, addr DlgProc, NULL

    invoke ExitProcess,eax

    ;==========================================

    DlgProc proc hWin:lol: WORD, uMsg:lol: WORD, wParam:lol: WORD, lParam:lol: WORD







    LOCAL KB[64] :BYTE

    pusha



    .if uMsg == WM_INITDIALOG

    mov eax, hWin

    mov hWnd, eax



    invoke GetDlgItem,hWin,1001

    mov hEdit1, eax



    invoke GetDlgItem,hWin,1002

    mov hEdit2, eax



    invoke GetDlgItem,hWin,1003

    mov hButn1, eax



    .elseif uMsg == WM_CLOSE

    invoke EndDialog,hWin,0

    .ENDIF



    .if wParam == 1003

    ПРОЦЕДУРА ГЕНЕРАЦИИ

    invoke GetWindowText,hEdit1,addr buffer,40



    xor eax,eax

    xor ecx,ecx

    xor ebx,ebx

    xor edx,edx

    lea ECX,buffer





    сама процедура генерации

    .......

    .endif

    popa

    xor eax, eax

    ret

    DlgProc endp



    end start





    В данном случае buffer находится по адресу 0040301Ch,а мне нужно, чтобы он был по адресу 00465789h.

    Можно ли как то сделать?



    Есть мысль, buffer находится в секции .data?

    Что если адрес начала секции будет равен 00465789h, тогда

    и buffer будет равен 00465789h.

    Можно ли как-то задать адрес секции .data?

    Или у кого-то есть другие предложения?
     
  4. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    Код (Text):
    1. .data?
    2.        db 00465789h - 0040301Ch dup(?)
    3. buffer db 512 dup(?)
     
  5. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    bogrus



    .data?

    db 00465789h - 0040301Ch dup(?)

    buffer db 512 dup(?)

    У меня на этом компилятор виснет.Если можно пример.
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine
    У меня масм нормально компилит, возможно несколько минут прийдется подождать (чтобы ускорить надо при компиляции imagebase поближе указать), вот ещё для фасма пример (1Кб)
    Код (Text):
    1. ;=====================================================================
    2. offset      =       0x77777777
    3. ;=====================================================================
    4. format      pe gui at offset and 0xffff0000
    5. include     '%fasminc%\win32a.inc'
    6. ;=====================================================================
    7. entry   $
    8. @@:         mov     eax,buffer                      ; eax = 0x77777777
    9.             stdcall [ExitProcess],0
    10. ;=====================================================================
    11. data        import
    12. library     kernel32,'kernel32.dll'
    13. include     '%fasminc%\apia\kernel32.inc'
    14. end         data
    15. ;=====================================================================
    16.             rb      offset - (offset and 0xffff0000) - ($-@b) - 0x1000
    17. buffer      rb      512
    18. ;=====================================================================  
     
  7. Denis__

    Denis__ New Member

    Публикаций:
    0
    Регистрация:
    5 янв 2006
    Сообщения:
    56
    bogrus



    Спасибо большое все полчилось. Масм секунд 20 думал.