Linux精灵.TEXT方向
Linux elf .text direction
我想知道我的C 应用程序的.TEXT启动和大小。我一直在阅读有关此的相关主题(链接),但我无法做我想做的事。
分析样本程序的阅读输出,我得到了:
Section Headers:
[Nr] Name Type Address Offset
Size EntSize Flags Link Info Align
[14] .text PROGBITS 0000000000400830 00000830
0000000000000252 0000000000000000 AX 0 0 16
所以我了解我程序的.TEXT部分从0x400830地址开始。
,但我无法从程序中访问此地址:
printf("My process ID : %dn", getpid());
printf("Executable Start address: 0x%lxn", (unsigned long)&__executable_start);
printf("Text Start Address: 0x%lxn", (unsigned long)&__etext);
,但输出为:
My process ID : 4029
Executable Start address: 0x400000
Text Start Address: 0x400a8d
您可以看到起始地址并不相同。我如何访问.TEXT部分的开始地址。我需要知道大小或结束地址...这可能吗?
我想知道我的C 应用程序的.TEXT启动和大小。
如果您告诉我们为什么您想知道,您可能会得到更好的答案。
请注意,可执行文件不需要一个.text
节完全可以剥离:可以剥离截面表,并且可执行文件仍然可以运行正常。对于这样的二进制,您的问题是无法回答的。
要了解精灵二进制的.text
的确切偏移和大小,只需读取部分表(就像readelf
一样)。这并不难。
不这样做,您可以通过使用启发式/近似。
您已经找到了__executable_start
和__etext
。可以使用&__start
- 通常获得更严格的绑定,这是.text
节中的第一个符号。
相关文章:
- 使用Unreal C++获取VR耳机的世界位置/方向
- 在C++中向零方向近似的最佳方法
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- OpenVR:向视图方向移动
- 来自逆 vp 矩阵和相机位置的光线方向不正确
- 带有枚举方向/类型的气泡排序结构数组
- OpenGL通常"Up"方向?
- 使用 sf::Text 数组时崩溃
- 定义/预设NURBS起点和终点的方向
- 如何按另一个向量的方向调整一个向量?
- 粒子系统:所有粒子都朝同一方向运动
- C++指标评价方向
- SFML - 弹丸以不同的方向减速
- 为什么 sf::Text 显示点而不是数字?
- 从DLL导出函数,LoadLibrary()需要用TEXT转换的字符串才能编译而不会出错
- C++位移位在相反方向上具有相同的常量,结果不同,代码更改很小
- 为 g++ build 设置超时,为 Sublime Text 运行?
- 如何在相对于观看方向的地形中移动
- 编辑期间的 QTableWidgetItem text() 属性
- Linux精灵.TEXT方向