学习目标 1.熟悉Linux系统下的开发环境 2.熟悉vi的基本操作 3.熟悉gcc编译器的基本原理 4.熟练使用gcc编译器的常用选项 5.熟练使用gdb调试技术 6.熟悉makefile基本原理及语法规范 7.掌握静态库和动态库的生成与调用方法 8.理解C程序中模块的概仿,模块分解的“高内聚,低 ...
分类:
其他好文 时间:
2019-09-22 23:54:03
阅读次数:
188
2019 2020 1 20175329 《信息安全系统设计基础》第1周学习总结 教材学习内容总结 程序被其他程序翻译成不同的格式 处理器读并解释存储再内存中的指令 处理器读并解释存储再内存中的指令 运行hello程序 编译器驱动程序 静态链接 静态库连接 教材学习中的问题和解决过程 问题1:无法找 ...
分类:
其他好文 时间:
2019-09-22 23:40:37
阅读次数:
109
C语言编译过程 编译 >形成目标代码,目标代码是在目标机器上运行的代码。 连接 >将目标代码与C函数库相连接,并将源程序所用的库代码与目标代码合并,并形成最终可执行的二进制机器代码(程序)。 执行 >在特定的机器环境下运行C程序。 如果用一张图来表示: 编译,编译程序读取源程序(字符流),对之进行词 ...
分类:
编程语言 时间:
2019-09-20 19:04:00
阅读次数:
56
Mach-o文件格式:文件头+load commands+各个section 文件头:文件的基本信息,文件类型,cpu信息等 Load commands:相当于段表,描述各个段、符号表、重定位表在文件中的位置 各个section:真正的代码段、数据段、符号表、重定位表所在的区域。 https://l ...
分类:
系统相关 时间:
2019-09-10 14:50:56
阅读次数:
88
在阅读《程序员的自我修养 链接装载与库》的第四章 ==静态链接== 4.6.2==最小的程序==时,发现代码是基于linux32位系统的程序,无法在64位系统上编译和运行。 正确的64位程序应该为 代码 运行结果 原因 linux系统中64位汇编和32位汇编的系统调用主要有以下不同: 系统调用号不同 ...
分类:
其他好文 时间:
2019-09-09 23:01:11
阅读次数:
104
很久不玩PE格式了,这次由于要恢复SSDT表的缘故+一个忽然兴起的念头,导致我花了一个小午写了个运行在Ring0的简单PE加载器,并且有意外的收获。 恢复SSDT表手段很多,基本上都是直接从文件中依赖重定位表获取对应数据,重定位后得到相对当前内核加载位置的正确调用地址。大部分的实现代码比较粗糙,因为 ...
分类:
其他好文 时间:
2019-09-09 15:05:22
阅读次数:
130
对比windowsPE文件与概述 对比windowsPE文件与概述 在windows中可执行文件是pe文件格式,Linux中可执行文件是ELF文件,其文件格式是ELF文件格式,在Linux下的ELF文件除了可执行文件(Excutable File),可重定位目标文件(RellocatableObje ...
分类:
系统相关 时间:
2019-09-05 23:39:07
阅读次数:
144
1、有利于软件程序的更新维护,节省内存磁盘空间 2、使得开发的过程中的各个模块更加独立,耦合度小,便于独立进行开发测试 1、 代码装载速度快,执行速度略比动态链接库快; 2、 只需保证在开发者的计算机中有正确的.LIB文件,在以二进制形式发布程序时不需考虑在用户的计算机上.LIB文件是否存在及版本问 ...
分类:
系统相关 时间:
2019-09-02 23:32:19
阅读次数:
119
内存管理的?标:实现内存分配和回收,提高内存空间的利用率和内存的访问速度 一、存储器的层次结构 数据存储的局部性原理: 局部性:在?段较短时间内,程序的执?仅限于某个部分,相应地它所访问的存储空间也局限于某个区域 分类: 时间局部性:某条指令?旦执?,不久 后该指令可能再次执? 空间局部性:?旦程序 ...
分类:
其他好文 时间:
2019-08-31 22:59:01
阅读次数:
60
一、静态库和共享库的区别 静态库在编译的时候被加载,而共享库在执行之后才被加载 加载静态库编译所生成的可执行文件比使用共享库的方式要大 静态库以.a为后缀,共享库以.so为后缀 二、静态库的制作 gcc -c add.c sub.c(编写源文件,gcc -c命令生成对应的目标文件add.o和sub. ...
分类:
系统相关 时间:
2019-08-29 11:09:36
阅读次数:
132