这个汇编代码对命令行参数做了什么

逆向工程 部件 x86
2021-06-27 01:54:52

我知道命令行参数发生了一些事情,但我不知道是什么。有人可以引导我完成此代码吗?

0x401050    <main>:         push   %ebp
0x401051    <main+1>:       mov    %esp,%ebp
0x401053    <main+3>:       sub    $0x8,%esp
0x401056    <main+6>:       and    $0xfffffff0,%esp
0x401059    <main+9>:       mov    $0x0,%eax
0x40105e    <main+14>:      mov    %eax,0xfffffffc(%ebp)
0x401061    <main+17>:      mov    0xfffffffc(%ebp),%eax
0x401064    <main+20>:      call   0x4013a0 <_alloca>
0x401069    <main+25>:      call   0x401430 <__main>
0x40106e    <main+30>:      mov    $0x0,%edx
0x401073    <main+35>:      add    0x8(%ebp),%edx
0x401076    <main+38>:      mov    %edx,%eax
0x401078    <main+40>:      leave  
0x401079    <main+41>:      ret 

这是在 linux 上运行的 IA32 程序集

1个回答

据我所知,此代码对命令行参数没有任何作用。

它所做的是设置堆栈并对齐它。并调用 _ alloca 和 _ _main (如果我不得不猜测,我会说这与 C++ 相关)。然后退出返回 0。这段代码与wikibooks上的hello.S示例非常相似,并且对发生的事情有详细说明。