IceDump和NticeDump是一款配合SoftICE扩展其内存操作的工具,IceDump支持Windows 9x、Windows Millennium系统,NticeDump支持Windows NT/2000。它们的出现,使SoftICE如虎添翼,TRW2000的许多特色功能在SoftICE里也可实现了。

1.Icedump操作简介
  运行IceDump前,首先要确定SoftICE版本号,按Ctrl+D切换到SoftICE下命令:VER,查看版本号。然后在相应SoftICE版本号目录下运行icedump.exe文件,它会调用自身的VXD文件,装载成功出现图7.16所示画面。如果发现SoftICE没运行或版本不符,就拒绝运行。 如果想从内存中卸载它,可以在DOS下键入"icedump u"。

1)/DUMP <起始地址> [<长度> <文件名>]
  抓取内存中的数据到文件里,类似TRW2000中的W命令。<文件名>参数可以指定盘符和路径,当在Ring-0下还原时最好清除还原区域内的全部断点,否则会给SoftICE带来不必要麻烦。(这一点在所有的IceDump命令里都应该值得注意)
在Win32系统下读者可能会想到用/BHRAMA或/PEDUMP从内存内中重建一个可用的PE镜像。请看下面关于/OPTION命令的说明。

注意: IceDump 6.015以前类似的命令是PAGEIN D <address> [<length> <filename>]

2)/LOAD <地址> <长度> <文件名>
  把<文件>指定长度的字节内容调入到内存中的<地址>处。与/DUMP的作用相反,同样需要注意的是不要设置断点。

3)/BHRAMA <Bhrama dumper server 窗口名>
  用Procdump的Bhrama(由G-Rom出品的著名脱壳工具)来初始化dumping。用户必须提供窗口的名称,可以从标题条找到它。为了使工作简单化,可以在winice.dat里设置F3键:
F3="/BHRAMA ProcDump32 - Dumper Server;"

4) /TRACEX <low EIP> [<high EIP>]
  控制跟踪器并退出SoftICE。注意该命令只能用于跟踪当前线程,如果要跟踪其它线程,请使用/TRACE命令。

  /TRACEX <low EIP>: 跟踪当前线程。注意,如果跟踪当前线程弹出SoftICE窗口后想继续跟踪,必须使用/TRACEX命令,否则跟踪器会失去对当前线程的控制。
   当线程的EIP到达<low EIP>时,跟踪停止并弹出SoftICE窗口。这也要求EIP真正可以到达,否则SoftICE不会弹出。

  /TRACEX <low EIP> <high EIP> 跟踪当前线程,注意事项同上。
  当线程的EIP到达<low EIP>与<high EIP>之间的区域内时停止并弹出SoftICE窗口。注意这里没有作<low EIP>和<high EIP>的边界检查,所以错误的参数地址会使SoftICE不能中断。

5) /SCREENDUMP [<文件名>]
  把SoftICE屏幕内容保存到一个文件中。注意该功能只支持通用显示驱动模式。这个命令的用法类似于/DUMP,如果没有指定<文件名>,IceDump将在模式0、1、2、3和4中切换。
  模式1:默认模式,将以ASCII格式输出。
  模式0:字节属性也将被抓取。
  模式2:可以把屏幕内容保存成一个HTML文件。
  模式3:会把屏幕内容保存成LaTeX格式的文件。
  模式4 :把屏幕内容保存为EPS (encapsulated Postscript)格式。

2.NticeDump操作简介
  Nticedump远不如IceDump功能强大,并且Nticedump装载方式不同于IceDump,它是通过给SoftICE打补丁来实现0特权级控制权的,这是因为在Windows 2000上,要切换到0特权级不象Windows9x那么容易了。
  要打补丁的文件是\WINNT\SYSTEM32\DRIVERS\Ntice.sys,在Nticedump目录里有一补丁工具ntid.exe,把安装目录下相应SoftICE版本的Icedump文件与ntid.exe一同复制到\WINNT\SYSTEM32\DRIVERS\目录下,然后运行ntid.exe程序就能正确补丁Ntice.sys。这样Nticedump和SoftICE就完全结合了。

1) 抓取内存数据:PAGEIN D 基地址 长度 文件名
例: PAGEIN D 400000 512 \??\C:\memory.dmp

注意: 在NT输入输出管理系统中,象"C:\memory.dmp"不是合法路径。"\??\C:\filename.dmp"是在C盘根目录下创建"filename.dmp"文件。

2) 抓取进程: PAGEIN B <Bhrama窗口名>
例: PAGEIN B ProcDump32 - Dumper Server

3) 导入文件: PAGEIN L 基地址 长度 文件名
Example: PAGEIN L 400000 512 \??\C:\memory.dmp

4) 帮助: PAGEIN 例: PAGEIN