pwn学习日记Day14 《程序员的自我修养》读书笔记
2024-09-08 02:19:12
目标文件:计算机科学中存放目标代码的计算机文件,包含着机器代码,代码在运行时使用的数据,调试信息等,是从源代码文件产生程序文件这一过程的中间产物。
目标代码(objectcode)指计算机科学中编译器或汇编器处理源代码后所生成的代码,它一般由机器代码或接近于机器语言的代码组成。目标文件(objectfile)即存放目标代码的计算机文件,它常被称作二进制文件(binaries)。
目标文件包含着机器代码(可直接被计算机中央处理器执行)以及代码在运行时使用的数据,如重定位信息,如用于链接或调试的程序符号(变量和函数的名字),此外还包括其他调试信息。目标文件是从源代码文件产生程序文件这一过程的中间产物,链接器正是通过把目标文件链接在一起来生成可执行文件或库文件。目标文件中唯一的要素是机器代码,例如,用于嵌入式系统的目标文件可能仅仅含有机器代码。
寻址方式的区别:
- 近址寻址或远址寻址
- 绝对寻址或相对寻址
- 寻址长度为8位、16位、32位或64位
但是对于32位x86平台下的elf文件的重定位入口所修正的指令寻址方式只有两种: - 绝对近址32位寻址
- 相对近址32位寻址
ABI:application binary interface
API:application programming interface
C为例子决定二进制文件是否兼容:
- 内置类型(int)的大小和在存储器中的放置方式(大小端、文件对齐)
- 组合类型(数组、struct、union)的存储方式和内存分布
- 外部符号与用户定义的符号之间的命名方式和解析方式(func函数在C语言目标文件中是否被解析成外部符号_func)
- 函数调用方式(参数入栈顺序、返回值如何保持)
- 堆栈的分布方式(参数和局部变量在堆栈中的位置、参数的传递方法)
- 寄存器使用约定(函数调用时哪些寄存器可以修改,哪些须要保存)
最新文章
- Java中查找文件并且打印输出指定文件下面的子目录
- centos6.5编译安装lamp开发环境
- SQL标签
- 解决保存快照失败后redis无法写入的问题
- Linux下运行top命令显示的PR\NI\RES\SHR\S\%MEM TIME+都代表什么
- segment fault
- NodeJS包管理工具——npm入门
- oschina娱乐游戏
- mysql存储过程查询结果循环遍历 判断 赋值 游标等基本操作
- MVC各层介绍使用---初步理解
- 企业信息化-Excel快速生成系统
- 编写高质量的Python代码系列(一)之用Pythonic方式来思考
- 2018-2019-2 《网络对抗技术》 Exp1 PC平台逆向破解 20165215
- Octopus501工作站环境配置
- [硬件]SICK LMS111激光扫描仪使用
- 基础SELECT实例
- Nginx七层反向代理和负载均衡
- [LeetCode] 116&;117. Populating Next Right Pointers in Each Node I&;II_Medium tag: BFS(Dont know why leetcode tag it as DFS...)
- Java SE 基础知识(一)
- Java之IO(九)其它字节流