通过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. solr创建业务域以及指定中文分析器IK

    第一步:把中文分析器添加到工程中. 1.把IKAnalyzer2012FF_u1.jar添加到solr工程的lib目录下 2.把扩展词典.配置文件放到solr工程的WEB-INF/classes目录下 ...

  2. DLNg第三周:序列模型和注意力机制

    1.基础模型 将法语翻译为英语,分为编码和解码阶段,将一个序列变为另一个序列.即序列对序列模型. 从图中识别出物体的状态,将图片转换为文字. 先使用CNN处理图片,再使用RNN将其转换为语言描述. 2 ...

  3. bootstrap modal与select2使用冲突解决

    今天发现项目使用bootstrap modal 与 jquery select2 结合时发现select2不起作用,点击select框不显示选项,查阅资料后发现是因为modal层遮挡了select2的 ...

  4. JQuery 获取页面某一元素在屏幕上的位置

    获取页面某一元素的绝对X,Y坐标 var X = $('#ElementID').offset().top;//元素在当前视窗距离顶部的位置 var Y = $('#ElementID').offse ...

  5. usermod命令详解

    转载自:http://blog.51cto.com/urchin/987186 usermod - 修改用户帐户信息 modify a user account usermod [options] u ...

  6. cocos2d-x JS 四人麻将中的服务器位置与客户端位置转换相关

    前言:在写各类游戏编程中,都会遇到一个问题,就是位置问题,服务端的位置是与客户端的位置是不同的,这中间需要进行一个转化,客户端一套代码运行,不管是任何人登陆,该位置始终都是在屏幕正下方,所以这样就要进 ...

  7. ACM-彩票

    题目描述 OMeGa 兄弟最近赢了巨奖!但当他们在分彩票奖金的时候却遇到了一些问题.他们两兄弟对一切偶数都痴迷不已,以至于在分奖金的时候,他们两个都希望自己分到的钱是偶数(即便两人分的钱不一样也没关系 ...

  8. 014-Session服务器状态保持

    开始并为Session赋值:Session[“uName”]=“CNYaoMing”;取值:string strName = Session[“uName”].ToString();销毁(取消/退出) ...

  9. python中impyla包报'TSocket' object has no attribute 'isOpen'错误

    经搜索得知,是thrift-sasl的版本太高了(0.3.0),故将thrift-sasl的版本降级到0.2.1 pip install thrift-sasl==0.2.1 经测试impyla 可以 ...

  10. Linux 压缩解压缩命令详解

    tar -c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个.下面的 ...