zoukankan      html  css  js  c++  java
  • [转]调试winlogon

    调试winlogon

    尽管winlogon也是用户模式的程序,但是它处理用户的登录、注销、以及CTRL+ALT+DELETE的操作,
    如果用一般的方法调试,一旦它切换桌面,就无法输入,无法控制调试器了。
    这里我用“虚拟机+WinDbg+系统自带ntsd”的方法调试。
    启动虚拟系统先按设置允许winlogon调试,如下:
    1、建立键值
    “HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution

    Options\WinLogon.EXE\Debugger”
    使它的类型REG_SZ,值为“ntsd -d -x -g”
    2、再建立键值“HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Image File Execution

    Options\WinLogon.EXE\GlobalFlag”
    使它的类型REG_DWORD ,值为0x000400F0

    在调试的过程中有四种模式:用户模式调试、核心模式调试、目标应用执行模式、睡眠模式。

    从用户模式调试切换到目标应用执行模式,在提示“Input>”时用“g”命令。如果只是临时性的切换,
    就用单步进入、单步步过命令。。。
    从用户模式调试切换到睡眠模式,用“.sleep”命令。
    从用户模式调试切换到核心模式调试,用“.breakin”命令。
    在XP之后的系统,从目标应用执行模式调试切换到用户模式调试,用“!bpid <pid>”命令。
    .......

    为了直观见下图:

    这些切换模式中,我们需要的只是从提示“kd>”到提示“Input>”的转换命令,也就是“!bpid <pid>”。
    比如我的系统winlogon的PID是400,则“!bpid 400”命令就会转换到winlogon的用户模式调试。
    继续运行则“g”命令。

  • 相关阅读:
    RocketMQ实战:生产环境中,autoCreateTopicEnable为什么不能设置为true
    x 的平方根--二分查找
    责任链模式--设计模式
    迭代器模式--设计模式
    组合模式--设计模式
    搜索旋转排序数组II
    搜索旋转排序数组--二分查找
    搜索插入位置--二分查找
    越狱详解与调试--逆向开发
    有序链表转换二叉搜索树--链表
  • 原文地址:https://www.cnblogs.com/adylee/p/2959244.html
Copyright © 2011-2022 走看看