首页
社区
课程
招聘
[原创][求助]CreateFile 居然失败,为何
发表于: 2009-8-6 21:42 4863

[原创][求助]CreateFile 居然失败,为何

2009-8-6 21:42
4863
如题,ExeFile            db    128    dup(?)定义了这个却无法打开.
当在.DATA中定义,ExeFile            db      '1.exe',0  是可以的.
是StdIn后无法找到字符结束??  如何解决呢

----------------------------------------------------------------------------------

.386
.model flat,stdcall
option casemap:none

include    windows.inc
include    kernel32.inc
include    user32.inc
include    masm32.inc
includelib kernel32.lib
includelib user32.lib
includelib masm32.lib
include    macros.asm

      .data

hFile               dd   ?
hMapFile           dd   ?

     .data?
        
ExeFile            db    128    dup(?)
Buffer              db    256    dup(?)

      .code

start:
  
    invoke  StdIn,offset  ExeFile,sizeof ExeFile

    invoke  CreateFile,offset ExeFile,GENERIC_READ or \
    GENERIC_WRITE,FILE_SHARE_READ or FILE_SHARE_WRITE,\
    NULL,OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,NULL
   
   
    .if   eax != INVALID_HANDLE_VALUE
          invoke  StdOut,CTXT("Open file OK!     ")        
  
    .else  
         invoke  StdOut,CTXT("Open file Error   ")        
    .endif

    invoke  CloseHandle,hFile
    invoke  CloseHandle,hMapFile
   
   
    invoke  StdIn,offset Buffer,sizeof Buffer
    invoke  ExitProcess,NULL
end    start

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 399
活跃值: (38)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
lpFileName [in]
The name of the file or device to be created or opened.

你那db 128 dup(?)
占128个字节,但不写入数据,通常全部都为0
能行吗?
2009-8-6 22:01
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
这样修改?仍然不行.
--------------------------------
   .data?
        
ExeFile            db    256    dup(?)
Buffer              db    256    dup(?)

      .code

start:
  
  invoke  StdIn,offset  Buffer,sizeof Buffer
  invoke  lstrcpy,offset ExeFile,offset ExeFile
2009-8-6 22:08
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
在线等. 知道的点破下,学了MASM不久
2009-8-6 22:11
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
5
invoke StdIn,ADDR buffer,128
mov BYTE PTR [buffer+eax], 0
2009-8-6 22:55
0
雪    币: 254
活跃值: (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
invoke   crt_gets,offset szOut
搞定了,想了一晚上,直接改用C库转的好了.
2009-8-6 23:18
0
雪    币: 636
活跃值: (174)
能力值: ( LV9,RANK:260 )
在线值:
发帖
回帖
粉丝
7
自己GetLastError看看吧……
2009-8-6 23:32
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
8
直接全用C写不更好?
2009-8-6 23:36
0
游客
登录 | 注册 方可回帖
返回
//