首页 > TAG信息列表 > mprotect
Linux程序内存越界定位分析杂谈2
转一些知乎大佬的方法 原网页 1. 解决各种内存相关问题(例如内存泄漏,内存被踩坏等),。简单来说就一句话修改tcmalloc,加入audit信息。具体修改包括如下2个方面:1.在每次分配的时候,多申请12个字节,用于记录分配者的线程ID,栈ID,本次操作是分配还是释放的标志位,分配时间等信息。2.在tcmalget_started_3dsctf_2016-Pwn
get_started_3dsctf_2016-Pwn 这个题确实有点坑,在本地能打,在远程就不能打了,于是我就换了另一种方法来做. 确这个题是没有动态链接库,且PIE是关的,所以程序的大部分地址已经定死了,帮了大忙了. 第一个本地能打通的思路(远程打不了) 修改eip跳转到get_flag函即可,可是直接进行跳将Mprotect系统调用注入到跟踪的进程中失败,并显示EFAULT
我正在将mprotect调用注入到跟踪的进程中: static int inject_mprotect(pid_t child, void *addr, size_t len, int prot) { // Machine code: // int $0x80 (system call) // int3 (trap) char code[] = {0xcd,0x80,0xcc,0}; char orig_comprotect整个程序,运行危险的代码
我有一个小程序,可以编写具有潜在危险的可执行代码(使用PROT_EXEC),调用prctl(PR_SET_SECCOMP,1),然后执行这个mmap代码.这一切都很好,并允许我通过将mmap’d区域同步到磁盘来“保存”评估状态,并在以后重新加载它(最有可能在另一台机器上进行负载平衡).但是,此技术并不总是有效 –我可以写保护Linux进程的地址空间中的每个页面吗?
我想知道是否有办法在Linux中写保护每个页面 进程的地址空间(来自进程本身的内部,通过的mprotect()).通过“每一页”,我的意思是每一页进程的地址空间可能由普通用户写入程序在用户模式下运行 – 所以,程序文本,常量,全局变量和堆 – 但我会很满意常量,全局和堆.我不想写保护堆栈