首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何读取Linux进程中的代码和数据

Linux下的程序的文件格式是ELF,里面分了各种,有代码、数据、等。当运行这个程序时,系统也会给这个进程创建虚拟内存,然后把ELF中的数据分别加载到内存中的对应位置。...本文整理了用cpp程序读取内存中的代码和rodata数据的方法。...这个文件的前三列分别是代码、rodata数据、和普通数据,可以看到代码的权限是读和执行,rodata数据是只读,普通数据可读写。...用程序读取内存的代码和rodata数据 以tcpdump程序为例,用程序读取代码和radata的过程如下: 1.查看tcpdump的进程ID。...2.运行自己写的程序,分别输入进程PID和代码的地址。

3.8K20

Linux从头学03:如何告诉 CPU,代码、数据、栈在内存中什么位置?

就拿学习 Linux 操作系统来说,作为一个长期的学习计划,不太可能一上来就阅读最新的 Linux 5.13 版本的代码。...代码:用来存放代码的基地址放在寄存器 CS 中,指令指针寄存器 IP 用来表示下一条指令在中的偏移地址; 数据:用来存放程序处理的数据,的基地址存放在寄存器 DS 中。...在 Linux 2.6 代码中,由于 Linux 把整个 4 GB 的地址空间当做一个“扁平”的结果来处理(的基地址是 0x0000_0000,偏移地址的最大值是 4GB),因此虚拟地址(逻辑地址)在数值上等于线性地址...这张图的意思是:在 Linux 2.6 中,用户代码的开始地址是 0,最大范围是 4 GB;用户数据的开始地址是 0,最大范围也是 4 GB;内核的数据代码也是如此。 ?...因为栈的使用是从高地址向低地址方向进行的,所以需要把栈顶指针设置为最大地址单元的下一个地址空间。 ?

