新无止竞

首页 » 资源分享 » 如何快速查看将C反汇编的代码

如何快速查看将C反汇编的代码

查看反汇编主要的思路在于将 流程,处理,算法 区分开来。
1 函数调用
原C代码:

复制代码
int sum(intint);
int main(){
int c = sum(12);
printf("c=%d", c);
return 0;
}
int sum(int a, int b){
int c = a + b;
return c;
}
复制代码

反汇编的函数调用主要使用bp-frame式(不懂自己去查去)的调用方式:

mmm

然后是被调用的sum:

ss

 

2  for循环
基本的for循环是这样的:

复制代码
int sum(int b){
int c, i=0;
c = 0;
for(i=0; i<4; i++){
c += b;
}
return c;
}
复制代码

然后反汇编后,for循环一般是以下的形式的:

下面看看上面的c代码反汇编后变成了什么:

3 do-while循环
例子代码为:

复制代码
int sum(int b){
int c, i=0;
c = 0;
do{
c += b;
i++;
}while(i < 4);
return c;
}
复制代码

do-while循环的基本结构:


然后我例子代码的反汇编为:

 

4 while循环|
例子代码为:

复制代码
int sum(int b){
int c, i=0;
c = 0;
while(i < 4){
c += b;
}
return c;
}
复制代码

while反汇编的基本结构为:


上述代码反汇编的结果为:

5 if-else分支判断
例子代码的c语言为:

复制代码
int sum(int b){
int c, i=0;
c = 0;
if(i<0){
c = -1;
}else if(i<1){
c = 1;
}else if(i<3){
c = 3;
}
return c;
}
复制代码

if-else分支的基本结构:


然后上述代码的反汇编结果为:

6 switch-case 判断分支:

复制代码
int sum(int b){
int c, i=0;
c = 0;
switch(i){
case 1:
c = -1;
break;
case 2
c = 0;
break;
case 3:
c = 1;
break;
default:
c = 2;
}
return c;
}
复制代码


反汇编结果很直接:

 

 7 使用结构体:
结构体的例子代码:

复制代码
int sum(int b){
jack j;
pjack pj = &j;

j.one = 1;
j.two = 2;
pj->one = 3;
pj->two = 4;
return pj->two;
}
复制代码

结构体反汇编代码:


文章如无特别注明均为原创! 作者: 独自狂战, 转载或复制请以 超链接形式 并注明出处 新无止竞博客 - 专注网络技术资源分享的IT博客
原文地址《 如何快速查看将C反汇编的代码》发布于2018-11-28

分享到:
打赏

评论

游客

切换注册

登录

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册