我想知道是否有一个C函数可以用来获取另一个可执行文件的数据段大小?例如,像Linux中的size实用程序一样工作的东西?size的输出包括我想要的信息,即数据段大小;例如,它可能如下所示:
text data bss dec hex filename
294880 81920 11592 388392 5ed28 ranlib
I am trying to test linux kernel stack size in 64 bit.
我发现这种奇怪的行为。我编写了以下代码来崩溃内核,但奇怪的是,只有当printk没有注释时,它才会崩溃,否则运行良好,没有错误/警告!
#include <linux/init.h>
#include <linux/module.h>
#include <linux/kernel.h>
static int __init crash_stack_init(void)
{
long arr[1
我遇到了一个似乎无法解决的mmap问题。设置是这样的:我用malloc将一个巨大的多维数组分配到内存中,用我的值填充它,然后我想把它保存在一个文件中。该数组包含3200000000个字节。这台机器是64位的,并且有足够的内存来执行此操作。
Linux 2.6.32-27-server #49-Ubuntu SMP Thu Dec 2 02:05:21 UTC 2010 x86_64 GNU/Linux
使用mmap创建文件工作得很好,我得到了ptrFile指针。当我将数组放入ptrFile指针中时,程序崩溃并出现段错误。
经过几次调试后,我发现两个缓冲区重叠。数据数组从地址0x7FEC47FF
我正在尝试理解内存管理是如何在低级别上进行的,并有几个问题。
1)基普·R·欧文写的一本关于汇编语言的书说,在实模式下,前三个段寄存器在程序启动时加载了代码、数据和堆栈段的基地址。这对我来说有点模棱两可。这些值是手动指定的,还是由汇编程序生成指令将这些值写入寄存器?如果它是自动发生的,它如何找出这些数据段的大小?
2)我知道Linux使用扁平线性模型,即以非常有限的方式使用分割。此外,根据Daniel P.Bovet和Marco Cesati的"Understanding the Linux Kernel“,GDT中有四个主要部分:用户数据、用户代码、内核数据和内核代码。所有四个网段的
当我在python中使用ahocorasick模块添加到树时,我得到了段错误,我尝试了0.9和1.0pre相同的结果,任何帮助都将不胜感激。谢谢
[mine@ao ~]$ python
Python 2.6.6 (r266:84292, Jan 22 2014, 09:42:36)
[GCC 4.4.7 20120313 (Red Hat 4.4.7-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>
我有一个奇怪的ELF二进制。我可以在32位linux中运行这个二进制文件。
但是如果我用IDA反汇编程序打开这个二进制文件,IDA会说“无效入口点”。
其结果如下:
root@meltdown-VirtualBox:/home/meltdown# readelf -S -l SimpleVM
There are no sections in this file.
Elf file type is EXEC (Executable file)
Entry point 0xc023dc
There are 2 program headers, starting at offset 52
P