С Новым Годом! У меня такой вопрос, создаю DIALOG, где вызываю функцию GetDlgItemTextA и помещаю из Edit текст в buffer. Я хочу, чтобы buffer находился по адресу 465789h. Как это реализовать в Masm.
А каким макаром ты его в буффер помещаешь..? И сколько памяти выделенно? Может там 421000h потолок...
Ниже кусок кода .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 WORD,WORD,WORD,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 hWinWORD, uMsgWORD, wParamWORD, lParamWORD 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? Или у кого-то есть другие предложения?
bogrus .data? db 00465789h - 0040301Ch dup(?) buffer db 512 dup(?) У меня на этом компилятор виснет.Если можно пример.
У меня масм нормально компилит, возможно несколько минут прийдется подождать (чтобы ускорить надо при компиляции imagebase поближе указать), вот ещё для фасма пример (1Кб) Код (Text): ;===================================================================== offset = 0x77777777 ;===================================================================== format pe gui at offset and 0xffff0000 include '%fasminc%\win32a.inc' ;===================================================================== entry $ @@: mov eax,buffer ; eax = 0x77777777 stdcall [ExitProcess],0 ;===================================================================== data import library kernel32,'kernel32.dll' include '%fasminc%\apia\kernel32.inc' end data ;===================================================================== rb offset - (offset and 0xffff0000) - ($-@b) - 0x1000 buffer rb 512 ;=====================================================================