博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
反汇编逆向实例_简单函数调用
阅读量:5075 次
发布时间:2019-06-12

本文共 1100 字,大约阅读时间需要 3 分钟。

 

反汇编逆向实例_简单函数调用  

                                                                                      by:比方

逆向反汇编第一章,基本函数调用 

示例代码:

1 #include"stdio.h" 2 int function(int a,int b) 3 { 4     int c=a+b; 5     return c; 6 } 7 void main() 8 { 9     function(1,2);10     getchar();11 }

反汇编结果:

 

1 #include "stdio.h"2 3  int function(int a,int b)4 5 {

 

00C213A3 sub esp,0CCh                 ;空出一片栈空间用来存储局部变量,本函数内部使用

00C213A9 push ebx                        ;esp-4 保存环境
00C213AA push esi                         ;esp-4 保存环境
00C213AB push edi                         ;esp-4 保存环境
 
 
 
;写es断点调试,因为临时变量区没有代码,大小为0cch
00C213AC lea edi,[ebp-0CCh]          
00C213B2 mov ecx,33h
00C213B7 mov eax,0CCCCCCCCh
00C213BC rep stos dword ptr es:[edi]   ;es段edi位置正好是本函数使用开始使用的栈起始地址。
 
 
 
1 ;int c= a+b;

00C213BE mov eax,dword ptr [a]         ;mov eax,[ebp+8] 参数1即a   为什么加8,因为前面压入了8字节分别为main做的压入EIP和前面的Push ebp

00C213C1 add eax,dword ptr [b]          ;add eax,[ebp+0ch] 参数2即b ebp里的值始终是esp原值

00C213C4 mov dword ptr [c],eax
 
 
 
1 ;return c;

00C213C7 mov eax,dword ptr [c]         ;eax始终用来存放返回值

 

}

 

00C213CA pop edi    ;恢复环境

00C213CB pop esi    ;恢复环境

00C213CC pop ebx   ;恢复环境

 

 


 

00C213CD mov esp,ebp

00C213CF pop ebp
00C213D0 ret  
 
 

 

转载于:https://www.cnblogs.com/hailunchina/p/3885007.html

你可能感兴趣的文章