首页
社区
课程
招聘
[求助]新手汇编编程,关于WriteFile
发表于: 2010-3-12 21:44 4558

[求助]新手汇编编程,关于WriteFile

2010-3-12 21:44
4558
代码

                .386
                .model flat,stdcall
                option casemap:none
               
include                windows.inc
includelib        kernel32.lib
include                kernel32.inc
include                user32.inc
includelib        user32.lib
               
                .data
               

szFileName        db        'log.txt',0
szTxt                db        '看雪学院',0
temp                db        ?
szBuffer        dd        32 dup (?)

                .code
               
start:       
        invoke CreateFile,addr szFileName,GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
        mov        ebx,eax
        invoke        lstrlen,addr szTxt
        mov        szBuffer,eax
        invoke WriteFile,ebx,addr szTxt,addr szBuffer,addr temp,0
        invoke        ExitProcess,0
       
                end start

程序并不做任何事情,只是建立一个文件

然后写入字符串。。

为什么invoke WriteFile,ebx,addr szTxt,addr szBuffer,addr temp,0 不通过?

我试过了几种方法 问题出在 addr szBuffer

直接使用寄存器作为指针 invoke WriteFile,ebx,addr szTxt,eax,addr temp,0

这样就可以, 我想先把lstrlen返回的字符串长度保存到一个位置 以便接下来的子程序能用他。。

- -# 因为自学的编程  先从汇编开始 有点难整 寻高手解答小弟的问题 感激不尽。。。

[培训]《安卓高级研修班(网课)》月薪三万计划,掌握调试、分析还原ollvm、vmp的方法,定制art虚拟机自动化脱壳的方法

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
invoke CreateFile,addr szFileName,GENERIC_WRITE,FILE_SHARE_WRITE,0,OPEN_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
  mov  ebx,eax
  invoke WriteFile,ebx,addr szTxt,sizeof szTxt,addr temp,0
  invoke  ExitProcess,0
2010-3-12 21:50
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
首先感谢 jilianghou   兄的回复

看明白了  其实不用lstrlen 函数来返回长度 原来直接使用sizeof - -#~  唉 这都是书上的内容哇,,见笑了

我用兄台提供的方法 编译出来运行可以写入了 只是为何会将长度增加到了9字节?
2010-3-12 21:56
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
马上查下sizeof 的资料   ~~
2010-3-12 21:57
0
雪    币: 210
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
明白啦,因为0~
2010-3-12 22:04
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
是的,有一个0x00
2010-3-12 22:50
0
雪    币: 87
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
invoke WriteFile,ebx,addr szTxt,addr szBuffer,addr temp,0
主要问题在这个addr szBuffer,这是一个地址,而不是一个数据,假如这个地址是400444
编译之后是push 400444而不是push [400444],这样肯定不对了;
2010-3-15 23:04
0
雪    币: 112
活跃值: (48)
能力值: ( LV9,RANK:320 )
在线值:
发帖
回帖
粉丝
8
建议调试。。。这种问题调试就知道了
2010-3-15 23:42
0
游客
登录 | 注册 方可回帖
返回
//