🍃博主昵称:
一拳必胜客
博主主页面链接:博主主页传送门
博主专栏页面连接:专栏传送门–计算机考研
🍑创作初心:本博客的初心是每天分享记录自己学习的脚步,和各位技术友探讨交流,同时给同样感兴趣的朋友以参考;
博主研究方向:渗透测试、嵌入式、机器学习;
🌸博主寄语:感谢各位技术友的支持,您的支持就是我前进的动力 ;
‘’
特别鸣谢:木芯工作室 、Ivan from Russia
文章目录
- 🍃概念梳理
- 小知识点
- 汇编详解
- gdb的使用
- 反汇编器 objdump
🍃概念梳理
小知识点
- 32位最大支持4GB内存
- x86的32位架构一般又被称作IA-32,全名为“Intel Architecture, 32-bit”。其64位架构由AMD率先推出,并被称为“AMD64”。之后也被Intel采用,被其称为“Intel 64”。一般也被称作“x86-64”、“x64”。
- 值得注意的是Intel早在1990年代就与HP合作提出了一种用在安腾系列处理器中的独立的64位架构,这种架构被称为IA-64。IA-64是一种崭新的系统,和x86架构完全没有相似性;不应该把它与x86-64或x64弄混。
- gcc指令常用方式 -o wodeexe 指定输出文件名字 -Og 指定优化等级为低 helloworld.c c文件
- x86-64 高16位必须为0
汇编详解
- 编译: compile以后就是汇编代码
- gcc -S -Og hello.c
- 汇编:assembly后是二进制代码 没法直接认
- gcc -Og -c hello.c
汇编出来的东西里面有
很多
.size mul…
.ident “GCC:Ubuntu”…
点开头的信息不用管 都是给汇编器和链接器的伪指令
gdb的使用
可以载入 一个二进制目标代码就是.obj的程序
然后gdb hello.o
然后查看x/14xb 某个函数
反汇编器 objdump
objdump -d hello.o
注意:反汇编只是用 obj目标代码来确定汇编代码 不需要访问 源代码或汇编代码