SoftIce 4.05可以在winxp 以上操作系统激活吗?DriverStudio中SoftICE拦截不了messageboxa中断??

SoftIce 4.05可以在winxp 以上操作系统激活吗?SoftICE单独发行的最高版本是4.05,只对不同平台推出的相应的版本:DOS,Windows3.x,Windows 9x , Windows NT和Windows 2000    j建议换个系统试试 注:其实Windows操作系统按照内核划分为Win 9x系列和Win NT系列,我们常用的Windows XP就属于Win NT系列 。一般说来,Windows 95和Windows NT已经被淘汰,现在主要是用的是Windows XP、2000、2003和ME、98 , 对于家庭用户来说,Windows 98稳定性存在一定问题,而Windows ME更是被很多人嗤之以鼻,所以一般建议家庭用户使用Windows XP 。办公用户不仅希望电脑运行稳定,而且由于机器配置相对不高,因此多数选择Windows 2000,当然,虽然Windows 2000其貌不扬,但是稳定性和速度仍旧胜过Windows XP,所以,如果你不嫌弃Windows 2000难看的话,推荐你还是使用Windows 2000
DriverStudio中SoftICE拦截不了messageboxa中断??【SoftIce 4.05可以在winxp 以上操作系统激活吗?DriverStudio中SoftICE拦截不了messageboxa中断??】评论 ┆ 举报佳答案答案由提问者自选择并代表百度知道知识观点答:sx1129新手4月12 09:39 >>安装K-Lite code?现讯息安装高阶语言软体C++另播放影片程式K-lite-Code由於版本旧播放影片问题或请您检查看看安装些播放软体版本及安装影音解压缩pack否版本旧?揪错 ┆ 评论 ┆ 举报
softice不能运行装了DAEMON Tools 4之后无法运行softice,也许...
softice和visual softice哪个功能强softice
soft ice cream ssoa怎么看题主是否想询问“softicecreamssoa这四个单词是什么意思?”soft的意思是:是柔软的吗、柔滑的、硬度较低的 。ice的意思是:冰、冰块 。cream的意思是:奶油、乳脂、精华 。ssoa的意思是:冰淇淋 。
Windows内核调试器的SoftICESoftICE的原理和WinDBG完全不一样 。它通过替换正常系统中的中断处理程序来获得系统的控制权,也正因为这样它才能够实现单机调试 。它的功能实现方法很底层,很少依赖与windows给的接口函数,大部分功能的实现都是靠IO端口读写等来完成的 。SoftICE替换了IDT表中以下的中断(陷阱)处理程序:0x1:单步陷阱处理程序0x2:NMI不可屏蔽中断0x3:调试陷阱处理程序0x6:无效操作码陷阱处理程序0xb:段不存在陷阱处理程序0xc:堆栈错误陷阱处理程序0xd:一般保护性错误陷阱处理程序0xe:页面错误陷阱处理程序0x2d:调试服务陷阱处理程序0x2e:系统服务陷阱处理程序0x31:8042键盘控制器中断处理程序0x33:串口2(Com2)中断处理程序0x34:串口1(Com1)中断处理程序0x37:并口中断处理程序0x3c:PS/2鼠标中断处理程序0x41:未使用(这是在PIC系统上更换的中断 。如果是APIC系统的话更换的中断号有不同,但同样是更换这些中断处理程序)其中关键是替换了0x3 调试陷阱处理程序和0x31 i8042键盘中断处理驱动程序(键盘是由i8042芯片控制的),SoftICE从这两个地方获取系统的控制权 。启动softICE服务后SoftICE除了更换了IDT里的处理程序,还有几点重要的,一是HOOK了i8042prt.sys里的READ_PORT_UCHAR函数,因为在对0x60端口读后,会改变0x64端口对应控制寄存器的状态 。所以在SoftICE的键盘中断控制程序读了0x60端口后并返回控制权给正常的键盘中断控制程序后,不要让它再读一次 。还有就是把物理内存前1MB的地址空间通过调用MmMapIoSpace映射到虚拟的地址空间里,里面包括显存物理地址,以后重画屏幕就通过修改映射到虚拟地址空间的这段显存内容就行了 。如果显示模式是彩色模式,那么显存起始地址是0xb8000,CRT索引寄存器端口0x3d4,CRT数据寄存器端口0x3d5 。如果显示模式是单色模式,那么显存起始地址是0xb0000,CRT索引寄存器端口0x3b4 , CRT数据寄存器端口0x3b5 。首先写索引寄存器选择要进行设置的显示控制内部寄存器之一(r0-r17) , 然后将参数写到其数据寄存器端口 。i8042键盘控制器中断控制驱动程序在每按下一个键和弹起一个键都会被触发 。SoftICE在HOOK了正常的键盘中断控制程序获得系统控制权后 , 首先从0x60端口读出按下键的扫描码然后向0x20端口发送通用EOI(0x20)表示中断已结束,如果没有按下激活热键(ctrl+d),则返回正常键盘中断处理程序 。如果是按下热键则会判断控制台(就是那个等待输入命令的显示代码的黑色屏幕)是否被激活,未被激活的话则先激活 。然后设置IRQ1键盘中断的优先级为最高,同时设置两个8259A中断控制器里的中断屏蔽寄存器(向0x21和0xa1发中断掩码 , 要屏蔽哪个中断就把哪一位设为1),只允许IRQ1(键盘中断)、IRQ2(中断控制器2级联中断,因为PS/2鼠标中断是归8259A-2中断控制器管的 , 只有开放IRQ2才能响应来自8259A-2管理的中断)、IRQ12(PS/2鼠标中断,如果有的话) , 使系统这时只响应这3个中断 。新的键盘和鼠标中断处理程序会建立一个缓冲区,保存一定数量的输入扫描信息 。当前面的工作都完成后会进入一段循环代码,负责处理键盘和鼠标输入的扫描码缓冲区,同时不断地更新显存的映射地址缓冲区重画屏幕(这段循环代码和WinDBG里循环等待从串口发来的包的原理是一样的 , 都是在后台循环等待用户的命令) 。这段循环代码是在激活控制台的例程里调用的,也就是说当控制台已被激活的话正常流程不会再次进入这段循环代码的(废话,再进入系统不就死循环了) 。当有一个新的键按下时,都会重新调用一遍键盘中断处理程序,因为控制台已激活,所以它只是简单地更新键盘输入缓冲区内容然后iret返回 。它并不会返回正常的键盘中断处理程序,因为那样会交出控制权(想证明这点也很简单 , 在SoftICE里断正常的键盘中断处理程序,然后g,1秒后在这里断下,这是我们可以F10,如果SoftICE会把控制权交给正常的键盘中断处理程序的话 , 在这里早就发生死循环了) 。鼠标中断驱动也是一样 。这个时候实际iret返回到的还是那段循环代码里面,所以被调试的代码并不会被执行,除非按下了F10之类的键,它会指示退出循环返回最开始时的中断处理程序,然后再iret返回最开始中断的地方 。当然,因为设置了EFLAG里的TF位,执行了一个指令又会通过单步的处理程序进入那段循环的代码 。而处理int 0x3也差不多,若没有激活控制台则先激活并屏蔽除了键盘、鼠标及8259A-2中断控制器外的所有中断,然后进入那段循环代码 。作为对比同样来看一下在SoftICE里处理int 0x3和单步的过程 。当执行到int 0x3时 , 激活控制台并屏蔽中断,然后将int 0x3指令前后范围的指令反汇编并写入显存映射地址空间,并把最新的寄存器值也写进去 , 最后在后台循环等待键盘输入命令 。当命令是F10时,设置好EFLAG的TF位,清除8259A中断控制器里的中断屏蔽寄存器,开放所有中断 , 将控制台清除,从循环代码中返回新键盘(或int 0x3)中断处理程序,然后再返回到正常键盘(或int 0x3)中断处理程序,由这里iret到被中断代码处执行 。执行了一个指令后因为发生单步异常又进入后台循环代码 。SoftICE里的单步比WinDBG要快得多的原因很简单,SoftICE只需要把反汇编出来的代码和数据经过简单处理再写入显存映射地址缓冲区里刷新屏幕就可以继续执行了,省略了串行的发包收包,怎么会不快 。而中断系统更快,按下键中断就会发生,根本不用象WinDBG等时钟中断才能把系统断下来 。

    推荐阅读