当前位置: 首页 > news >正文

做视频比较好的理财网站网站文章采集工具

做视频比较好的理财网站,网站文章采集工具,装潢设计与制作是学什么,北京做网站的人程序的二进制格式#xff1a; 关联知识#xff1a;GCC编译原理与使用-CSDN博客 linux二进制程序的严格格式#xff1a;ELF#xff08;Executeable and Linkable format#xff09; 一 预处理#xff0c;编译#xff0c;汇编得到的.o文件#xff0c;就是ELF的第一种类…程序的二进制格式 关联知识GCC编译原理与使用-CSDN博客 linux二进制程序的严格格式ELFExecuteable and Linkable format 一 预处理编译汇编得到的.o文件就是ELF的第一种类型可重定位文件 ELF文件头用于描述整个文件这个文件格式在内核中又定义分别是struct elf32_hdr 和 struct elf64_hdr。.text放编译好的二进制可执行代码.data已经初始化好的全局变量.rodata只读数据例如字符串常量、const 的变量.bss未初始化全局变量运行时会置 0.symtab符号表记录的则是函数和变量.strtab字符串表、字符串常量和变量名 什么是可重定位 编译好的代码和变量将来加载到内存里面的时候都是要加载到一定位置的所以.o文件里面调用的函数的代码位置等是不确定的但是必须可重新定位有的 section例如.rel.text, .rel.data 就与重定位有关。在rel.text中标注不包含在当前.o文件中函数表明需要重定位 二 静态链接可以将相关的函数调用合并起来形成二进制文件叫可执行文件是ELF的第二种格式 ar cr libstaticprocess.a process.o #将process.o静态连接成 libstaticprocess.a静态链接库 gcc -o staticcreateprocess createprocess.o -L. -lstaticprocess # -L 表示在当前目录下找.a 文件-lstaticprocess 会自动补全文件名比如加前缀 lib后缀.a变成 libstaticprocess.a找到这个.a 文件后 #将里面的 process.o 取出来和 createprocess.o 做一个链接形成二进制执行文件 staticcreateprocess。 这个格式和.o 文件大致相似还是分成一个个的 section并且被节头表描述。只不过这些 section 是多个.o 文件合并过的。但是这个时候这个文件已经是马上就可以加载到内存里面执行的文件了因而这些 section 被分成了需要加载到内存里面的代码段、数据段和不需要加载到内存里面的部分将小的 section 合成了大的段 segment并且在最前面加一个段头表Segment Header Table。在代码里面的定义为 struct elf32_phdr 和 struct elf64_phdr这里面除了有对于段的描述之外最重要的是 p_vaddr这个是这个段加载到内存的虚拟地址。 静态链接库一旦链接进去代码和变量的 section 都合并了因而程序运行的时候就不依赖于这个库是否存在。但是这样有一个缺点就是相同的代码段如果被多个程序使用的话在内存里面就有多份而且一旦静态链接库更新了如果二进制执行文件不重新编译也不随着更新。 所以出现了动态链接库不仅仅是一组对象文件的简单归档而是多个对象文件的重新组合可被多个程序共享。 当一个动态链接库被链接到一个程序文件中的时候最后的程序文件并不包括动态链接库中的代码而仅仅包括对动态链接库的引用并且不保存动态链接库的全路径仅仅保存动态链接库的名称。 gcc -shard -fPIC -o libdynamicprocess.so process.o #-fPIC选项用于生成位置独立代码 -shared 用于生成动态链接库文件 gcc -o dynamiccreateprocess createprocess.o -L. -ldynamicproccess #找到动态链接库文件和createprocess.o一起生成可执行文件 当运行某个程序的时候首先寻找动态链接库然后加载它。默认情况下系统在 /lib 和 /usr/lib 文件夹下寻找动态链接库。如果找不到就会报错我们可以设定 LD_LIBRARY_PATH 环境变量程序运行时会在此环境变量指定的文件夹下寻找动态链接库。 三 动态链接库就是 ELF 的第三种类型共享对象文件Shared Object。 基于动态链接库创建出来的二进制文件格式还是ELF但是稍有不同 多了一个.interp的Segment里面是ld-linux.so这就是动态链接器运行时的链接动作都是它做的多了两个section一个是.plt过程链接表Procedure Linkage TablePLT一个是got.plt全局偏移量表Global Offset TableGOT 过程 GOT 一开始就会创建一项 GOT[y]但是没有真正的地址回调 PLTPLT 这个时候会转而调用 PLT[0]也即第一项PLT[0]转而调用 GOT[2]这里面是 ld-linux.so 的入口函数这个函数会找到加载到内存中的 libdynamicprocess.so 里面的 create_process 函数的地址然后把这个地址放在 GOT[y]里面。在二进制程序里面不直接调用 create_process 函数而是调用 PLT[x]里面的代理代码代理代码调用 GOT 表中对应项 GOT[y]调用的就是加载到内存中的 libdynamicprocess.so 里面的 create_process 函数了。 运行程序为进程 如果将ELF文件加载到内存里面 加载二进制文件的方法 struct linux_binfmt {struct list_head lh;struct module *module;int (*load_binary)(struct linux_binprm *);int (*load_shlib)(struct file *);int (*core_dump)(struct coredump_params *cprm);unsigned long min_coredump; /* minimal dump size */ } __randomize_layout;//加载ELF文件格式的二进制文件的的实现 static struct linux_binfmt elf_format {.module THIS_MODULE,.load_binary load_elf_binary,.load_shlib load_elf_library,.core_dump elf_core_dump,.min_coredump ELF_EXEC_PAGESIZE, }; 加载内核镜像的时候也是使用的load_elf_binary 系统初始化关联知识待发布 调用路径为do_execve-do_execveat_common-exec_binprm-search_binary_handler-load_elf_binary do_execve是被exec这个系统调用调用的 exec 是一组函数 包含 p 的函数execvp, execlp会在 PATH 路径下面寻找程序不包含 p 的函数需要输入程序的全路径包含 v 的函数execv, execvp, execve以数组的形式接收参数包含 l 的函数execl, execlp, execle以列表的形式接收参数包含 e 的函数execve, execle以数组的形式接收环境变量 进程树 ps -ef 展示的进程带中括号的都是内核态的进程祖先都是2号进程不带中括号的都是用户态的进程祖先是1号进程 总结 首先通过图右边的文件编译过程生成 so 文件和可执行文件放在硬盘上。下图左边的用户态的进程 A 执行 fork创建进程 B在进程 B 的处理逻辑中执行 exec 系列系统调用。这个系统调用会通过 load_elf_binary 方法将刚才生成的可执行文件加载到进程 B 的内存中执行 工具 readelf 工具用于分析 ELF 的信息objdump 工具用来显示二进制文件的信息hexdump 工具用来查看文件的十六进制编码nm 工具用来显示关于指定文件中符号的信息
http://www.zqtcl.cn/news/476131/

