问题标签 [mprotect]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - 如何在 ARM 应用程序启动时加速 set_tls 和 mprotect?
我在 NAND (UbiFS) 上使用 ARM (TI814x)。启动 QtGui 应用程序时,大约需要 1 秒,直到 set_tls(线程本地存储?)和 mprotect 完成(而加载所有共享库需要 1.3 秒)。
为什么需要这么长时间,有没有办法(例如配置)来加快速度?
例如,当编译没有 QtGui 模块的应用程序时,它会快得多……但这不是一个选择。
linux - 进程何时需要同时具有写入和执行权限的内存页
我试图了解如何隔离和保护程序。
当进程需要PROT_WRITE |PROT_EXEC
在内存页面上时,是否有任何有效的情况?这可以避免吗?
这似乎与 NX 位或 W^X 或 DEP 试图实现的目标相反。
Libre office 似乎正在使用它,并在硬化的 linux 上造成了很多麻烦。
c++ - mmap 是否分配页面或页面的一部分?
我很困惑,是mmap
分配一整页内存(不管指定的大小),还是只分配您请求的大小?真的,我很好奇后续调用会发生什么mmap
- 第二次调用会分配一个新页面(即使两个调用都使用页面大小以下的数量)还是会分配与前一个调用相邻的块?
同样的事情mprotect
- 是保护整个页面,还是只保护指定的部分?
c++ - 启用 mprotect 不会恢复正常状态?
我正在尝试创建一个程序来跟踪进程的内存。我所拥有的是在某个时刻尝试使用我的保护功能保护所有内存:
}
然后我注册了一个中断处理程序:
该进程似乎卡在某个 fwrite 上……但我可以在日志中看到该进程试图访问的内存早已被 segaulted 并返回到正常状态。我还可以看到该进程不会停止从那个块中读取的第一个内存,但是在读了很多页之后......有没有人有任何想法/线索?
谢谢。
c - mprotect 无法从 fread 内的 fifo 写入/读取中断中恢复?
我有一个简单的过程,其中包含 2 个从 fifo 写入和读取的进程。我想在阅读器读取的缓冲区上添加 mprotect ,然后在它有中断时“释放”它(添加 PROT_WRITE | READ)。
似乎如果我在常规文件上执行此操作(仅读取,而不是 fifo)它可以工作,但如果我在 fifo 上执行此操作,则读取器的 fread 返回错误。
我怀疑在fifo内接收中断是不好的..但它应该被授予权限..有人知道吗?
谢谢。
c++ - mprotect 和文件句柄
我有一个简单的程序,我试图保护一块内存,然后将一个文件读入该内存,当它出现段错误时释放它..首先我认为如果文件是fifo只有一个问题..但现在似乎即使是普通文件也会失败,
这是代码:
注意 //*buffer = 0;,如果我取消标记这一行,程序会出现段错误并正常工作..有人知道吗?errno 是错误的地址。
谢谢!
更新: 这里似乎问了一个类似的问题: Loading MachineCode From File Into Memory and Executing in C -- mprotect Failing where posix_memalign isSuggested,我试过这个但没有用。
c - 将 mprotect 系统调用注入到跟踪的进程中失败并显示 EFAULT
我正在将mprotect
调用注入到跟踪的进程中:
但是调用失败,返回 -14 ( EFAULT
)。我查看了mprotect
源代码(内核 3.13),不明白为什么我的系统调用会返回这个。
如果我跟踪我注入的调用并打印出寄存器,我会看到以下内容:
为了验证系统调用格式,我添加了mprotect
对孩子的调用并转储了它的参数和寄存器:
孩子的电话成功了。因此,鉴于我正在使用相同的参数进行相同的系统调用(10),为什么注入的调用会失败,EFAULT
而来自孩子的调用成功?
调用之间的唯一区别是一些垃圾regs.r8
,但是基于X86_64 上的系统调用表,regs.r9
我不相信这些寄存器的内容会影响系统调用。regs.r10
c - C - 是否可以保护小于页面的内容
我真的在寻找任何解决方案——我的目标是将一个小于系统页面大小的区域设置为 PROT_READ、PROT_WRITE、PROT_EXEC 或 PROT_NONE。这可能吗?似乎 mprotect 只是保护页面大小的倍数......
如果不可能,这种设计选择的原因是什么?
c - 静态计算地址的对齐页面
我需要静态计算包含精灵文本段的第一页的地址,以便使用mprotect()
并使文本段可写。
Section Headers:
[Nr] Name Type Addr Off Size ES Flg Lk Inf Al
..
[14] .text PROGBITS 08048380 000380 0002e0 00 AX 0 0 128
有任何想法吗?