BIOS备忘录之通过Windbg来追踪ASL code的运行
通过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的运行的更多相关文章
- BIOS备忘录之ASL code常用知识点
_HID:device唯一 _STA:决定device在不在(在DM下面能不能看到) _CRS:描述分配给device的资源 _INI:在OSPM加载描述表的时候运行一次(比如,如果要根据不同情况给d ...
- BIOS备忘录之EC常用知识点
BIOS工程师眼中常用的EC知识点汇总: EC的硬件架构 EC硬件结构上主要分为两部分:Host Domain和EC Domain Host Domain就是通过LPC与CPU通信的部分(LPC部分需 ...
- BIOS备忘录之IIC(touchpad)设备
简述BIOS中对IIC device的支持,以touchpad为例. 信息收集 收集平台的硬件信息: 1. IIC controller number(PCH一般包含多个controller,我们使用 ...
- BIOS备忘录之SPI(fingerprint)设备
Reset和INT信号使用的是GPIO功能,需要显式的使用(INT信号使用了GPIO的int number,RST信号使用了GPIO的absolute number): 问题举例 漏电导致功能异常:在 ...
- BIOS备忘录之x86硬件编程(寄存器与IO)
SOC固件(BIOS)开发: 1.熟悉硬件原理图:要弄清楚pin脚的功能: 2.配置GPIO引脚,配置成Native功能还是GPIO功能(如果是配置成GPIO,需要在code里面显式的使用): 3.硬 ...
- 追踪MySQL中长时间运行的事务
接上一篇,未提交的事务导致锁等待,锁住一段时间后又提交了(也可能是回滚),锁释放业务继续运行.那么我们如何知道产生锁的事务是在跑什么SQL? 今天讲的这个工具,就可以通过监听3306端口的数据,把每个 ...
- SMI#、SCI#信号在OS、BIOS、EC中的中断方式(Linux)
EC资料有个很好的CSDN博客推荐去看看:zhao_longwei的专栏 EC固件代码架构:https://blog.csdn.net/zhao_longwei/article/details/510 ...
- Dynamic CRM 2013学习笔记(七)追踪、监控及性能优化
本文将介绍CRM的三个内容追踪.监控及性能优化.追踪是CRM里一个很有用的功能,它能为我们的CRM调试或解决错误.警告提供有价值的信息:我们可以用window的性能监控工具来了解CRM的性能状况:最后 ...
- Windbg程序调试--转载
WinDbg是微软发布的一款相当优秀的源码级(source-level)调试工具,可以用于Kernel模式调试和用户模式调试,还可以调试Dump文件. WinDbg是微软很重要的诊断调试工具: 可以查 ...
随机推荐
- Spring Hibernate Transaction示例
JDBCDAO.java package com.bf; import java.sql.ResultSet; import java.sql.SQLException; import java.ut ...
- phing
javascript compress java -jar ./compiler.jar --js {from} --js_output_file {to}
- jquery dataTables例子
https://datatables.net/examples/styling/bootstrap.html http://datatables.club/example/#styling http: ...
- centos7挂载新加4T硬盘到/home目录
以下操作均在root环境下运行. 1.查看硬盘 # fdisk -l 发现硬盘为/dev/sdb 大小4T 2.如果此硬盘以前有过分区,则先对磁盘格式化: # mkfs -t ext4 /dev/sd ...
- Python对list列表及子列表进行排序
python代码,对list进行升序排序,所有子列表也要进行排序 def iterList(listVar): listVar = sorted(listVar) for i,v in enumera ...
- arrow
1.c++(OOGP) 与数据结构与算法 1.一定要有一门自己比较熟悉的语言. 我由于使用C++比较多,所以简历上只写了C++.C++的特性要了解,C++11要了解一些,还有STL.面试中常遇到的一些 ...
- sql语句,加引号和不加引号的区别
今天碰到个问题,查询数据的时候,显示表不存在,在可视化窗口确实能看见.试着给表名加个引号,发现能成功查询数据了.上网查询原因如下: 1.oracle表和字段是有大小写的区别.oracle默认是大写,如 ...
- PDO数据访问抽象层(下)
PDO两大功能 一.事务功能 PDO的事务功能主要控制好几条sql语句同时成功或者同时失败(当其中一条SQL语句有错误时,同时好几条一起失败),失败时可以回滚操作 1.造对象 <?php $ds ...
- HashMap(JDK1.8)
四个构造函数: 构造方法只是赋值属性初始值但是不会真正初始化数组表空间,在第一次添加元素时形成数组表空间.这个和以往的jDK1.7之前的不同,1.7之前的都是在构造里初始化了table数组空间. ...
- SQLGetEnvAttr
SQLGetEnvAttr 函数定义: 用于得到当前环境的各项设置属性 SQLRETURN SQLGetEnvAttr( SQLHENV EnvironmentHandle, SQLINTEG ...