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

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

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

3.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

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

就拿学习 Linux 操作系统来说,作为一个长期的学习计划,不太可能一上来就阅读最新的 Linux 5.13 版本的代码。...代码:用来存放代码的基地址放在寄存器 CS 中,指令指针寄存器 IP 用来表示下一条指令在中的偏移地址; 数据:用来存放程序处理的数据的基地址存放在寄存器 DS 中。...对数据中的某个数据进行操作时,直接在汇编代码中通过立即数或寄存器来指定偏移地址; 栈:本质上也是用来存放数据,只不过它的操作方式比较特殊而已:通过 PUSH 和 POP 指令来进行操作。...这张图的意思是:在 Linux 2.6 中,用户代码的开始地址是 0,最大范围是 4 GB;用户数据的开始地址是 0,最大范围也是 4 GB;内核的数据代码也是如此。 ?...在这个最简单的汇编程序中,会使用到 3 个代码数据和栈。 前面已经说到:所谓的,就是一个地址空间。既然是一个地址空间,必然包含 2 个元素:从什么地方开始,长度是多少。

2.1K40

代码

本文主要:如何制作Visual Studio 代码代码作用,和如何使用。 我们有时候会打出很多重复的代码,只是结构一样。...在之前,我就知道了有代码,但是实在复杂,好在最近时间多,仔细看了一下。 代码片段是小块可重用的代码,可使用上下文菜单命令或热键组合将其插入代码文件中。...代码使用很简单,在类中,如果我们需要输入try-catch,我们可以按 try tab tab ?...导入代码方法 ? ? ? 我们可以把之前写的代码导入到代码,这里使用的是 ps tab ?...kind 代码必须插入位置,方法,类中,请看https://msdn.microsoft.com/zh-cn/library/ms171418.aspx 下面是一些常用的代码,直接复制就可以使用 ps

53420

代码

本文主要:如何制作Visual Studio 代码代码作用,和如何使用。 我们有时候会打出很多重复的代码,只是结构一样。...在之前,我就知道了有代码,但是实在复杂,好在最近时间多,仔细看了一下。 代码片段是小块可重用的代码,可使用上下文菜单命令或热键组合将其插入代码文件中。...代码使用很简单,在类中,如果我们需要输入try-catch,我们可以按 try tab tab ?...导入代码方法 ? ? ? 我们可以把之前写的代码导入到代码,这里使用的是 ps tab ?...kind 代码必须插入位置,方法,类中,请看https://msdn.microsoft.com/zh-cn/library/ms171418.aspx 下面是一些常用的代码,直接复制就可以使用 ps

85710

轻松带你解决c语言堆、栈、数据代码、bss的疑惑

后面的数据代码、bss,可能你平时没有怎么细心总结,现在你可能还真讲不出他们的区别来,不信的话,读者在看到这里可以先暂定一下,在自己以往写了那么多的代码,仔细回忆看看他们有啥区别,如果不知道也没关系...\n", p2); return 0;   } 输出结果: 三、代码数据、bss: 编译器在编译程序的时候,将程序中的所有的元素分成了一些组成部分,各部分构成一个,所以说是可执行程序的组成部分...1、什么是代码?        代码就是程序中的可执行部分,直观理解代码就是函数堆叠组成的(就是函数体里面的程序那部分)。 2、什么是数据?      ...;   } 演示结果: 说明:        C语言中使用char *p = "linux";定义字符串时,字符串"linux"实际被分配在代码,也就是说这个"linux"字符串实际上是一个常量字符串而不是变量字符串... c = 0;//这里是bss int array[1000]; char str[] = "linux";        // 第二种方法:定义成全局变量,放在数据  int main(void

1.1K20

8086汇编语言之数据代码以及栈的理解

数据DS+偏移地址BX 数据可以通俗理解为数据容器指针 比如: MOV AX 0220H MOV DS AX MOV BX 0 MOV AX [BX] ;我们发现 DS数据一直都是在给不同地址的容器赋值...代码CS+偏移地址IP 代码可以通俗理解为汇编代码指针 比如: 代码从 MOV AX 0220H 开始,那么代码指向这行代码地址, 如果想要跳过这行代码的执行,那么进行代码偏移 在通过debug...模式配合-u指令查看汇编代码时,可以根据CS进行范围查看: 比如: #以下模拟控制台输出 -r AX=0000 BX=0000........什么是 首先内存并没有分段,的划分来自CPU,来自我们自己对内存的操作。...*16+0x00FA 0xFFFFA=0xFF000*16+0x0FFA 0xFFFFA=0xF0000*16+0xFFFA 的赋值 代码CS 数据DS 栈SS 不能直接赋值, 必须通过通用寄存器中转赋值

2.1K30

Linux中的

这不仅简化了Linux 内核的设计,而且为把Linux 移植到其他平台创造了 条件,因为很多RISC 处理器并不支持机制。但是,对机制相关知识的了解是进入Linux 内核的必经之路。...0x10 /* 内核代码, index=2,TI=0,RPL=0 */ #define __KERNEL_DS 0x18 /* 内核数据, index=3,TI=0...0x2B /* 用户数据, index=5,TI=0,RPL=3 */ 从定义看出,没有定义堆栈,实际上,Linux 内核不区分数据和堆栈,这也体现 了Linux 内核尽量减少的使用。...内核代码数据具有最高特权,因此其RPL 为0,而用户代码数据具有最低特权,因此其RPL 为3。可以看出,Linux 内核再次简 化了特权级的使用,使用了两个特权级而不是4 个。...分析新处理器上的内核代码时,可以分析处理器新功能带来的更新。

