yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2456回复:15

SoftIce的\"HBOOT\"命令是如何实现的呢??

楼主#
更多 发布于:2002-05-14 22:30
大家都知道SoftIce中有这样一个命令\"HBOOT\",可在某些严重死机的情况下冷启动计算机,但它是如何实现的呢,我跟踪过TRW2000 1.22及1.23版,它的实现方式如下:
mov al,feh
out 64h,al
而后我又查过中断手册,还有一种实现方式,代码如下:
mov dx,0cf9h
mov ax,04h
out dx,ax
两种实现方式可以在实模式及ring0保护模式下达到冷启动的效果,但SoftIce似乎不是如此实现的,虽然反汇编其代码可找到如上指令代码,但我尝试修改后仍然能够冷启动计算机,那么它究竟是如何实现的呢,不知哪位同道对此有过研究,望不吝指教,先谢了!

最新喜欢:

changjtchangj...
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-06-06 16:53
很感谢lu0兄,你写的是lidt fword ptr [00000000]吧,你是如何找到的呢,静态反汇编分析还是动态跟踪?,由于SoftIce不允许对自身代码下断点,我试了几种办法中断它,诸如引发无效页错/无效代码错,但这样很容易死掉(先在内存中找到该段代码的地址,再用a命令直接修改其指令),我现在用的是折中的办法,自己写一个VXD,其中直接跳转到SoftIce的代码,但这只能验证上面我给出的代码,其中的两处:
a.0001d29a: mov al,fe
  0001d29c: out 64,al
b.0001d2a9: lgdt [00000000]
都是正确的,均可冷启动计算机,(双重保险???)但到了retf处就无法验证了,因此时esp保存的是我的堆栈结构,不是SoftIce的,同时我也发现了一个有趣的现象,看看以下的代码:
1.lidt fword ptr [00000000]
2.lidt fword ptr [ffffffff]
3.lgdt fword ptr [00000000]
4.lgdt fword ptr [ffffffff]

5.lidt fword ptr [xxxxxxxx]
6.lgdt fword ptr [xxxxxxxx]
每一行代码都可冷启动计算机,其中5和6表示只要[xxxxxxxx]所指向的内存地址是有效的,也可达到同样的目的。 retf指令执行后又运行到了何处,做了什么,我还不知道,曾看过DOS中断手册,好像SoftIce预留有接口,可允许外部程序执行它的内部命令,得查查看,若行的话,就可跟进去看看了,不知lu0兄可否指教一二,不胜感激!!!
lu0
lu0
论坛版主
论坛版主
  • 注册日期2001-06-10
  • 最后登录2016-04-05
  • 粉丝2
  • 关注0
  • 积分-6311分
  • 威望21111点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-06-03 18:38
LIDT 0
Regards, Lu Lin Webmaster of Inside Programming http://www.lu0s1.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-31 09:49

向8042端口64H写命令,其中0xFx命令定义如下:
  0xFx:   Pulse Output Port: Bits 0-3 of the 8042 output port can be pulsed low for 6 us;  Bits 0-3 of command indicate which Bits should be pulsed; 0=pulse, 1=don\'t pulse; pulsing Bit 0 results in CPU reset since it is connected to system reset line..

  摘自PC机的硬件资料中8042的应用说明
 

兄弟能否将这内容全部贴出来,或者提供书的期号也行,多谢了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
wuhz
驱动牛犊
驱动牛犊
  • 注册日期2002-05-27
  • 最后登录2005-10-23
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-05-30 21:04

向8042端口64H写命令,其中0xFx命令定义如下:
  0xFx:   Pulse Output Port: Bits 0-3 of the 8042 output port can be pulsed low for 6 us;  Bits 0-3 of command indicate which Bits should be pulsed; 0=pulse, 1=don\'t pulse; pulsing Bit 0 results in CPU reset since it is connected to system reset line..

  摘自PC机的硬件资料中8042的应用说明
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-05-30 20:55
以下是反汇编的相关代码段:
....
0001d24e: mov edi,00000472
0001d253: add edi,dword ptr [00000000]
0001d259: mov dword ptr [00000000],00000000
0001d263: mov dword ptr [00000000],ffffffff
/*这一段屏蔽掉不影响
0001d26d: mov ax,1234
0001d271: call 0000b8f6
*/
0001d276: in al,61
0001d278: push ecx
0001d279: mov ecx,00000014
0001d27e: loop 0001d27e
0001d280: pop ecx
0001d281: or al,0c
0001d283: out 61,al
0001d285: push ecx
0001d286: mov ecx,00000014
0001d28b: loop 0001d28b
0001d28d: pop ecx
/*这一段屏蔽掉不影响
0001d28e: mov dx,0674
0001d292: mov al,00
0001d294: out dx,al
0001d295: mov dx,0670
0001d299: out dx,al
0001d29a: mov al,fe
0001d29c: out 64,al
*/
0001d29e: mov ecx,00600000
0001d2a3: loop 0001d2a3
0001d2a5: mov ax,0010
0001d2a9: lgdt [00000000] //这一行屏蔽掉也不影响
0001d2b0: mov ds,ax
0001d2b3: retf
若把整段代码都屏蔽掉,则会产生无效页错,但不会冷启动,我估计应该是在retf返回后才会执行到,具体还要分析分析,大家可以一起交流一下
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-05-29 14:11
测试需要时间,大家交流能够更快进步
所以我倡议大家多发言,多指点
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-05-29 11:39
你将那几条指令屏蔽了还可运行?
那几条指令屏蔽了有不可运行?
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-05-28 16:21
SoftIce中是有以上代码,但我把它屏蔽掉(NOP)后,\"HBOOT\"命令仍然能用,若把它附近的代码全都屏蔽掉,则会引发无效页错,可以肯定\"HBOOT\"命令是要执行到此处,但究竟如何实现的还要进一步的研究
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-05-26 13:18
 Softic中是有下面的代码,我
  mov dx,0x0674  ;
  mov al , 0 ;
  out dx,al ;
  mov dx , 0x0670 ;
  out dx,al ;
  mov al,0xfe ;
  out 0x64,al ;
64端口是键盘的写端口,可是键盘的Power键扫描码是5Eh,而不是efh,我没有具体根踪SoftIce
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
fengmm
驱动牛犊
驱动牛犊
  • 注册日期2001-07-25
  • 最后登录2008-10-21
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-05-24 22:27
在Win98下,用VXD, 在Windows2k下,用driver。也是写端口拉.
free bird
sirroom
驱动大牛
驱动大牛
  • 注册日期2001-07-30
  • 最后登录2018-05-29
  • 粉丝0
  • 关注0
  • 积分6分
  • 威望11点
  • 贡献值1点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-05-24 21:28
谁来写一小段代码?
111
fengmm
驱动牛犊
驱动牛犊
  • 注册日期2001-07-25
  • 最后登录2008-10-21
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-05-24 13:00
用的
mov al,feh
out 64h,al
我们以前一位兄弟在98下跟踪过softice.我保证100%是的
free bird
Nouk
驱动中牛
驱动中牛
  • 注册日期2001-08-22
  • 最后登录2006-10-22
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-05-22 13:21
May be ACPI....
Taiwan's Driver Developer
yanghui
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2009-10-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-05-17 15:03
是W32Dasm,但我反汇编的是SoftIce for win9x v3.25,不是NT下的,即winice.exe
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
15楼#
发布于:2002-05-16 15:31
楼上的兄弟,你使用什么反汇编工具,是W32dasm吗?
ntice.sys文件那么大,有许多跳转表,一般软件处理不了
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
游客

返回顶部