OneNote防丢失。
海哥牛逼。
目录
- 一、if…else...反汇编
- 1、反汇编特点
- 2、案例分析
- 二、作业1
- 三、IF...ELSE IF...ELSE IF..多分支语句
- 1、多分支反汇编
- 2、案例分析
- 四、作业2
一、if…else…反汇编
1、反汇编特点
2、案例分析
二、作业1
解:
分析图:
-
分析参数
[ebp+8]:x [ebp+0Ch]:y -
分析局部变量
[ebp-4]=[004225c4] [ebp-8]=2=a -
分析全局变量
[004225c4]:G -
功能分析
流程图并不是完整按照汇编代码画制,做了一点优化
-
返回值分析
最后修改了全局变量的值 -
还原成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
解:
分析图:
-
分析参数
[ebp+8]:x
[ebp+0Ch]:y
[ebp+10h]:z -
分析局部变量
[ebp-4]=0=a
[ebp-8]=1=b
[ebp-0Ch]=2=c -
分析全局变量
无 -
功能分析
-
返回值分析
[ebp-4]存放临时结果,函数最后使用eax=eax+1返回结果 -
还原成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;
}