4.5K20

浅谈text、data和bss

比如,在C语言程序编译完成之后,已初始化的全局变量保存在.data 中,未初始化的全局变量保存在.bss 中。 text: 用于存放程序代码的区域, 编译时确定, 只读。...中的代码不会被意外的改写(比如在程序出错时)。...当然,如果没有MMU就无法获得这种代码保护功能。 data :用于存放在编译阶段(而非运行时)就能确定的数据,可读可写。也是通常所说的静态存储区,赋了初值的全局变量、常量和静态变量都存放在这个域。...而data则需要占用可执行文件空间,其内容由程序初始化,因此造成了上述情况。 注意: bss(未手动初始化的数据)并不给该段的数据分配空间,只是记录数据所需空间的大小。...data(已手动初始化的数据)为数据分配空间,数据保存在目标文件中。 data包含经过初始化的全局变量以及它们的值。

1.9K10

C语言变量那些事(堆栈、数据代码、作用域、生命周期)

数据代码、bss又是什么呢?...(注意:后续全局变量是存放在数据中,而数据是另一种存储方式) 2.2 栈存放大多数局部变量 局部变量包含:自定义函数内,main函数内定义的变量。...其可以将局部变量存储在栈上改变为存储在数据或bss (弱类型语言中的编译器其实也是帮你分配好了相关数据的存储类型,只不过C语言需要自己设定) 2.3 数据存放全局变量和非0的静态局部变量...(同时作为局部变量的b来说,static int b = 4;,由于b是非0的静态局部变量其也存放在数据上) 2.4 代码和bss 代码存放函数(对于非函数部分,诸如#include,宏定义,全局变量等在.c文件编译过程中进行的处理与替换) bss存放变量剩下的:显示或未显示初始化为0的数据 3.

40020

PyTorch常用代码合集

本文是PyTorch常用代码合集,涵盖基本配置、张量处理、模型定义与操作、数据处理、模型训练与测试等5个方面,还给出了多个值得注意的Tips,内容非常全面。 PyTorch最好的资料是官方文档。...本文是PyTorch常用代码,在参考资料[1](张皓:PyTorch Cookbook)的基础上做了一些修补,方便使用时查阅。...GPU 卡上时,PyTorch 的 BN 层默认操作是各卡上数据独立地计算均值和标准差,同步 BN 使用所有卡上的数据一起计算 BN 层的均值和标准差,缓解了当批量大小(batch size)比较小时对均值和标准差估计不准的情况...不需要计算梯度的代码块用 with torch.no_grad() 包含起来。...with torchsnooper.snoop(): 原本的代码 参考资料 张皓:PyTorch Cookbook(常用代码整理合集),https://zhuanlan.zhihu.com/p/

1K20

精妙JS代码搜集

待到时技(时间+技术)成熟,再去感觉他们的源代码,看一看它们是怎么办到的,览一览大牛们的“奇技淫巧”。...CSS布局调试代码片段 在浏览器控制台运行此段代码(当然也只能在控制台运用),会给页面里所有的 DOM 元素添加一个 1px 的描边(outline),方便我们在调试 CSS 过程中分析、排查问题。...当然这样的工具使用Chrome一些插件也易办到,但直接撸起如此代码,能够领悟到很多知识。...: 这段代码是 Github 上的 140 bytes 活动中的代码,简单分析下这段 JS 代码,作者使用了不少技巧: 首先是需要选择页面上的所有元素,这里使用了只能在console调试工具中使用的$$...参考文章从一行CSS调试代码中学到的JavaScript知识

1.3K50

撸一 SQL ? 还是撸一代码

,粘贴到你的代码中,使用数据访问对象去数据库执行该SQL获取数据。...下面看相同逻辑的面向对象代码逻辑。...b.ROLEID = 'c9845b33973511e6acede16e8241c0fe' and c.ORGAID = '75284c22973211e6acede16e8241c0fe' 同样撸相同逻辑的面向对象代码逻辑...而且现在主流的数据库还是面向关系的,而编程语言已经从面向过程发展为面向对象。 也就是说两者完全不搭调,也就是现在 ORM 框架不断壮大的原因,编程中需要将数据表作为对象去对待和处理。...代码中出现大段 SQL 与面向对象的设计思路完全是背道而驰。 如果查询 SQL 出现问题,将后台打印的 SQL 粘贴到 SQL 执行工具中去执行,分析原因,两个工具切来切去,你不觉得费劲么?

6110

思考,撸一 SQL ? 还是写一代码

,粘贴到你的代码中,使用数据访问对象去数据库执行该SQL获取数据。...下面看相同逻辑的面向对象代码逻辑。...b.ROLEID = 'c9845b33973511e6acede16e8241c0fe' and c.ORGAID = '75284c22973211e6acede16e8241c0fe' 同样撸相同逻辑的面向对象代码逻辑...而且现在主流的数据库还是面向关系的,而编程语言已经从面向过程发展为面向对象。 也就是说两者完全不搭调,也就是现在 ORM 框架不断壮大的原因,编程中需要将数据表作为对象去对待和处理。...代码中出现大段 SQL 与面向对象的设计思路完全是背道而驰。 如果查询 SQL 出现问题,将后台打印的 SQL 粘贴到 SQL 执行工具中去执行,分析原因,两个工具切来切去,你不觉得费劲么?

46750
领券