在SIGSEGV之后模拟成功的方法是什么?

时间:2015-03-24 08:48:09

标签: c signals memory-mapping

我正在读取/写入已知内存块的SIGSEGV。该块被mmaped并在我的控制之下,因此可以对其进行操作。我想模拟读/写成功,实际处理数据并继续应用程序。我有两种可能的解决方案,但它们看起来都太复杂了。我希望有更好的方法来实现这个目标:

  1. 借用调试器的技巧并:

    • mmap该区域并保护
    • 等待SIGSEGV
    • 从指令类型
    • 获取读/写大小
    • 用于读取,将所需数据放入内存并删除保护
    • 单步应用
    • 用于写入,读取所写内容和处理
    • 在单步TRAP中再次保护页面并继续使用该应用
  2. 对指令本身进行一些疯狂处理:

    • mmap该区域并保护
    • 等待SIGSEGV
    • 获取eip下的指令并模拟其效果
    • 在指示后返回
  3. 如果重要,应用程序不会在root帐户下运行。

    我假设x86_64并且目前并不关心其他平台。

0 个答案:

没有答案