现在的位置: 首页 > 综合 > 正文

C++反汇编十一(数组参数)

2013年08月23日 ⁄ 综合 ⁄ 共 1301字 ⁄ 字号 评论关闭
45:       ArrayParam(Arr,ArrSize);
004019E8   push        5							// 函数参数2(数组长度)入栈
004019EA   lea         ecx,[ebp-18h]				// 取数组首地址放ecx
004019ED   push        ecx							// 数组首地址入栈
004019EE   call        @ILT+350(ArrayParam) (00401163)		// 调用函数
004019F3   add         esp,8

26:   void ArrayParam(int* pArr,int ArrLen)			
27:   {
004018C0   push        ebp
004018C1   mov         ebp,esp
004018C3   sub         esp,44h
004018C6   push        ebx
004018C7   push        esi
004018C8   push        edi
004018C9   lea         edi,[ebp-44h]
004018CC   mov         ecx,11h
004018D1   mov         eax,0CCCCCCCCh
004018D6   rep stos    dword ptr [edi]
28:       for (int i=0;i<ArrLen;i++)
004018D8   mov         dword ptr [ebp-4],0
004018DF   jmp         ArrayParam+2Ah (004018ea)
004018E1   mov         eax,dword ptr [ebp-4]
004018E4   add         eax,1
004018E7   mov         dword ptr [ebp-4],eax
004018EA   mov         ecx,dword ptr [ebp-4]
004018ED   cmp         ecx,dword ptr [ebp+0Ch]
004018F0   jge         ArrayParam+54h (00401914)
29:       {
30:           std::cout<<pArr[i]<<std::endl;
004018F2   push        offset @ILT+200(std::endl) (004010cd)
004018F7   mov         edx,dword ptr [ebp-4]
004018FA   mov         eax,dword ptr [ebp+8]
004018FD   mov         ecx,dword ptr [eax+edx*4]
00401900   push        ecx
00401901   mov         ecx,offset std::cout (0047be98)
00401906   call        @ILT+255(std::basic_ostream<char,std::char_traits<char> >::operator<<) (00401104)
0040190B   mov         ecx,eax
0040190D   call        @ILT+485(std::basic_ostream<char,std::char_traits<char> >::operator<<) (004011ea)
31:       }
00401912   jmp         ArrayParam+21h (004018e1)
32:   }
00401914   pop         edi
00401915   pop         esi
00401916   pop         ebx
00401917   add         esp,44h
0040191A   cmp         ebp,esp
0040191C   call        __chkesp (00420720)
00401921   mov         esp,ebp
00401923   pop         ebp
00401924   ret

抱歉!评论已关闭.