mprotect相关内容
我正在尝试从Linux上的纯Python代码调用内联机器码。为此,我将代码嵌入到字节文字中 code = b"x55x89xe5x5dxc3" ,然后通过ctypes调用mprotect()以允许执行包含代码的页面。最后,我尝试使用ctypes调用代码。以下是我的完整代码: #!/usr/bin/python3 from ctypes import * # Initialise
..
我正在使用 Monotouch 编写一个 iPhone 应用程序,最近该应用程序开始崩溃,说明 Mprotect 在 0x863a000(长度 8192)处失败,错误号为 12 随后是相当长的堆栈跟踪和 Springboard 通知“应用程序异常退出,信号 6". 我已阅读此问题,其中指出该应用程序已用尽 iPhone 上的所有可用内存.我们在应用程序中应用了一些通用的 Dispose
..
我想知道是否有办法对 Linux 中的每个页面进行写保护进程的地址空间(从进程本身内部,通过mprotect()).我所说的“每一页"是指每一页普通进程可能写入的进程地址空间在用户模式下运行的程序——所以,程序文本,常量,全局变量和堆——但我会对常量感到满意,全局变量和堆.我不想写保护堆栈——那个似乎是个坏主意. 一个问题是我不知道从哪里开始写保护记忆.查看 /proc/pid/maps,它
..
我正在构建一个程序,它使用 mprotect() 来限制访问一块内存.当请求内存时,会抛出一个 SIGSEGV,我使用 signal() 调用来监听它. 一旦检测到 SIGSEGV,我需要以某种方式访问指向所请求内存(引发故障)的指针以及所请求段的大小.这可能吗? void fifoSigHandler(){//只需要从请求的虚拟内存块中移除保护mprotect(fifoVm,(siz
..
我正在使用 Monotouch 编写一个 iPhone 应用程序,最近该应用程序开始崩溃,说明 Mprotect 在 0x863a000(长度 8192)处失败,错误号为 12 接着是相当长的堆栈跟踪和 Springboard 通知“应用程序异常退出,信号 6". 我读过这个问题,其中指出该应用程序耗尽了 iPhone 上的所有可用内存.我们已经在应用程序中应用了一些通用的处理模式,并且
..
这基本上就是我想要做的, #include 整数零(){返回0;}int main(int argc, const char *argv[]) {返回 mprotect((void *) &zero, 4096, PROT_READ | PROT_WRITE);} 所以我试图使代码可写,本质上.这在当前的 macOS (Catalina 10.15.2) 上不起作用,它只返回 -1 并将 er
..
我使用 MonoTouch 开发的 iPhone 应用程序出现问题. 我正在开发一个联系 WCF 服务的应用程序,当 WCF 服务回复时,我用返回的数据更新 UITableView,完成后它发送一个新的 WCF 异步调用,当它回复时它再次更新表等等. 问题在于,当它在可变的时间内完成此操作时,它会崩溃并显示 Mprotect failed 错误 12.这仅在应用程序直接在手机上运行而不是在
..
我想编写一个信号处理程序来捕获 SIGSEGV.我使用 保护一块内存以供读或写 char *buffer;字符 *p;字符一个;int pagesize = 4096;mprotect(缓冲区,页面大小,PROT_NONE) 这可以保护从缓冲区开始的 pagesize 字节内存免受任何读取或写入. 其次,我尝试读取内存: p = 缓冲区;a = *p 这将生成一个 SIGSEGV,
..
我正在 ARM Linux 上编写一个 JIT,它执行一个包含自修改代码的指令集.指令集没有任何缓存刷新指令(在这方面类似于 x86). 如果我向一个页面写出一些代码,然后在该页面上调用 mprotect,这是否足以使指令缓存无效?还是我还需要在这些页面上使用 cacheflush 系统调用? 解决方案 您希望 mmap/mprotect 系统调用会建立立即更新的映射,并且无需进一步
..
这本质上就是我想要做的, #include int zero() { return 0; } int main(int argc, const char *argv[]) { return mprotect((void *) &zero, 4096, PROT_READ | PROT_WRITE); } 因此,我实质上是在尝试使代码可写.这在
..
我一直在尝试先使用mprotect进行读取,然后再进行写入. 这是我的代码 #include #include #include #include #include int main(void) { int pagesize = sysconf(_SC_PAG
..
我正在构建一个程序,该程序使用mprotect()限制对内存块的访问.请求内存时,会抛出SIGSEGV,我使用signal()调用进行监听. 一旦检测到SIGSEGV,我就需要以某种方式访问指向所请求的内存(引发故障)的指针以及所请求的段的大小.这可能吗? void fifoSigHandler(){ // Needs to only remove protection
..
我正在尝试使用保护修改.text段中的值以使我具有写权限: int pageSize = sysconf(_SC_PAGE_SIZE); int *toModify = (int *)(foo+5); if (mprotect(toModify, pageSize, PROT_WRITE)
..
我想知道是否有一种方法可以对Linux中的每个页面进行写保护 进程的地址空间(从进程内部,通过 mprotect()).我所说的“每一页"实际上是指 普通地址可能会写入的进程的地址空间 程序在用户模式下运行-因此,程序文本,常量, 全局变量和堆-但是我对常量感到满意, 全局变量和堆.我不想对堆栈进行写保护-那 似乎是个坏主意. 一个问题是我不知道从哪里开始写保护 记忆.查看/proc/pid
..
我使用MonoTouch开发的iPhone应用程序有问题。 我正在开发一个联系WCF服务的应用程序,当WCF服务回复时,我用返回的数据更新UITableView,完成后,它会发送一个新的WCF异步调用,当它回复时,它会再次更新表,依此类推。 问题在于,当它在不同的时间内完成此操作时,它会因Mprotect失败错误12而崩溃。这只会在应用程序直接运行时发生手机而不是模拟器。 我试图
..
我正在使用Monotouch编写iPhone应用程序,最近该应用程序已开始崩溃说明 Mprotect在0x863a000失败(长度8192)与errno 12 后跟一个相当长的堆栈跟踪和Springboard通知“应用程序异常退出信号为6“。 我已经阅读了这个问题,其中指出该应用已经耗尽了iPhone上可用的所有内存。 我们已经在应用程序中应用了一些通用的D
..
我最近一直在研究迂回函数(只在Linux),迄今为止我取得了巨大的成功。我在开发自己的绕行课程,直到我找到这个我将代码现代化了一点,并将其转换为C ++(作为一类课程)。该代码就像任何其他的detour实现,它用JMP替换原来的函数地址到我自己指定的“hook”函数。它还为原始函数创建了一个“蹦床”。 一切都完美无缺,但我想做一个简单的调整。我在纯C ++程序,我没有使用全局函数,一切都封装
..
我最近一直在研究迂回函数(只在Linux),迄今为止我取得了巨大的成功。我在开发自己的绕行课程,直到我找到这个我将代码现代化了一点,并将其转换为C ++(作为一类课程)。该代码就像任何其他的detour实现,它用JMP替换原来的函数地址到我自己指定的“hook”函数。它还为原始函数创建了一个“蹦床”。 一切都完美无缺,但我想做一个简单的调整。我在纯C ++程序,我没有使用全局函数,一切都封装
..
你好我想,当程序运行试图在运行内存则mprotect使其可执行文件时,它打破原始机器code加载到内存中,并从一个C程序中运行它,现在。我也不能完全肯定,如果内存没有得到正确设置它会执行。我目前在Ubuntu Linux x86上运行这个(也许问题是Ubuntu的过度保护?) 我现在有如下: 的#include< memory.h> #包括LT&; SYS / mman.h>
..
在Linux(或Solaris)有比手更好的方式解析的/ proc /自/图反复找出你是否可以读,写或执行任何被存储在一个或多个地址在存储器 例如,在Windows中,有 VirtualQuery来。 在Linux中,我能则mprotect 来改变这些值,但我看不懂他们回来。 此外,有没有办法知道什么时候这些权限更改(例如,当有人使用 MMAP 在我背后的文件)不是做一些可怕的侵入,并使用
..