首页
社区
课程
招聘
[旧帖] [注意][讨论]Win32程序的命令行参数 0.00雪花
发表于: 2009-6-4 17:42 4993

[旧帖] [注意][讨论]Win32程序的命令行参数 0.00雪花

2009-6-4 17:42
4993
Win32程序的命令行参数
.386
                .model flat, stdcall
                option casemap :none   ; case sensitive

include                windows.inc
include                kernel32.inc
include                user32.inc

includelib        kernel32.lib
includelib        user32.lib

                .data

szCaption        db        '命令行参数测试',0

;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;        代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

                .code

start:
                invoke        GetCommandLine
                invoke        MessageBox,NULL,eax,addr szCaption,MB_OK
                invoke        ExitProcess,NULL

                end        start

GetCommandLine的返回指针值而已

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (7)
雪    币: 215
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
不知,楼主的意思。。。。。
2009-6-4 17:52
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
你把他编译出的程序放在不同地方运行一下
我对gui编程提不起兴趣来。太累了!!!而且还是简单重复劳动
2009-6-4 18:01
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
4
你在d/下运行 就弹出D:\程序名 的消息框来
2009-6-4 18:03
0
雪    币: 1708
活跃值: (586)
能力值: ( LV15,RANK:670 )
在线值:
发帖
回帖
粉丝
5
这个函数的返回值就包含着应用程序的完整路径名,如果带参数启动的话,还会带上参数名比如 用命令行启动d.exe -a -b -c就会弹出d.exe -a -b -c
如果仅仅想得到传给程序的参数的话 可以直接用 __argc 获取参数个数 __argv[i]来获取某个参数的值,和int main(int argc, char **argv)的参数是一样的,不过只能用来处理Ascii字串

我终于明白你说什么意思了,你的意思应该是GetCommandLine返回只是缓冲区的地址,也就是一个数值而已,怎么会用MessageBox输出的时候变成了一个字串??是这个意思吧,MessageBox接受的参数就是要输出的字串的地址,所以你传给MessageBox一个地址,函数就从该地址上读取字串直到遇到空字符为止,所以输出的结果是字串很正常呀,如果你想查看这个字串的地址,可以使用wsprintf这个函数。
2009-6-4 19:27
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
6
MessageBox的结果
2009-6-4 19:29
0
雪    币: 141
活跃值: (25)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
7
eax作为MessageBox 的参数
2009-6-4 19:40
0
雪    币: 155
活跃值: (29)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
[QUOTE=cntrump;636469]这个函数的返回值就包含着应用程序的完整路径名,如果带参数启动的话,还会带上参数名比如 用命令行启动d.exe -a -b -c就会弹出d.exe -a -b -c
如果仅仅想得到传给程序的参数的话 可以直接用 __argc 获取参数个数 __argv[i]来获取某个参数的值,和int main(i...[/QUOTE]
说的对

指针指向缓冲区的头部 缓冲区 00h 结尾 就变成字符串了

eax就是缓冲区的开始位置
2009-6-6 16:14
0
游客
登录 | 注册 方可回帖
返回
//