失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 如何快速查看将C反汇编的代码

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

时间:2019-10-21 04:08:27

相关推荐

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

查看反汇编主要的思路在于将流程,处理,算法区分开来。

1 函数调用:

原C代码:

int sum(int, int);

int main(){

int c = sum(1, 2);

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;

}

结构体反汇编代码:

如果觉得《如何快速查看将C反汇编的代码》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。