我试图编写一个带有两个参数的程序:可执行文件的路径和启动该可执行文件的参数。 例如:
$ ./program / bin / ping 127.0.0.1
但我写的代码似乎没有做任何事情,你能告诉我我做错了什么吗?
global main
section .text
main:
push ebp
mov ebp, esp
check_argc:
mov eax, [ebp + 8] ; eax <- argc
cmp eax, 1
jg do_execve
jmp done
do_execve:
mov eax,11 ; linux system call number (11) - sys_execve
mov ebx,[ebp+12] ; ebx <- argv[1]
lea ecx,[ebp+12] ; ebx <- &argv[1]
mov edx,0
int 0x80
done:
leave
ret
编辑:
对于我使用的编译:
$ nasm -f elf32 program.asm
$ gcc -lc -m32 program.o -o program.exe
&#34; check_argc&#34;部分似乎有用,我用 puts 检查了它。
答案 0 :(得分:1)
你的问题在于:
@Html.DropDownListFor(m => m.SelectedItem, Model.DDL)
主要的C原型是: mov ebx,[ebp+12] ; ebx <- argv[1]
lea ecx,[ebp+12] ; ebx <- &argv[1]
,所以你正在做的事实上是:
int main(int argc, char** argv)
您想要做的事情如下:
mov ebx,[ebp+12] ; ebx <- argv = &argv[0]
lea ecx,[ebp+12] ; ecx <- &argv