首页
社区
课程
招聘
[求助]帮忙看下这个简单的程序,编译不错误,但是运行是出错
发表于: 2009-10-30 12:33 3152

[求助]帮忙看下这个简单的程序,编译不错误,但是运行是出错

2009-10-30 12:33
3152
是关于网络邮槽的

这个是客户端程序:
;命令行下运行

.386
.model flat,stdcall
option casemap:none
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
include wsock32.inc
includelib wsock32.lib;可以不需要
.data?

hHandle dd ?
dwWrite dd ?
szSer dd ?
szArgv dd ?
szBuffer dd ?
.data
szBuffer0 db 'Usage: client <server name>\n',0
szBuffer1 db 'CreateFile failed with error %d\n',0
szBuffer2 db 'WriteFile failed with error %d\n',0
szBuffer3 db 'Wrote %d bytes\n',0
szServer db '\\\\%s\\Mailslot\\Myslot',0
szWrite db 'This is a test',0

.code
include _CmdLine.asm

start:

invoke _argc

.while eax<2
        invoke MessageBox,NULL,addr szBuffer0,0,MB_OK
        invoke ExitProcess,NULL
.endw
;参数必须是       client.exe .

invoke _argv,1,addr szArgv,sizeof szArgv

;取得打开的文件名
invoke wsprintf,addr szSer,addr szServer,addr szArgv
invoke MessageBox,NULL,addr szSer,0,MB_OK

invoke CreateFile,addr szSer,GENERIC_WRITE,FILE_SHARE_READ,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL
mov hHandle,eax

.if eax==INVALID_HANDLE_VALUE
invoke GetLastError
        invoke wsprintf,addr szBuffer1,eax
        invoke MessageBox,NULL,addr szBuffer,0,MB_OK
.endif

invoke WriteFile,hHandle,addr szWrite,sizeof szWrite,addr dwWrite,NULL

.if eax==0
        invoke GetLastError
        invoke wsprintf,addr szBuffer2,eax
        invoke MessageBox,NULL,addr szBuffer2,0,MB_OK
.endif

invoke wsprintf,addr szBuffer,addr szBuffer3,dwWrite

  invoke MessageBox,NULL,addr szBuffer3,0,MB_OK

invoke CloseHandle,hHandle
end start

正确应该是显示:CreateFile failed with error 2

因为没有服务端,所以显示这个的
有服务端的话 会显示Wrote 14 bytes
附件是服务端程序,先开启服务端

都是些简单的程序调用

如果用C写的这段程序能正常运行


其中包含的 _CmdLine.asm
是老罗的书中的愿码,十三章的

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

上传的附件:
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
2
没人帮忙解决下吗
2009-10-30 15:08
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
3
一般象这样的: 程序遇到问题需要关闭 我们对此引起的不便表示抱歉
原因是什么 呢
2009-10-30 15:11
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
内存非法访问?
2009-11-1 10:23
0
雪    币: 190
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
invoke wsprintf,addr szSer,addr szServer,addr szArgv

szSer是双字类型的。是不是太小了。
2009-11-1 23:27
0
雪    币: 146
活跃值: (182)
能力值: ( LV13,RANK:220 )
在线值:
发帖
回帖
粉丝
6
虽然没解决但是还是很感谢
2009-11-11 22:13
0
游客
登录 | 注册 方可回帖
返回
//