相关文章:

  • 动易网站无法安装网站开发广告
  • 做网站类型注册域名com和cn
  • 织梦 做网站 知乎系统优化软件推荐
  • 长沙网站制作哪家强网站后台是怎么做的
  • Linux网站开发设计做ppt网站动态
  • 西部中大建设集团网站微商代理网
  • 做网站的参考文献有哪些火车头采集 wordpress
  • 网站不备案会有什么影响最新企业名录搜索软件
  • 邯郸做网站公司哪家好优化设计四年级下册数学答案
  • wordpress企业建站模版wordpress门户网站模板
  • 网站建设时间及简介企业注册代理
  • 网站首页制作方案wordpress中常用插件安装包
  • 阿里云建立网站赤坎网站建设公司
  • 时光轴 网站小公司做网站赚钱吗
  • 手机管理网站模板乐山住房和城乡建设厅网站
  • wordpress链接样式设置方法网络seo推广培训
  • 建站系统wordpress下载企业网站建设课程体会
  • 网站资源规划怎么写wordpress怎么解绑域名
  • 建湖企业做网站多少钱网页开发工具软件
  • WordPress怎么建小站wordpress替换谷歌字体库
  • ps建设网站步骤佛山做外贸网站特色
  • 杭州做代发的网站有哪些计算机基础网站建设和网络安全
  • 做汽配外贸是在哪个网站做山东百度推广
  • 网站类型大全cms监控软件下载官网
  • 网站设计制作 建网站免费asp地方门户网站系统
  • 凡科网做的网站保存后就上传了吗东莞网站推广建设
  • 网站推广案例闲鱼上做网站
  • 网站 做购物车分类信息网站建设系统
  • 网站做弹窗坂田建设网站
  • 北仑网站推广保险网站建设