zoukankan      html  css  js  c++  java
  • 6_再次开中断STI的正确姿势

    1 直接开启sti --蓝屏

    1570247170919

    2 配置环境 正确开启sti 中断

    kpcr -- 很多重要线程切换的数据、结构

    进入内核的时候 fs 不再是teb/tib; 是kpcr

    同时观察 kifastcallentry,发现 的确设置了 fs 为内核的 kpcr:

    1570247977571

    那我们手动修改成 kpcr ;

    1570247880781

    注意: 如果 直接使用fs 不行;那么就查相关硬编码 来代替。

    1570248214479

    效果 系统不卡,且任何方式杀不掉,关机也杀不掉:

    当前系统不卡死了,能线程调度了;但是 测试的程序 不能被杀死,也结束不了,因为结束线程是 插入 apc队列请求,是异步过程;因为结束线程并不是马上结束的,肯定需要执行到特定的环境,不然执行到一个语句就切,那么环境就是错误的,可能导致蓝屏、%100导致错误。

    线程结束实际过程:

    从 0 环返回3环 之前;系统会检查其 apc 队列,查看是否有结束的请求。有 就杀死(如果是进程的最后的一个线程,那就把对应进程给清理掉)

    但是这里:

    在 0环一直死循环;导致不会切换到3环的瞬间之前检查;所以杀不掉。

    怎么杀掉:

    ---- 只有修改 破环那个死循环。

    1570249015308

    • !process 0 0

    • .process 对应的_eprocess

    • u 0xaddr

    • ew 401005 9090 修改。。。 nop掉。就可以杀死并关机了

    1570249133343


  • 相关阅读:
    Servlet的生命周期及工作原理
    抓包---firebug
    firebug抓包
    token认证来龙去脉
    性能测试报告注意事项
    性能测试报告
    Error -26601解决办法
    lr新手误区
    css定位
    xpath定位
  • 原文地址:https://www.cnblogs.com/leibso-cy/p/11718883.html
Copyright © 2011-2022 走看看