C++反汇编-函数指针分析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_38313455/article/details/86644369
;6  :	int main() {
0x4013c9	push   %ebp
0x4013ca	mov    %esp,%ebp
0x4013cc	and    $0xfffffff0,%esp
0x4013cf	sub    $0x10,%esp //开辟0x10字节的数据空间
0x4013d2	call   0x427160 <__main>
;7  :	    void (__cdecl* pShow)(void) = show;
0x4013d7	movl   $0x4013ac,0xc(%esp) //把函数show地址存到栈+0xc处
;8  :	    pShow();
0x4013df	mov    0xc(%esp),%eax //把栈+0xc处存到eax
0x4013e3	call   *%eax //调用eax处,间接调用show地址处
;9  :	    show();
0x4013e5	call   0x4013ac <show()> //直接调用show地址处
;10 :	    return 0;
0x4013ea	mov    $0x0,%eax
;11 :	}
0x4013ef	leave
0x4013f0	ret
;3  :	void __cdecl show() {
0x4013ac	push   %ebp
0x4013ad	mov    %esp,%ebp
0x4013af	sub    $0x18,%esp //开辟0x18字节的数据空间
;4  :	    cout << "show\r\n";
0x4013b2	movl   $0x4b9029,0x4(%esp)
0x4013ba	movl   $0x4c6860,(%esp)
0x4013c1	call   0x4b2e80 <std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)>
;5  :	}
0x4013c6	nop
0x4013c7	leave
0x4013c8	ret

猜你喜欢

转载自blog.csdn.net/qq_38313455/article/details/86644369