编译-装载-链接
文章平均质量分 79
倔强石头
Android 开发 Android安全 Android漏洞 Android逆向
展开
-
系统调用与API
一、系统调用介绍1.什么是系统调用在现代操作系统中,程序运行的时候,本身并没有权利访问多少系统资源,系统有限的资源有可能别多个不同的程序同时访问,为了保护系统资源,让应用程序有能力访问系统资源,每个操作系统都提供了一套接口,以供应用程序使用。这些接口往往通过系统中断来实现。比如Linux使用0x80号中断作为系统调用的入口,window采用0x2E号中断作为系统调用接口。2.Linux 系统调用在X原创 2017-03-01 14:52:39 · 2100 阅读 · 1 评论 -
静态链接之目标文件的内容
编译器编译源代码后生成的文件叫做目标文件,目标文件从结构上讲,它是已经编译后的可执行文件格式,只是还没有经过链接的过程,其中可能有些符号或有些地址还没有调整。一、目标文件的格式现在PC上流行的可执行文件格式(Executable)主要是Windows下的PE(Portable Executable)和Linux的ELF(Executable Linkable Format), 它们都是COFF(C原创 2017-01-30 16:50:05 · 2894 阅读 · 0 评论 -
静态链接之静态链接
一、空间与地址分配如果我们有两个目标文件a.o和b.o,我们用链接器将两个文件链接后输出到可执行文件中ab.o中,输出文件中的空间如何分配给输入文件?1。按序叠加最简单的方案就是将输入的目标文件按次序叠加起来。但这样会造成空间的浪费。 2.相似段合并比较贴近事实的方法是将相同性质的段合并到一起。 “地址和空间“有两个含义,第一个是在输出的可执行文件中的空间;第二个是原创 2017-03-23 16:40:39 · 1333 阅读 · 0 评论 -
动态链接之可执行文件的装载与进程
一、进程的虚拟地址空间 程序 是一个静态的概念,它就是一些预先编译好的指令和数据集合的一个文件。 进程 是一个动态的概念,它是程序运行时的一个过程。 每个进程被运行起来以后,它将有自己独立的虚拟地址空间(Viretual Address),虚拟地址空间的大小由CPU的位数决定。32位的硬件平台虚拟地址空间为4GB,Linux系统的内核空间和用户空间比是1:3,Windows系统的内核空间和用原创 2017-04-04 10:36:47 · 349 阅读 · 0 评论