通过Windbg来追踪ASL code的运行:

目标机的配置:

第一步:

在BIOS Setup下面 disable secure boot(不然下面debug on 命令会失败);关闭防火墙。

第二步:替换acpi.sys
1. 获取与目标机OS 同版本的check build ACPI.sys文件,替换系统中的C:\Windows\System32\drivers\acpi.sys

2.acpi.sys属于系统文件,直接替换会出错,可以把下面的内容保存为:TrustedIntsaller.reg 并放到C盘根目录运行,找到ACPI.sys,右键点击TrustedInstaller,然后才可以删除,重命名,替换ACPI.sys.

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\*\shell\runas]
@="TrustedInstaller"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\*\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" && icacls \"%1\" /grant administrators:F"

[HKEY_CLASSES_ROOT\Directory\shell\runas]
@="TrustedInstaller"
"NoWorkingDirectory"=""

[HKEY_CLASSES_ROOT\Directory\shell\runas\command]
@="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"
"IsolatedCommand"="cmd.exe /c takeown /f \"%1\" /r /d y && icacls \"%1\" /grant administrators:F /t"

第三步:运行下面的命令:

bcdedit /debug on
bcdedit /set testsigning on
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter"
reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter" /v AMLI /t REG_DWORD /d 0xFFFFFFFF /f>nul
pause

第四步:选择debug方式:USB3.0 或 网口

网口方式:

bcdedit /debug on
bcdedit /dbgsettings net hostip: key:1.2.3.4
pause

USB3.0方式:

bcdedit /debug on
bcdedit /dbgsettings usb targetname:XX
pause

注:网口可以一对多debug,通过port的不一样;USB只能一对一连接;
注:也可以通过这样的的方式来配置debug方式:Windows+R -> MSConfig - boot - advanced options(但是要先把debug on打开)

第五步:重启电脑:,如果进不去OS,可通过下面两种方法解决:

1.可能系统时间不在acpi.sys的有效签名时间之内 -- 进入BIOS setup把系统时间修改为acpi.sys的有效签名时间之内;

2.进入OS的Advance option选项,选择disable driver 数字签名,再进OS。

主机的配置:

运行WinDbg Tool:

安装好SDK之后,tool位于:

C:\Program Files (x86)\Windows Kits\10\Debuggers\x64\windbg.exe

1. 选择 file - symbol file path,输入 SRV*D:\Symbols* http://msdl.microsoft.com/download/symbols。D:\Symbols是本地存放symbol的路径

2. 选择 file - kernel debug --- 选择 net 或者 USB3.0的debug方式。

如果成功,这时就能连上目标机器。重启目标机,可以看到有信息丢出来。

如果要debug ASL code

暂停目标机,依次输入:

.reload /f /v acpi.sys
!amli debugger
!amli set verboseon
!amli set traceon
!amli set nesttraceon
!amli set spewon

输完之后,敲g -> enter 进入amli debuge 模式了,进入amli debuge windebug会有这样的“AMLI(? for help)->”提示。

最后,通过 Edit->write windows text to file 可以去保存记录。

最新的OS不需要再去替换acpi.sys以及运行debug on的操作了

