通过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. one order 处理流程

  2. Goland的使用

    一.安装Goland 一.Goland简介 Goland是由JetBrains公司旨在为go开发者提供的一个符合人体工程学的新的商业IDE.这个IDE整合了IntelliJ平台的有关go语言的编码辅助 ...

  3. 查看Nginx、PHP、Apache和MySQL的编译参数

    1.查看Nginx编译参数 [root@portal finance]# your_nginx_dir/sbin/nginx -V nginx version: nginx/ built by (Re ...

  4. vbox 相关

    1.虚拟机vbox 安装mac os 10.12 图文教程: https://www.cnblogs.com/liming2017/p/7566953.html

  5. podofo 一点小分享

    PDF 的开源库,大多是Java,或C#的,但C++也有一个很不错的PDF开源库:PoDoFo 我司的PDF签章产品中,我就是用这个PoDoFo库来做的底层 但是国外开源库对中文支持都是或多或少有点问 ...

  6. fiddler抓取https-----重要

    原文地址https://www.cnblogs.com/joshua317/p/8670923.html 很多使用fiddler抓包,对于http来说不需太多纠结,随便设置下就能用,但是抓取https ...

  7. vue+element-ui中的表单验证(电话等等)

    1. 2. 3. ============================================================上代码============================ ...

  8. cocos2d-x JS 获取当前系统时间(解决屏幕双击点击事件)

    记录一下,好开心,感觉今天自己又学到东西了,对于屏幕双击事件本来还毫无头绪的,今天得以解决总算没白费加班,其实原理很简单:就是在点击事件里做一个判断,这个判断就是需要获取当前系统的时间的毫秒差,第一次 ...

  9. VS基本学习之(变量与常量)

    一.变量与常量 1) 变量        由(定义+赋值+取值组成) 变量的命名规则: ① 变量名组成:字母  数字  下划线  @  汉字 ② 首字母只能用:字母  下划线  @  汉字(不能是数字 ...

  10. python文件基础IO,OS

    #!/usr/bin/python # -*- coding: UTF-8 -*- import os # 导入 Phone 包 #File 对象方法: file对象提供了操作文件的一系列方法. #O ...