问题以解决,感谢版主小虾
俺打正确的程序与源码上传,供同志分享 我编的记事本程序.
运行后不出现窗口,但是LINK都成功了.
真郁闷.看了一下午.看不出问题.
希望高手帮助看一下.
谢谢.
我没有传RC代码
.386
.MODEL FLAT,STDCALL
OPTION CASEMAP:NONE
INCLUDE c:\masm32\include\WINDOWS.INC
INCLUDE c:\masm32\include\GDI32.INC
INCLUDE c:\masm32\include\USER32.INC
INCLUDE c:\masm32\include\KERNEL32.INC
include c:\masm32\include\comctl32.inc
includelib c:\masm32\lib\comctl32.lib
INCLUDELIB c:\masm32\lib\GDI32.LIB
INCLUDELIB c:\masm32\lib\USER32.LIB
INCLUDELIB c:\masm32\lib\KERNEL32.LIB
WinMain PROTO:DWORD,:DWORD,:DWORD,:DWORD
WinProc PROTO:DWORD,:DWORD,:DWORD,:DWORD
FileOpen PROTO:DWORD
FileSave PROTO:DWORD
.DATA
szDisplayName db "Editor",0
CommandLine dd 0
hWnd dd 0
hInstance dd 0
hWndEdit dd 0
szFileError db "Read or Write File ERROR.",0
szError db "Error!",0
szOpenFileName db "T386.ASM",0
szSaveFileName db "T.ASM",0
szEditClass db "EDIT",0
szClassName db "MainWndClass",0
AboutMsg db "Open File Name:T386.ASM;Save File Name:T.ASM",0
TheText db "Save the Text?",0
TheExit db "Please Confirm Exit.",0
MAXSIZE = 2000
Buf db MAXSIZE+1 dup(0)
.CODE
START:
INVOKE GetModuleHandle,NULL
MOV hInstance,EAX
INVOKE InitCommonControls
INVOKE GetCommandLine
MOV CommandLine,EAX
INVOKE WinMain,hInstance,NULL,CommandLine,SW_SHOWDEFAULT
INVOKE ExitProcess,EAX
WinMain PROC hInst:DWORD,hPrevInst:DWORD,CmdLine:DWORD,CmdShow:DWORD
LOCAL wc :WNDCLASSEX
LOCAL msg :MSG
LOCAL Wwd :dword
local Wht :dword
local Wtx :dword
local Wty :dword
LOCAL rectClient:RECT
MOV wc.cbSize,SIZEOF WNDCLASSEX
MOV wc.style,CS_VREDRAW+CS_HREDRAW+CS_DBLCLKS+CS_BYTEALIGNCLIENT+CS_BYTEALIGNWINDOW
MOV wc.lpfnWndProc,OFFSET WndProc
MOV wc.cbClsExtra,NULL
MOV wc.cbWndExtra,NULL
PUSH hInst
POP wc.hInstance
MOV wc.hbrBackground,COLOR_WINDOW+1
MOV wc.lpszMenuName,NULL
MOV wc.lpszClassName,OFFSET szClassName
MOV wc.hIcon,0
INVOKE LoadCursor,NULL,IDC_ARROW
MOV wc.hCursor,EAX
MOV wc.hIconSm,0
INVOKE RegisterClassEx,ADDR wc
MOV Wwd,600
mov Wht,400
mov Wtx,10
mov Wty,10
INVOKE CreateWindowEx,
WS_EX_ACCEPTFILES+WS_EX_APPWINDOW,
ADDR szClassName,
addr szDisplayName,
WS_OVERLAPPEDWINDOW+WS_VISIBLE,
Wtx,Wty,Wwd,Wht,
NULL,NULL,
hInst,NULL
MOV hWnd,EAX
invoke LoadMenu,hInst,600
invoke SetMenu,hWnd,eax
invoke GetClientRect,hWnd,addr rectClient
INVOKE CreateWindowEx,
WS_EX_ACCEPTFILES or WS_EX_CLIENTEDGE,
ADDR szEditClass,
NULL,
WS_CHILD+WS_VISIBLE+WS_HSCROLL+WS_VSCROLL+ES_MULTILINE+ES_AUTOVSCROLL+ES_AUTOHSCROLL,
rectClient.left,
rectClient.top,
rectClient.right,
rectClient.bottom,
hWnd,
0,hInst,0
MOV hWndEdit,EAX
StartLoop:
INVOKE GetMessage,ADDR msg,NULL,0,0
CMP EAX,0
JE ExitLoop
INVOKE TranslateMessage,ADDR msg
INVOKE DispatchMessage,ADDR msg
JMP StartLoop
ExitLoop:
MOV EAX,msg.wParam
RET
WinMain ENDP
WndProc PROC hWin:DWORD,uMsg:DWORD,wParam:DWORD,lParam:DWORD
.IF uMsg==WM_COMMAND
.IF wParam==1000
invoke FileOpen,addr szOpenFileName
.ELSEIF wParam==1100
invoke MessageBox,hWin,addr TheText,addr szDisplayName,MB_YESNO
.IF EAX==IDNO
MOV EAX,0
RET
.ENDIF
INVOKE FileSave,addr szSaveFileName
.elseif wParam==1900
invoke MessageBox,hWin,addr AboutMsg,addr szDisplayName,MB_OK
.ENDIF
.ELSEIF uMsg==WM_DESTROY
INVOKE PostQuitMessage,NULL
.ELSE
INVOKE DefWindowProc,hWnd,uMsg,wParam,lParam
RET
.ENDIF
MOV EAX,0
RET
WndProc ENDP
FileOpen proc lpszFileName:dword
local nBytesToRead:dword
local nBytesRead:dword
local hFile:dword
invoke CreateFile,
lpszFileName,
GENERIC_READ,
FILE_SHARE_READ,
NULL,
OPEN_EXISTING,
NULL,
NULL
CMP EAX,INVALID_HANDLE_VALUE
JZ error
mov hFile,eax
invoke GetFileSize,hFile,NULL
CMP EAX,MAXSIZE
JA error_c
mov nBytesToRead,eax
invoke ReadFile,
hFile,
addr Buf,
nBytesToRead,
addr nBytesRead,
NULL
test eax,eax
jz error_c
mov eax,nBytesToRead
mov Buf[eax],0
invoke CloseHandle,hFile
invoke SendMessage,hWndEdit,WM_SETTEXT,0,ADDR Buf
mov eax,1
ret
error_c:
invoke CloseHandle,hFile
error:
invoke MessageBox,hWnd,addr szFileError,addr szError,MB_OK or MB_ICONWARNING
XOR eax,eax
RET
FileOpen endp
FileSave proc lpszFileName:dword
local nBytesToWrite:dword
local nBytesWritten:dword
local hFile:dword
invoke SendMessage,hWndEdit,WM_GETTEXTLENGTH,0,0
CMP EAX,MAXSIZE
JA error
mov nBytesToWrite,eax
inc eax
invoke SendMessage,hWndEdit,WM_GETTEXT,EAX,ADDR Buf
invoke CreateFile,
lpszFileName,
GENERIC_WRITE,
FILE_SHARE_WRITE,
NULL,
CREATE_ALWAYS,
FILE_ATTRIBUTE_ARCHIVE,
NULL
CMP EAX,INVALID_HANDLE_VALUE
JZ error
mov hFile,eax
INVOKE WriteFile,
hFile,
addr Buf,
nBytesToWrite,
addr nBytesWritten,
NULL
test eax,eax
jz error_c
invoke CloseHandle,hFile
mov eax,1
ret
error_c:
invoke CloseHandle,hFile
error:
invoke MessageBox,hWnd,addr szFileError,addr szError,MB_OK or MB_ICONWARNING
XOR eax,eax
RET
FileSave endp
END START
[培训]科锐逆向工程师培训第53期2025年7月8日开班!
上传的附件: