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

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

                                                                                      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

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

时间: 2024-11-05 20:33:34

反汇编逆向实例_简单函数调用的相关文章

反汇编逆向实例_while语句反汇编

反汇编逆向实例_while语句反汇编 by:比方 逆向反汇编第四章, while语句反汇编示例代码: 1 #include"stdio.h" 2 int function(int a,int b) 3 { 4 int c=a+b; 5 int i=0; 6 while(i<50) 7 { 8 c=c+i; 9 } 10 return c; 11 } 12 void main() 13 { 14 function(1,2); 15 } 反汇编代码: 1 #include "

反汇编逆向实例_dowhile语句反汇编

反汇编逆向实例_dowhile语句反汇编 by:比方 示例代码如下: 1 #include"stdio.h" 2 int function(int a,int b) 3 { 4 int c=a+b; 5 int i=0; 6 do 7 { 8 c=c+i; 9 }while(i<50); 10 return c; 11 } 12 void main() 13 { 14 function(1,2); 15 } 反汇编代码 1 #include "stdio.h"

反汇编逆向实例_For语句反汇编

反汇编逆向实例_For语句反汇编 by:比方 逆向反汇编第二章,For语句反汇编 示例代码: 1 #include"stdio.h" 2 1.int function(int a,int b) 3 2.{ 4 3. int c=a+b; 5 4. int i; 6 5. for(i=0;i<50;i++) 7 6. { 8 7. c=c+i; 9 8. } 10 9. return c; 11 10.} 12 11.void main() 13 12.{ 14 13. funct

反汇编逆向实例_ifelse语句反汇编

反汇编逆向实例_ifelse语句反汇编 by:比方 逆向反汇编第五章,ifelse语句反汇编  by:比方示例代码: 1 #include"stdio.h" 2 int function(int a,int b) 3 { 4 int c=a+b; 5 6 if(c>0&&c<10) 7 { 8 printf("c>0"); 9 } 10 else if(c>10&&c<100) 11 { 12 print

sql事务(Transaction)用法介绍及回滚实例_转

sql事务(Transaction)用法介绍及回滚实例 事务(Transaction)是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位.通过事务,SQL Server能将逻辑相关的一组操作绑定在一起,以便服务器保持数据的完整性 当对多个表进行更新的时候,某条执行失败.为了保持数据的完整性,需要使用事务回滚. 显示设置事务 代码如下 begin try   www.2cto.com begin transaction insert into shi

iOS:Swift界面实例1, 简单界面

Apple推出了基于Objective-C的新语言Swift. 通过实例, 我们可以很好的感受这门新语言 注意事项: 在XCode6_Beta中, 如果有中文, IDE的自动补全功能就会失效, 所以开始调试的时候可以先用英文, 后面再用中文替代. 1. 新建iOS -> Single View Application. 2. 修改AppDelegate.swift文件 1 // 2 // AppDelegate.swift 3 // UIByCode_Swift_1_HelloWorld 4 /

js实例_当鼠标移动到某个元素上时在元素下面显示一段提示文字

效果: 当鼠标不在自动登录上时,只显示自动登录这个表单,下面的div提示则隐藏. 当鼠标移动到自动登录这个表单时,则显示下面的div提示,当鼠标移出时再将其隐藏 代码实现与原理: HTML代码: <body> <input type="checkbox" />自动登录 <div id="div1">不要再玩游戏啦!!!</div> </body> CSS代码:给id为div1的元素做一下修饰,并且将其最开始

赵雅智_android实例_当监听类有数据更新时下拉刷新

之前两篇文章分别介绍了OnScrollListener的实现和ContentProvider监听数据的变化,下面我们就结合者两个知识点实现一个小项目 项目需求 使用当ContentProvider监听类有数据更新时,在当前界面进行提示,并用OnScrollListener实现下拉刷新 实现效果 通过ContentProvider显示数据在界面 当监听类发生变化时 下拉刷新后显示数据 实现步骤 android_sqlite项目 定义操作标识 匹配结果码 继承ContentProvider类重写方法

大话设计模式_简单工厂模式(Java代码)

简单的描述:一个父类.多个子类,实例化那个子类由一个单独的工厂类来进行 图片摘自大话设计模式: 运算类: 1 package com.longsheng.simpleFactory; 2 3 public class Calculate { 4 5 private double firstNum; 6 private double secondNum; 7 8 public double getFirstNum() { 9 return firstNum; 10 } 11 12 public v