GCC 生成代码或节具有读写和执行属性
GCC Make Code or Section have Read Write and Execute properties
我需要能够写入并执行函数,例如此代码(或类似代码)将运行而不会崩溃:
#include "stdio.h"
int function(int i) {
i = i * 56;
printf("%in",i);
return i;
}
int main()
{
printf("beforen");
function(5);
*(int*)function = 0;
printf("after");
return 0;
}
预期输出为
before
280
after
行*(int*)function = 0;
不会因为写入程序而崩溃的地方。
限制是我不能使用mprotect
或VirtualProtect
,所以我最好的猜测与GCC的__attribute__
修饰符有关。我已经设法使用 section
属性将其从 .text
更改为 .data
,但这只允许写入或执行,两者都不能同时具有这两个属性。
在函数之前使用 __attribute__((section(".tdata")))
似乎已经解决了问题。
相关文章:
- 用C++快速读写文件
- 如何将图像传输到c++(dll)中的缓冲区,然后在c#的缓冲区中读/写
- 如何在信号处理程序和普通函数中对全局变量进行互斥读写操作
- 在一个读写器队列中,我可以用volatile替换原子吗
- C++套接字对不读/写父/子
- 如何调试读写器锁的死锁?
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- Linux 挂载使用重新挂载以允许读写
- C++中读/写二进制文件
- 如何读/写或遍历 std::array 中的特定元素范围?
- 内存排序或读取-修改-写入操作,仅(读/写)内存顺序
- USB-HID 读/写(重叠)等待单个对象不返回C++
- 为什么使用_access时只读测试对读写文件有效
- Boost::Asio串行读/写打开:参数不正确
- 读/写 OpenMP 中的共享向量会减慢程序速度
- 谷歌测试读写同一文件失败
- Android USB 附件模式无法使用 libusb 与主机 PC 一起读/写
- 具有读写功能的 UNIX 管道系统可执行"ls -la"命令
- GCC 生成代码或节具有读写和执行属性
- 为什么要使用fopen打开流,并使用读/写(而不是fread/fwrite)执行I/O