BIOS备忘录之通过Windbg来追踪ASL code的运行的更多相关文章

  1. BIOS备忘录之ASL code常用知识点

    _HID:device唯一 _STA:决定device在不在(在DM下面能不能看到) _CRS:描述分配给device的资源 _INI:在OSPM加载描述表的时候运行一次(比如,如果要根据不同情况给d ...

  2. BIOS备忘录之EC常用知识点

    BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...

  3. BIOS备忘录之IIC(touchpad)设备

    简述BIOS中对IIC device的支持,以touchpad为例. 信息收集 收集平台的硬件信息: 1. IIC controller number(PCH一般包含多个controller,我们使用 ...

  4. BIOS备忘录之SPI(fingerprint)设备

    Reset和INT信号使用的是GPIO功能,需要显式的使用(INT信号使用了GPIO的int number,RST信号使用了GPIO的absolute number): 问题举例 漏电导致功能异常:在 ...

  5. BIOS备忘录之x86硬件编程(寄存器与IO)

    SOC固件(BIOS)开发: 1.熟悉硬件原理图:要弄清楚pin脚的功能: 2.配置GPIO引脚,配置成Native功能还是GPIO功能(如果是配置成GPIO,需要在code里面显式的使用): 3.硬 ...

  6. 追踪MySQL中长时间运行的事务

    接上一篇,未提交的事务导致锁等待,锁住一段时间后又提交了(也可能是回滚),锁释放业务继续运行.那么我们如何知道产生锁的事务是在跑什么SQL? 今天讲的这个工具,就可以通过监听3306端口的数据,把每个 ...

  7. SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)

    EC资料有个很好的CSDN博客推荐去看看:zhao_longwei的专栏 EC固件代码架构:https://blog.csdn.net/zhao_longwei/article/details/510 ...

  8. Dynamic CRM 2013学习笔记(七)追踪、监控及性能优化

    本文将介绍CRM的三个内容追踪.监控及性能优化.追踪是CRM里一个很有用的功能,它能为我们的CRM调试或解决错误.警告提供有价值的信息:我们可以用window的性能监控工具来了解CRM的性能状况:最后 ...

  9. Windbg程序调试--转载

    WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查 ...

随机推荐

  1. C语言数据类型运算法则

    整形与整形运算得到的还是整形 printf("%d\n",1/3); //0 printf("%d\n",1+2); //3 整形与浮点型运算得到浮点型数据 p ...

  2. Python Socket实现文件上传(TCP协议)

    在TCP协议下通过socket模块实现文件上传 #!/usr/bin/env python # -*- coding: utf-8 -*- # desc: tcp_server_file_upload ...

  3. linux 常用简单命令

    1.ps获取dhcpd进程状态 ps -aux |grep dhcpd |grep -v grep  排除包含grep的那条进程 ps -aux |grep dhcpd |grep -v grep | ...

  4. (转载)深入了解MyBatis参数

    原文地址:http://blog.csdn.net/isea533/article/details/44002219 深入了解MyBatis参数 相信很多人可能都遇到过下面这些异常: "Pa ...

  5. iOS 新浪微博-2.0 搜索框/标题带箭头/下拉菜单

    不管是搜索框还是下拉菜单,我们都需要对背景的图片进行拉伸.定义一个Category分类对图片进行操作. UIImage+Effect.h #import <UIKit/UIKit.h> @ ...

  6. cocos2d-x JS 利用重复动作实现动画播放(实现倒计时)

    cocos2d-js: cc.delayTime() and cc.repeatForever() don't work together in cc.sequence() this.numm = 1 ...

  7. recover database noredo时报错ORA-19573

    环境: RHEL6.4 + Oracle 11.2.0.4 Primary RAC + Standby RAC 今天发现DG备库归档空间满,清理后发现备库出现GAP,需要从主库做基于SCN的增量备份进 ...

  8. sqli-labs(十五)(堆叠注入)

    第三十八关: 后面好几关都是堆叠注入.简单介绍下: Stacked injections:堆叠注入.从名词的含义就可以看到应该是一堆sql语句(多条)一起执行.而在真实的运用中也是这样的,我们知道在m ...

  9. 实时计算DStream下求平均值(reduceByKey or combineByKey)

    对NC市的卡口数据进行分析,大概所有卡口每15秒接入的有效数据在3000条左右,现在产品经理要求对这些数据进行拥堵分析,通过两个卡口之间的车辆行驶时长来判断道路的拥堵情况.具体算法不展开.其中我需要做 ...

  10. linux中使用另一用户打开拥有图形界面的程序

    在archlinux中使用oracle用户执行oui无法显示图形界面的问题.结果没解决,后来发现执行 xhost +si:localuser:oracle, 然后再使用oracle用户执行oui即可. ...