【技术分享】C语言转换汇编代码
2021-04-13 / 0 评论 / 54 阅读 / 3 点赞

【技术分享】C语言转换汇编代码

发光的神
2021-04-13 / 0 评论 / 54 阅读 / 正在检测是否收录...

简介

我会介绍下在Windows环境下使用gcc生成的汇编代码,gcc环境请自行安装好,汇编有好几种格式最常用的也就是 x86-64 Intel格式 和 x86-64 AT&T 语法格式,以下我都会演示,你一定想问为什么要生成汇编,在我看来的确很有用它会让你明白代码在底层是如何进行运作的,在逆向中能懂汇编代码会有很大的帮助。

C源代码

#include <stdio.h>
#include <Windows.h>

int main(){
    puts("Hello");
    system("pause");
    return 0;
}

生成obj文件

lbrcq1a8.png

gcc -c .\test.c

Intel 语法格式

lbrcklsg.png

objdump -M intel -d  .\test.o
objdump -M intel -d -S .\test.o

1.用objdump工具对.o文件进行生成Intel语法格式汇编代码。

AT&T 语法格式

lbrcmpqu.png

objdump -d .\test.o

2.用objdump工具对.o文件进行生成AT&T语法格式汇编代码。

lbrcbd1m.png

gcc -c .\test.c && objdump -S .\test.o 

1.gcc中的 -c参数只激活预处理 编译和汇编生成.o 的obj文件,这里我用了&&符号这是cmd里的并执行的意思,它会先执行 gcc 然后再执行 objdump 让它生成汇编代码。

lbrcay68.png

gcc -c .\test.c && objdump -S .\test.o > 1.txt

2.然后将内容指定输出到1.txt文本文档里,桌面就会生成1.txt文本文档打开就可以看到AT&T语法格式的汇编代码了。

3

评论 (0)

取消
0:00