2.3K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    GOTlinux系统中实现代码动态加载的作用和其他的说明

    上图显示的代码也叫“函数桩”,每个系统函数都对应一这样的代码。为何要用“桩”来描述这些代码呢,因为这些指令都做了相同的工作,首先他们都将一个数值压入堆栈,这个数值对应该段代码的序号。...4003f0这个位置其实对应一代码的起始地址,这段代码的作用是从.got.plt里面取出一个数值作为下一步跳转的地址,然后通过Jmp跳转到取出地址所在位置,将程序控制权交给那里的代码。...由于.text设置为不可写,如果可写,那么就可能让人直接修改其中代码指令了。.got.plt属于数据,因此里面的数据可以修改,绕这个弯的目的就是防止代码被他人直接修改。...除了.got.plt外,还需要理解的是.got,后者的作用主要在于访问共享代码库到处的变量。两者区别在于.got.plt包含了代码,而.got会直接包含共享库到处的变量地址而不是包含代码。...同理.fini_array也包含了一系列函数地址,他们在代码运行结束后会被系统调用,下一节我们再回头看看程序表头。

    2.3K20

    手敲代码量降低47%!Kite用AI预测下一代码,已支持13种语言和16款编辑器

    ---- 新智元报道 编辑:QJP 【新智元导读】你还在一行行地敲代码吗?「Kite」为开发人员提供代码片段自动补全功能,近期又新增了对11种编程语言的支持,使其支持的总数达到了13种。...在Kite的帮助下,活跃开发者甚至每天只需编写由大约 175 个单词组成的代码。...今年5月,Kite增加了对JavaScript的支持,推出了针对 Python 的高级代码计划,并更新了其引擎以使用深度学习技术来获得更好的代码补全效果。...在新版本中,Kite构建了一个更加复杂的爬虫引擎,可以根据使用频率来对代码进行排序,在模型的训练过程中,不再包含不那么流行的代码,使得噪音减少了很多。...下一步怎么走,Kite显然想到了更多 对于 Python,「Kite Free」 包括按相关性排序、本地代码处理、键入时的文档和键入时的函数签名的功能。

    1.8K20

    过年红利之福利篇

    玩转Linux常用操作 导语用户切换vi基本操作异常处理保存退出移动移动(程序)选中文本(可视模式)删除复制粘贴移动下一行替换缩进查找替换多行注释文件浏览器分屏命令 导语 大家好,我是光城,终于出来冒泡了...重点来了:那就是,本篇文章:玩转Linux常用操作。欢迎大家转发,赞赏与收藏! 18年的更文已经结束,19年更起了,陆陆续续,后面的文章及学习计划顺时安排起来,开始搞事了!...上下左右 h 左 j 下 k 上 l 右 行内移动 w word 向后移动一个单词 b back 向前移动一个单词 0 行首 ^ 行首,第一个不是空白字符的位置 代码缩进情况下好用,直接跳转到代码首位...+f 向下翻页 H Head 屏幕顶部 M Middle 屏幕中间 L Low 屏幕底部 移动(程序) 段落移动 { 上一 } 下一 括号切换 % 括号匹配及切换 标记 某一块代码可能需要稍后处理...ndd 删除n行 D 删除光标至行尾 复制粘贴 y copy 复制 跟可视命令,移动命令一起连用 yy 复制一行 nyy 复制n行 p 粘贴 np 粘贴n次 移动下一行 o 跳转下一行 O 跳转上一行

    75830

    IOS,安卓,Windows和塞班,你最喜欢哪个?为什么?

    ,就冲着这点还是感觉windows的框架兼容性还是非常强,而且现在windows系统在PC端还是稳稳的霸主地位,虽然linux系统在早期对于微软产生过威胁,但整体来讲冲击不大。...安卓系统在开始的时候用户体验很一般,而且性能也是非常差,加上当初的硬件配置有限,但苹果公司一直在优化不停的增加新的功能,加上硬件不断的提升,安卓手机的体验越来越好,安卓系统实际上是在linux基础上构建了一个新的系统...说到塞班系统只能比较可惜,塞班系统在用户体验上以及开发易用性上,明显还没走出传统手机的影子,距离智能手机差距还是非常远,因为从事软件开发的缘故也是研究过塞班系统一时间,还是有点过于程序化创新方面还是差了点...这四个系统从技术角度上各有千秋,从开发者角度更加喜欢安卓,毕竟代码开源并且能从源码中汲取很多的编程知识,虽然代码的更新速度太快,大部分时间跟不上思路,但可以从中学习到很多模块设计理念,能明白里面运行的机制和原理...,当然更希望国内有自己的移动操作系统,这样在关键时候不被卡脖子,希望能帮到你。

    92520

    java常识-java怎么换行「建议收藏」

    (不一定到下一行行首),并不移动左右。...后来人们对其进行了改进,加入了”字车”,每次打完一行都要重新拨动上面的”字车”,代表,要对下一行首位进行书写,此时打字机自动回到行首,并且滚动下面的卷纸滚轮换到下一行,模拟两个字符输出进行占位 后来研发计算机键盘的时候...软回车是用 Shift + Enter 产生的,它换行,但是并不换,即前后两文字在 Word 中属于同一“”。...硬回车的html代码是 … ,段落的内容就夹在里面,而软回车的代码很精悍: 。网页的文字如果复制到word中,则硬回车变为弯曲的箭头,软回车变为向下的箭头。...系统影响 换行符会随着系统的不同而不同 windows下的文本文件换行符:\r\n Mac linux/unix下的文本文件换行符\n 因此常见的现象是,Unix/Mac系统下的文件在Windows

    3.7K20

    vim编辑器

    每一个要使用 Linux 的程序员,都应该或多或少的学习一些 vi 的常用命令 1.2 vi 和 vim 在很多 Linux 发行版中,直接把 vi 做成 vim 的软连接 vi vi 是 Visual...在程序开发时,通常 一功能相关的代码会写在一起 —— 之间没有空行 命令 功能 { 上一 } 下一 2) 括号切换 在程序世界中,()、[]、{} 使用频率很高,而且 都是成对出现的 命令 功能...删除移动命令对应的内容 dd delete 删除光标所在行,可以 ndd 复制多行 D delete 删除至行尾 提示:如果使用 可视模式 已经选中了一文本,那么无论使用 d 还是 x,都可以删除选中文本...前面空格越少,代码的级别越高 前面空格越多,代码的级别越低 4.9 查找 常规查找 命令 功能 /str 查找 str 查找到指定内容之后,使用 Next 查找下一个出现的位置: n: 查找下一个...在开发中,可能会遇到一次性给多行代码 增加注释 的情况 在 Python 中,要给代码增加注释,可以在代码前增加一个 # 要实现这个效果可以在 命令模式 下 移动到要添加注释的 第 1 行代码,按

    1.9K40

    Linux】第一个小程序——进度条实现

    它将光标移动下一行的开头位置,常用于分隔文本的不同行。 【功能】:在Linux系统中,\n通常用于表示文本的换行。当新的字符输入时,它们会在新的行上输出。这使得文本内容更加清晰、易读。...它将光标移动到当前行的开头位置,但不移动下一行。 【功能】:在Linux系统中,\r通常用于在同一行上连续输出不同的内容。如果有新的字符输入,它们将覆盖已存在的字符。...✨\n的主要功能是换行,将光标移动下一行的开头;而\r的主要功能是回车,将光标移动到当前行的开头。 2....进度条代码 #include #include #include int main() { //进度条代码 //1.数组存放字符...比如我们想在控制台上打印一带颜色的文字。假设你想打印一条红色的消息"Hello, World!"

    9910

    Vim——编译器之神

    vi是linux中最经典的文本编辑器,vi一共有3种工作模式,分别是命令模式,末行模式,编辑模式.打开文件首先进入的就是命令模式,是使用vi的入口。...在命令模式按i进入编辑模式,按esc再退出到命令模式,输入:进入末行模式 vim 是从vi发展出来的文本编辑器, 支持代码补全、编译 及 错误跳转等方便编程的功能提别丰富, 在程序员中被广泛 使用,...向后移动一个单词 b : 向前移动一个单词 0 : 行首 ^ : 行首,第一个不是空白字符的位置 $ : 行尾 4.行数移动...{ : 上一 } : 下一 7.括号切换: () [] {} 使用效率高 而且都是成对出现的 % 括号匹配及切换 8.选中文件(可视模式):...str : 在光标之后查找str 拓展: 1.查找到指定内容之后,使用Next查找下一个出现的位置 n: 查找下一

    1K10

    vim 编辑器常用命令

    代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。linux 系统用户最喜欢的编辑器。 下面我们就来看看它常用命令集合。...,对应为左下上右 H M L:移动光标,对应为,顶部,中间,底部。...Crtl + f:下一页 Crtl + b:上一页 ctrl + d:翻半页 ctrl + u:翻半页 20G:跳到第20行代码 G:回到最后一行 gg:回到开始一行 u:撤销 ctrl + r:反撤销...v:多行选中,光标所在位置 V:多行选中,整行都会被选中 :向右移动代码 <<:向左移动代码 ....:重复执行代码 {}:定位一代码的开始 r:替换一个字符 R:替换所有字符 :%s/hello/world/g:匹配内容并替换 :11, 16s///g:替换11-16行

    1.5K20

    Linux D02 VI编辑器_终端编辑器(重点重点重点)

    配置文件 例如: tomcat服务器的配置文件 例如: 网卡信息的配置文件 在没有图形界面的环境下, 要编辑文件, vi是最佳选择 每一个使用linux的程序员,都应该或多或少的学习一些...vi的常用命令 1.2 vi 和 vim 1.2.1 VI vi是 visual interface 的简称, 是linux中最经典的文本编辑器 vi 的核心设计思想 让程序员的手指始终保持在键盘的..., 通常 一功能相关的代码会写在一起 – 之间没有空行 命令功能{上一}下一 2) 括号切换 在程序世界中, **()、[]、{}**使用率很高, 而且 都是成对出现的....) delete 删除移动命令对应的内容 dd delete 删除光标所在行, 可以ndd删除多行 D delete 删除至行尾 提示: 如果使用 可视模式 已经选中了一文本, 那么无论使用 d 还是...n : 查找下一个 N : 查找上一个 如果不想看到高亮显示, 可以随便查找一个文件中不存在的内容即可 单词快速匹配 命令 功能 * 向后查找当前光标所在单词 # 向前查找当前光标所在单词

    1.1K20

    【综合笔试题】难度 2.55,结合了「DP」和「回溯」的经典回文串题目

    如果有连续的一是回文串,我们再对剩下连续的一继续爆搜。 为什么能够直接接着剩下一继续爆搜? 因为任意的子串最终必然能够分割成若干的回文串(最坏的情况下,每个回文串都是一个字母)。...然后再对下一个起点(下个字符) b 进行爆搜? 不需要。...因此,我们的遍历过程可以整理为:右端点 一直往右移动(从小到大),在 固定情况下,左端点 在 在左边开始,一直往左移动(从大到小)。...整体复杂度为 空间复杂度:动态规划部分的复杂度为 ;方案数量最多为 ,每个方案都是完整字符串 s 的分割,复杂度为 ,整体复杂度为 总结 对于此类要枚举所有方案的题目,我们都应该先想到「...在这个系列文章里面,除了讲解解题思路以外,还会尽可能给出最为简洁的代码。如果涉及通解还会相应的代码模板。

    62240

    腾讯所有事业群继续人员缩减;字节跳动更新价值观;传阿里正逐步解除与蚂蚁集团的业务往来 | Q资讯

    Linux 的内核中,最快是下一个内核周期。...Linus 称,他们希望很快能将 Rust 编写的代码合并到内核中,甚至 Rust 可能出现在下一个版本中,即 Linux 5.20。...目前,还没有任何 Rust for Linux 拉取请求被发送或合并,但是用于基础设施、一些基本的示例驱动程序中时,内核的 Rust 启动代码已经开始稳定下来。...如之前多次提到,Linux 内核中的 Rust 支持在构建时仍然是可选的,具体取决于你是否需要支持或仅仅是在 Rust 代码中实现某些内核性能。...Linux 5.20 合并窗口将在 7 月底左右 Linux 5.19 稳定版发布后打开,届时我们就能知道 Rust PR 是否已经提交并登录到下一个内核版本中了。

    1K10

    一种质量分层的模型以及总结思考

    因此,我们把这一阶的质量称为“功能质量”,质量保障的内容主要是:软件的需求一致性、稳定性、性能、兼容性等内容。 2、工程质量 2012年手机网民规模首次超过台式,移动互联网进入了快速发展期。...因此,我们把这一阶的质量称为工程质量,其主要保障的内容是:通过持续集成的方式,开始重视研发过程中的质量,手段包括但不限于:代码管控、测试环境管控、持续构建、构建中的自动测试(一般是UT)等。...这个看起来没什么太多作用:),它只是帮助我们能够在整体框架下去理解他人所做、所讲内容,而不是盲人摸象一样。...团队下一的目标是满足版本快速迭代下的高质量保障需求。 那么我们可以着手进行工程质量保障的建设。 ii.创业项目: 假如你所负责的项目是一个创业项目(如互联网保险)。...团队下一的目标是保障产品的上线发布以获得更多的用户。 那么我们可以着手进行功能质量的建设。

    1.1K50
    领券