第0章Linux环境到内核基础知识
#include<stdio.h>int main(void){printf("hello world\n");return 0;}
ELF Header:Magic: 7f 45 4c 46 02 01 01 00 00 00 00 00 00 00 00 00Class: ELF64Data: 2's complement, little endianVersion: 1 (current)OS/ABI: UNIX - System VABI Version: 0Type: EXEC (Executable file)Machine: Advanced Micro Devices X86-64Version: 0x1Entry point address: 0x4003c0Start of program headers: 64 (bytes into file)Start of section headers: 2560 (bytes into file)Flags: 0x0Size of this header: 64 (bytes)Size of program headers: 56 (bytes)Number of program headers: 8Size of section headers: 64 (bytes)Number of section headers: 29Section header string table index: 26Section Headers:[Nr] Name Type Address OffsetSize EntSize Flags Link Info Align[ 0] NULL 0000000000000000 000000000000000000000000 0000000000000000 0 0 0[ 1] .interp PROGBITS 0000000000400200 00000200000000000000001c 0000000000000000 A 0 0 1[ 2] .note.ABI-tag NOTE 000000000040021c 0000021c0000000000000020 0000000000000000 A 0 0 4[ 3] .hash HASH 0000000000400240 000002400000000000000024 0000000000000004 A 4 0 8[ 4] .dynsym DYNSYM 0000000000400268 000002680000000000000060 0000000000000018 A 5 1 8[ 5] .dynstr STRTAB 00000000004002c8 000002c8000000000000003d 0000000000000000 A 0 0 1[ 6] .gnu.version VERSYM 0000000000400306 000003060000000000000008 0000000000000002 A 4 0 2[ 7] .gnu.version_r VERNEED 0000000000400310 000003100000000000000020 0000000000000000 A 5 1 8[ 8] .rela.dyn RELA 0000000000400330 000003300000000000000018 0000000000000018 A 4 0 8[ 9] .rela.plt RELA 0000000000400348 000003480000000000000030 0000000000000018 A 4 11 8[10] .init PROGBITS 0000000000400378 000003780000000000000018 0000000000000000 AX 0 0 4[11] .plt PROGBITS 0000000000400390 000003900000000000000030 0000000000000010 AX 0 0 4[12] .text PROGBITS 00000000004003c0 000003c00000000000000258 0000000000000000 AX 0 0 16[13] .fini PROGBITS 0000000000400618 00000618000000000000000e 0000000000000000 AX 0 0 4[14] .rodata PROGBITS 0000000000400628 000006280000000000000010 0000000000000000 A 0 0 4[15] .eh_frame_hdr PROGBITS 0000000000400638 000006380000000000000024 0000000000000000 A 0 0 4[16] .eh_frame PROGBITS 0000000000400660 00000660000000000000007c 0000000000000000 A 0 0 8[17] .ctors PROGBITS 00000000006006e0 000006e00000000000000010 0000000000000000 WA 0 0 8[18] .dtors PROGBITS 00000000006006f0 000006f00000000000000010 0000000000000000 WA 0 0 8[19] .jcr PROGBITS 0000000000600700 000007000000000000000008 0000000000000000 WA 0 0 8[20] .dynamic DYNAMIC 0000000000600708 000007080000000000000190 0000000000000010 WA 5 0 8[21] .got PROGBITS 0000000000600898 000008980000000000000008 0000000000000008 WA 0 0 8[22] .got.plt PROGBITS 00000000006008a0 000008a00000000000000028 0000000000000008 WA 0 0 8[23] .data PROGBITS 00000000006008c8 000008c80000000000000010 0000000000000000 WA 0 0 8[24] .bss NOBITS 00000000006008d8 000008d80000000000000010 0000000000000000 WA 0 0 8[25] .comment PROGBITS 0000000000000000 000008d8000000000000003e 0000000000000001 MS 0 0 1[26] .shstrtab STRTAB 0000000000000000 0000091600000000000000e7 0000000000000000 0 0 1[27] .symtab SYMTAB 0000000000000000 000011400000000000000660 0000000000000018 28 47 8[28] .strtab STRTAB 0000000000000000 000017a0000000000000025b 0000000000000000 0 0 1
execve("./hello", ["./hello"], [/* 41 vars */]) = 0brk(0) = 0x151b000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733ef000access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)open("/etc/ld.so.cache", O_RDONLY) = 3fstat(3, {st_mode=S_IFREG|0644, st_size=62458, ...}) = 0mmap(NULL, 62458, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f30733df000close(3)= 0open("/lib64/libc.so.6", O_RDONLY) = 3 //加载c语言库read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0000\356!\2478\0\0\0"..., 832) = 832fstat(3, {st_mode=S_IFREG|0755, st_size=1928936, ...}) = 0mmap(0x38a7200000, 3750184, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x38a7200000mprotect(0x38a738a000, 2097152, PROT_NONE) = 0mmap(0x38a758a000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x18a000) = 0x38a758a000mmap(0x38a7590000, 14632, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x38a7590000close(3) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733de000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733dd000mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733dc000arch_prctl(ARCH_SET_FS, 0x7f30733dd700) = 0mprotect(0x38a758a000, 16384, PROT_READ) = 0mprotect(0x38a701f000, 4096, PROT_READ) = 0munmap(0x7f30733df000, 62458) = 0fstat(1, {st_mode=S_IFCHR|0620, st_rdev=makedev(136, 0), ...}) = 0mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f30733ee000write(1, "hello world\n", 12hello world) = 12exit_group(0) = ?+++ exited with 0 +++
int __open_nocancel(const char *file,int oflag,...){int mode=0;if(oflagO_CREAT){va_list arg;va_start(arg,oflag);mode=va_arg(arg,int);va_end(arg);}//系统调用编号return INLINE_SYSCALL(openat,4,AT_FDCWD,file,oflag,mode);}
# define INTERNAL_SYSCALL(name, err, nr, args...) \({ \register unsigned int resultvar; \EXTRAVAR_##nr \asm volatile ( \LOADARGS_##nr \"movl %1, %%eax\n\t" \"int $0x80\n\t" \RESTOREARGS_##nr \: "=a" (resultvar) \: "i" (__NR_##name) ASMFMT_##nr(args) : "memory", "cc"); \(int) resultvar; })
第0章Linux环境到内核基础知识的更多相关文章
- 【菜鸟学习Linux】-第三章- Linux环境搭建-使用VMware9安装Ubuntu 12.04系统
上一步,我们安装了VMware9虚拟机,现在我们就是用它来安装Ubuntu12.04系统,至于Ubuntu是什么,我就不废话了,大家google一下,比我讲的清楚,好了,开始干活! Ubuntu官网下 ...
- 【RL-TCPnet网络教程】第38章 TFTP简单文件传输基础知识
第38章 TFTP简单文件传输基础知识 本章节为大家讲解TFTP(Trivial File Transfer Protocol,简单文件传输协议)的基础知识,方便后面章节的实战操作. (本章 ...
- 【RL-TCPnet网络教程】第16章 UDP用户数据报协议基础知识
第16章 UDP用户数据报协议基础知识 本章节为大家讲解UDP(User Datagram Protocol,用户数据报协议),需要大家对UDP有个基础的认识,方便后面章节UDP实战操作. ...
- 【STM32H7教程】第47章 STM32H7的FMC总线基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第47章 STM32H7的FMC总线基础知识和HA ...
- 【RL-TCPnet网络教程】第41章 HTTP超文本传输协议基础知识
第41章 HTTP超文本传输协议基础知识 本章节为大家讲解HTTP(HyperText Transfer Protocol,超文本传输协议),从本章节开始,正式进入嵌入式Web的设计和学习. ...
- 【STM32H7教程】第32章 STM32H7的TIM定时器基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第32章 STM32H7的TIM定时器基础知识和H ...
- 【STM32H7教程】第29章 STM32H7的USART串口基础知识和HAL库API
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第29章 STM32H7的USART串口基础知识和 ...
- Windows内核基础知识-1-段寄存器
Windows内核基础知识-1-段寄存器 学过汇编的应该都知道段寄存器,在Windows里段寄存器有很多,之前可能只接触了ds数据段,cs 代码段这种,今天这个博客就介绍Windows一些比较常用的段 ...
- Windows内核基础知识-2-段描述符
Windows内核基础知识-2-段描述符 比如: ES 002B 0(FFFFFFFF) 意思就是es段寄存器,段选择子/段选择符 为002B, 起始地址base为0, 限制范围Limit地址最大能寻 ...
随机推荐
- Ajax请求出现406的原因
一般出现406错误有两种可能: 1.如果后缀是html是不能响应json数据的.需要修改后缀名. 在做伪静态化过程中,以.html结尾的后缀,做post请求时,不能响应json格式,这是spring官 ...
- JAVA中文字符串编码--GBK转UTF-8
转载自:https://www.cnblogs.com/yoyotl/p/5979200.html 一.乱码的原因 gbk的中文编码是一个汉字用[2]个字节表示,例如汉字“内部”的gbk编码16进制的 ...
- Eclipse上进行java web项目的打包
以下是一个基于maven搭建的Spring Boot项目的目录结构 版权声明:本文为博主原创文章,未经博主允许不得转载. 原文地址: https://www.cnblogs.com/poterliu/ ...
- supervisor 安装使用
简介 Supervisor是用Python开发的一套通用的进程管理程序,能将一个普通的命令行进程变为后台daemon,并监控进程状态,异常退出时能自动重启.它是通过fork/exec的方式把这些被管 ...
- 【HIHOCODER 1403】后缀数组一·重复旋律(后缀数组)
描述 小Hi平时的一大兴趣爱好就是演奏钢琴.我们知道一个音乐旋律被表示为长度为 N 的数构成的数列. 小Hi在练习过很多曲子以后发现很多作品自身包含一样的旋律.旋律是一段连续的数列,相似的旋律在原数列 ...
- ubuntu12.04 ppa安装pidgin
sudo apt-get update sudo apt-get dist-upgrade sudo add-apt-repository ppa:pidgin-developers/ppa按下回车 ...
- python socket相关
套接字的工作流程(基于TCP和 UDP两个协议) TCP和UDP对比 TCP(Transmission Control Protocol)可靠的.面向连接的协议(eg:打电话).传输效率低全双工通信( ...
- OO第四单元博客
第四单元博客 这个单元的作业,emmmm助教们做的工作还是一如既往的多,我们只负责添一添代码,最后一次作业了,感谢各位助教和老师,同时也希望我能顺利通过这最后一关. 架构设计 第一次作业架构展示 第一 ...
- web安全测试---AppScan扫描工具(转)
安全测试应该是测试中非常重要的一部分,但他常常最容易被忽视掉. 尽管国内经常出现各种安全事件,但没有真正的引起人们的注意.不管是开发还是测试都不太关注产品的安全.当然,这也不能怪我们苦B的“民工兄弟” ...
- eureka显示ip地址的参数
eureka.instance.prefer-ip-address=trueeureka.instance.instance-id=${#spring.cloud.client.ipAddress}: ...