滴水逆向三期笔记与作业——02C语言——04 IF语句逆向分析下

文章详细探讨了if...else...和IF...ELSEIF...ELSEIF...多分支语句在反汇编过程中的特点和案例分析,涉及C语言函数的逻辑结构,并配有相关代码示例。同时,文章包含了两道关于这一主题的作业题目,旨在加深读者对这些概念的理解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

OneNote防丢失。
海哥牛逼。

一、if…else…反汇编

1、反汇编特点

在这里插入图片描述

2、案例分析

在这里插入图片描述

二、作业1

在这里插入图片描述

解:
分析图:
在这里插入图片描述

  1. 分析参数
    [ebp+8]:x [ebp+0Ch]:y

  2. 分析局部变量
    [ebp-4]=[004225c4] [ebp-8]=2=a

  3. 分析全局变量
    [004225c4]:G

  4. 功能分析
    流程图并不是完整按照汇编代码画制,做了一点优化
    在这里插入图片描述

  5. 返回值分析
    最后修改了全局变量的值

  6. 还原成C语言函数

int G;
void Function(int x, int y){
	int g = G;
	int a = 2;
	if(x >= y){
		a = a + 1;
	}
	if(x<y){
		G = a;
	}else{
		g = g + a;
		G = g;
	}
}
int main(){
	Function(4, 5);
	return 0;
}
 

三、IF…ELSE IF…ELSE IF…多分支语句

1、多分支反汇编

在这里插入图片描述

2、案例分析

在这里插入图片描述

四、作业2

在这里插入图片描述

解:
分析图:
在这里插入图片描述

  1. 分析参数
    [ebp+8]:x
    [ebp+0Ch]:y
    [ebp+10h]:z

  2. 分析局部变量
    [ebp-4]=0=a
    [ebp-8]=1=b
    [ebp-0Ch]=2=c

  3. 分析全局变量

  4. 功能分析
    在这里插入图片描述

  5. 返回值分析
    [ebp-4]存放临时结果,函数最后使用eax=eax+1返回结果

  6. 还原成C语言函数

int Function(int x, int y, int z){
	int a = 0;
	int b = 1;
	int c = 2;
	if(x<=y){
		a = b - 1;
	}else if(y>=z){
		a = c + 1;
	}else if(x>z){
		a = b + c;
	}else{
		a = b + c - 1;
	}
	return a + 1;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值