C 什么';这是模拟SIGSEGV后成功的方法
我在对已知内存块进行读/写操作时捕获了一个C 什么';这是模拟SIGSEGV后成功的方法,c,signals,memory-mapping,C,Signals,Memory Mapping,我在对已知内存块进行读/写操作时捕获了一个SIGSEGV。这个方块是在我的控制下移动的,所以它可以被操纵。我想模拟读/写操作,实际处理数据并继续应用程序。我有两种可能的解决方案,但它们似乎都太复杂了。我希望有更好的方法来实现这一点: 借用调试器的技巧,并: mmap该区域并进行保护 等待SIGSEGV 从指令类型获取读/写大小 对于读取,请将所需的数据放入内存并删除保护 单步启动应用程序 对于写操作,请阅读所写内容并进行处理 在单步TRAP中,再次保护页面并继续应用程序 对指令本身进行疯狂的
SIGSEGV
。这个方块是在我的控制下移动的,所以它可以被操纵。我想模拟读/写操作,实际处理数据并继续应用程序。我有两种可能的解决方案,但它们似乎都太复杂了。我希望有更好的方法来实现这一点:
- mmap该区域并进行保护
- 等待
SIGSEGV
- 从指令类型获取读/写大小
- 对于读取,请将所需的数据放入内存并删除保护
- 单步启动应用程序
- 对于写操作,请阅读所写内容并进行处理
- 在单步
中,再次保护页面并继续应用程序TRAP
- mmap该区域并进行保护
- 等待
SIGSEGV
- 在
下获取指令并模拟其效果eip
- 指示后返回