【发布时间】:2021-02-12 11:58:35
【问题描述】:
所以我目前正在尝试使用 masm 获取命令行参数,这是我目前所做的:
.386
.MODEL FLAT
includelib kernel32.lib
includelib msvcrt.lib
__getmainargs PROTO C :DWORD
printf PROTO C :DWORD
.data
str_argv db "argv[1]: %s",0
.fardata?
argc dd ?
argv db 255 DUP(?)
env dd ?
.code
START:
push 0
push OFFSET env
push OFFSET argv
push OFFSET argc
call __getmainargs
add esp, 4*4 ;4 args
push [edi]
push OFFSET str_argv
call printf
add esp, 4 * 2 ;2 args
ret
END START
但是,这会返回一个与 cmdline 参数不对应的垃圾字符串,在本例中为模块名称。
任何想法为什么这不起作用? -> 还有其他方法可以访问 cmdline args 吗?
提前致谢
【问题讨论】: