SoftICE IceExt 0.70使用手册》
一、安装使用
SoftICE作为调试器王者当之无愧,但是对于为专业的程序分析来说还有很多不方便的地方,为此诞生了诸如IceExt之类的扩展SoftICE功能的插件,本文将描述IceExt。并逐步分析内核调试的技术和手段。
和以往的版本相比,IceExt有了很大的改观,在0.70版本中主要改变了人工的注册IceExt.sys 和使用net start
IceExt的方式,这不知道算不算人性化设计,不过也方便了不少,但这不是最主要的,最大的改变是加入了eXTreme tRaCer
Engine。使得SoftIce在输入特定的条件下跟踪单步调试,记录调试的过程信息。
首先,我们先下载IceExt,IceExt可以从http://sourceforge.net/projects/iceext免费获得,在发行版中
可以选择二进制版本和源代码,图方便的话,可以下载二进制版本的文件,当然这对于一个专业的调试人员是不适合的,毕竟我们需要研究一下这个东西内部的工作
原理,还有是否可以改进的地方,所以我建议还是下载源代码。不过下载源代码的同时你必须保证已经安装了WINDOWXP的DDK,当然你也可以选择
WINNT和WIN2000的DDK,但我使用的是WINDOWSXP SP2。
修改make.bat和source文件中的W2K,将其替换成WXP,以及修改sys/source中的ntoskrnlNT4.LIB
为$(DDKLIBPATH)/ntoskrnl.lib,我们可以使用make.bat来生成文件。当然我并不是使用make.bat来生成了,而是先
去BUILD了SYS,如果你使用的也和我一样是WINDOWS XP SP2相信也会得到 如下的错误。
errors in directory c:/iceext/iceext-0.70-src/sys
libmad.lib(stream.obj) : error LNK2026: module unsafe for SAFESEH image.
libmad.lib(synth.obj) : error LNK2026: module unsafe for SAFESEH image.
libmad.lib(frame.obj) : error LNK2026: module unsafe for SAFESEH image.
libmad.lib(bit.obj) : error LNK2026: module unsafe for SAFESEH image.
libmad.lib(layer3.obj) : error LNK2026: module unsafe for SAFESEH image.
libmad.lib(layer12.obj) : error LNK2026: module unsafe for SAFESEH image.
libmad.lib(timer.obj) : error LNK2026: module unsafe for SAFESEH image.
objfre_wxp_x86/i386/iceext.sys : error LNK1281: Unable to generate SAFESEH image.
什么是SAFESEH? safeseh是一项保护和检测和防止堆栈中的seh被覆盖而导致利用的技术。
在指定 /SAFESEH 后,只有在链接器还可以生成映像的安全异常处理程序表的情况下,该链接器才会生成一个映像。该表指定其异常处理程序适合于该映像的操作系统。
只有在对 x86 目标进行链接时,/SAFESEH 才有效。已说明异常处理程序的平台不支持 /SAFESEH。例如,在 x64 和
Itanium 上,所有异常处理程序都在 PDATA 中说明。ML64.exe 支持添加批注,这些批注将 SEH 信息(XDATA 和
PDATA)发出到映像中,允许您通过 ml64 函数展开。有关更多信息,请参见 MASM for x64 (ml64.exe)。
如果未指定
/SAFESEH,链接器将生成具有安全异常处理程序表的映像(如果所有模块都与安全异常处理功能兼容)。如果任意模块与安全异常处理功能不兼容,则最终
的映像将不会包含安全异常处理程序表。如果 /SUBSYSTEM 指定 WINDOWSCE 或某一 EFI_*
选项,则链接器将不尝试生成具有安全异常处理程序表的映像,因为上述任何子系统都不可以利用这些信息。
如果指定了 /SAFESEH:NO,则链接器将不会生成具有安全异常处理程序表的映像,即使所有模块都与安全异常处理程序功能兼容。
链接器无法生成映像的最常见的原因是:该链接器的一个或多个输入文件(模块)与安全异常处理程序功能不兼容。模块与安全异常处理程序不兼容的一个常见原因是:该模块是通过来自以前版本的 Visual C++ 的编译器创建的。
通过使用 .SAFESEH,还可以将函数注册为结构化的异常处理程序。
在 Microsoft Visual C++ 2005 中,无法将现有的二进制文件标记为具有安全异常处理程序(或不具有异常处理程序);必须在生成时添加关于安全异常处理的信息。
链接器能否生成安全异常处理程序表取决于使用 C 运行时库的应用程序。如果使用 /NODEFAULTLIB
进行链接,并希望得到一张安全异常处理程序表,则需要提供加载配置结构(例如可在 loadcfg.c CRT 源文件中找到的结构),此结构包含为
Visual C++ 定义的所有项。
为了编译通过我们必须取消/SAFESEH的连接参数,打开DDK中的i386mk.inc文件,将/SAFESEH参数去掉。好了,我们成功的生成了ICEEXT.SYS,将编译好的ICEEXT.SYS复制到/EXE文件夹,打开ICEExt.rc将
#ifdef _DEBUG
1 BINARY DISCARDABLE "..//sys//objchk_w2k_x86//i386//IceExt.sys"
#else
1 BINARY DISCARDABLE "..//sys//objfre_w2k_x86//i386//IceExt.sys"
#endif
改写成
#ifdef _DEBUG
1 BINARY DISCARDABLE "IceExt.sys"
#else
1 BINARY DISCARDABLE "IceExt.sys"
#endif
保存后,BUILD。
OK,我们得到了iceext.exe.
接下来我们要修改SOFTICE的注册表信息。
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/NTice]
"KDHeapSize"=dword:00008000
"KDExtensions"=""
好了,可以使用iceext –s来启动softice了。
迫不及待,我CTRL+D;
Lines 45;
Set font 2;
!help后调出了新的ICEEXT的全部功能。
!BC - 清除内存区块中所有的断点
!BL - 列出内存区块中所有的断点
!BPR - 中断在内存范围中
!CP - 设定当前代码页(866 or 1251)
!DUMP - dump内存到磁盘
!DUMPSCREEN - dumpSoftICE屏显成RAW格式到磁盘
!INTSAVE - 存储中断句柄
!INTREST - 恢复中断句柄
!INTXCHG - 置换中断句柄
!INTSHOW - 显示内部中断句柄表
!EB -内存补丁patch byte in memory (restores PTE after patching)
!FONT - 设定屏幕字体
!FPOS - 显示文件指针
!LASTBRANCH - 显示最后的MSR分支信息
!LOADFILE - 打开硬盘文件载入到内存镜像
!PROTECT - 开关 SoftICE 自我保护功能
!HELP - 显示帮助
!SUSPEND - 挂起当前执行的线程(仅ring-3线程)
!RESUME - 唤醒被挂起的线程
!TETRIS - 俄罗斯方块
!TRCINIT-初始化跟踪。
!TRACE-跟踪
!TRCCODE-察看跟踪代码。
相关推荐
SoftICE V4.3.2.2485 & IceExt0.70 Lite Edition(SoftICE终结版)
SoftICE V4.3.2.2485 & IceExt0.70 Lite Edition。 可以在XP下运行,win7没试过。 ----------------------------------------------------------------------------------------------------- SoftICE是Compuware NuMega公司的产品,是目前公认最好的系统级调试工具!兼容性和稳定性极好,可在源代码级调试各种应用程序和设备驱动程序,也可使用TCP/IP连接进行远程调试。 ICE的含义 ICE(In Circuit Emulator)即实体电路模拟器,是用来跟踪软件执行动作细节的一个模拟CPU的电子设备。当然这种设备价格昂贵,不是常人所能拥有的。NuMega公司推出的Soft "ICE",意思是靠软件实现ICE的功能。 SoftICE单独发行的最高版本是SoftICE v4.3.2.2485,针对不同平台推出的相应的版本:DOS,Windows3.x,Windows 9x,Windows NT和Windows 2000。 更新说明: 1、SI432 的原配 cws3xw32.dll (3.4.12.0) *已修改* 2、SI432 中 cws3xw32.dll 需要的 softkey.dll *添加* 3、去掉了多余的 Vsetup.ini 文件。 *备注:解决了之前的 softkey.dll 不能定位的问题。因在 WINDOWS 目录里面有一个与SI softice.dll 同名的文件,在提取时出了错而导致 loader32.exe 异常。现在这个SI432 Lite 是 100% 提取自 DS321 的了。
Windows10系统封装
系统封装 一、定制母盘 将 windows 原版镜像中\sources\install.wim文件拷贝出来 用 NTLite 将其打开 剪除掉不需要的部分 结束应用,点击开始即可 二、制作WTG 制作一个 PE + WTG 的启动盘,并完成 定制母盘 的安装。 1.准备工作 准备一个U盘,空间最好大一点,或者移动硬盘 优启通镜像 WTG 镜像 优启通 DISM++ DiskGenius(专业版) BOOTICE VMWare 2.制作PE 打开优启通,选择U盘,点击全新制作,完成后,带优启通的
内核级调试工具(softice 使用手册)
Soft-ICE 是一个软体除错工具。可是它拥有相当於硬体侦错器(hardware-level)的能力, 使它能凌驾於 DOS 一般的除错程式之上。 Soft-ICE 使用 386 的虚拟 86 模式(virtual 86 mode) 将 DOS 所有程式摆在 一个虚拟机器 (Virtual Machine) 上, 使得 Soft-ICE 可以完 全控制 DOS 的环境。 Soft-ICE 使用 80386 保护模式的特色, 像是 paging、I/O privilege level 和 break point register,加'硬体侦错器'中断指示著你存在的DOS 除错程式.
IceExt V0.70 Released
FROM:EXETOOLS by:Sten IceExt 0.70 has been released. Now with ring-0 tracer (implemented by Godness) and new IceExt.sys loader app (IceExt doesnt requite anymore to be registered as a service). Pr
Softice使用指南---使用Softice
安装并配置好Softice后,我们就可以开始进入使用Softice的阶段了,如果你没有做好前面的工作,还是先返回去将Softice准备好,学软件要一边看一边学习效果才好。Softice的界面和操作都比较简单,只要熟悉一些基本的命令之后就可以开始利用它为我们服务了。有一点要提醒大家:Softice在WINDOWS启动之前装入系统中,然后将WINDOWS载入(因为要控制、拦截WINDOWS的
SoftIce 4.3.2 Ropped From DS 3.2 and IceExt 0.70
FROM:CRACKL@Bby: =TS=For the purpose of the decrease of the heap of foolish questions concerning the tuning lay out themselves sabzhi: 1. > SoftIce 4.3.2 Ripped From DS 3.2, now does not require l
Compuware Softice的烦恼
一日与ZVROP讨论一个溢出问题,为了分析,特地去安装SOFTICE,原版的那个没有装,DS3.2又很大。所以下载了一个Compuware.SoftICE.4.3.1.Lite.Edition。仅仅10M,安装方便,开始觉得满意。而装好后,问题慢慢就来了。例如bpx住messageboxa,messageboxw,之后,就写了个直接调用messagebox函数的程序,但softice并没有断下来。
softice2.8 dos下的调试利器
softice2.8 dos下的调试利器
SoftICE中文帮助+使用手册
两份不错的中文资料:softice使用手册 和 SoftICE4命令中文解说。
softice 用户手册中文版
目录: 本手册的功能 读者对象 本手册的组织结构 排版风格 如何使用本手册 其它相关文件 (外国人就是罗嗦,为了求全,只好随他了。) 第一章 欢迎使用SoftICE 产品概况 介绍SoftICE 介绍Symbol Loader 如何得到客户服务 联系NuMega公司的技术支持中心 第二章 安装SoftICE 介绍 硬件和软件要求 SoftICE显示选择 安装之前 安装 安装之后 配置BOOT。INI以便在多处理器系统中支持单CPU 配置SoftICE在Windows 95下正确载入 通过串行口连接第二台计算机 解决显卡问题 第三章 SoftICE教程 介绍 载入SoftICE 构造GDIDEMO样本程序 装入GDIDEMO样本程序 控制SoftICE屏幕 通过源码跟踪和逐步调试 读本地数据 设定断点和目标断点 设定一个断点 设定STICKY断点 (此处不知STICKY作何解释。待我读到此处时大概会明白) 使用SoftICE命令行信息 使用符号和符号表 设定条件断点 设置BPX断点 编辑断点 设定读写内存断点 第四章 将代码装入SoftICE 调试的概念 准备调试程序 准备调试设备驱动程序和VxDs(虚拟设备驱动程序) 手工装入SoftICE 装入SoftICE for Windows 95 装入SoftICE for Windows NT 构造带有调试信息的程序 使用Symbol Loader转换和载入文件 修改模块设定 修改通用设定 修改编译设定 修改调试设定 指定程序的源文件 删除符号表 在DOS命令行里使用Symbol Loader 使用Symbol Loader的命令行工具 NMSYM命令行的语法 使用NMSYM来转换符号信息 使用NMSYM来装入模块和符号信息 使用NMSYM来装入或导出符号表 使用NMSYM卸载符号信息 使用NMSYM来保存历史记录 关于NMSYM的信息 第五章 SoftICE导航 介绍 呼出SoftICE窗口 启动时禁用SoftICE 使用SoftICE窗口 调整窗口大小 控制窗口 拷贝和粘贴数据 用鼠标输入命令 得到帮助 使用命令窗口 滚动窗口 键入命令 重呼命令 使用运行时宏 将命令窗口的历史缓存保存到文件 相关命令 控制代码窗口 读信息 在代码窗口键入命令 使用本地窗口 控制本地窗口 扩展和分解堆栈 相关命令 使用观察窗口 控制观察窗口 设定观察表达式 读信息 扩展和分解类型表达式 相关命令 使用寄存器窗口 控制寄存器窗口 读信息 编辑寄存器和标志位 相关命令 使用数据窗口 控制数据窗口 读信息 改变内存地址和格式 编辑内存 辅助表达式 相关命令 第六章 使用SoftICE 在跟踪错误时调试多个程序 跟踪错误 Ring-3 32位保护模式(Win32程序) Ring-0 驱动代码(内核模式设备驱动程序) Ring-3 16位保护模式(16位Win程序) 地址内容 使用INT 0x41 .DOT命令 理解从R-3到R-0的转变 第七章 使用断点 第八章 ----------------------------------------------------------- (...很累人那!今天就这些了吧.因为我也是读一些翻译一些,所以有些"向前引用 "的名词术语不知道要如何解释其意义.应该读完再翻译比较好...不过那个时候我 又开学了...呜...一点时间也没有了!) 第七章 使用断点 介绍 SoftICE所支持的断点类型 断点选项 执行断点 内存断点 中断断点 I/O断点 窗口消息断点 理解断点的含义 虚断点 设置断点活动 条件断点 条件断点计数功能 在条件表达式中使用本地变量 在条件断点里引用堆栈 参考 多重断点 所用时间 断点统计 在表达式中引用断点 维护断点 使用内嵌断点 第八章 使用表达式 表达式 操作符 操作符优先级 形成表达式 表达式类型 定制类型 取得符号的数值 间接使用符号 第九章 装入系统组件符号 装入由DLL和EXE文件导出的符号表 使用未命名的入口点
SoftICE使用文档中文版
2.2 SoftICE调试器.PDFSoftICE使用文档中文版SoftICE使用文档中文版SoftICE使用文档中文版
SOFTICE教程及使用手册
SoftICE命令中文解说之一 命令: . 作用: 在代码窗口中定位当前指令 语法: . 用法: 当代码窗口可见时, .命令(点命令)使得当前的CS:EIP 所指向的指令可见, 并且高亮显示. 另外,此命令也把 SoftICE 从其他内存区域中切回原先弹出的内存区域. 详见后面的ADDR命令. 点评: 当你在代码窗口中上下浏览时,有可能走得很远, 那么 这时一个"." 命令会让你在下一瞬间回到SOFTICE当前 所在的CS:EIP处,再也用不着按PGUP,PGDOWN很多次了! 命令: ? 作用: 计算一个表达式的值 语法: ? 表达式 用法: 计算一个表达式的值.并以十六进制,十进制,带符号的 十进制(<0时有)和ASCII值多种形式显示计算结果. 点评: 一个非常高级的计算器, 诸如46578*1999+ESI 之类的 计算不会再让你烦恼,另外由于可以显示ASCII,所以可 以很方便地在各种数制之间察看.
编译libmad库
libmad是一个开源的音频解码库,下面说说关于这个库工程的编译过程: 1、首先从网上下载libmad开源库,自己百度就能够找到关于这个库的下载链接地址,我这里提供一个: http://download.chinaunix.net/download.php?ResourceID=5910&id=11891 2、下载到的是一个压缩包:libmad-0.15.1b.ta...
LIBMAD解码播放器
简单的libmad封装类LibMP3: // LibmadMP3.h: interface for the LibmadMP3 class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_LIBMADMP3_H__0363C03A_CE0B_45E2_BA2D
SoftICE使用说明(一)
第 一 章 [介绍] 1.1 本程式的功能 1.2 使用手册 1.3 系统需求 1.1 本程式的功能 ---------------- Soft-ICE是一个软体除错工具。可是它拥有相当於硬体侦错器(hardware-level) 的能力,使它能凌驾於DOS一般的除错程式之上。 Soft-ICE使用386的虚拟86模式(virtual 86 mo
Softice使用指南(异域の蜗牛注:经典的调试工具,几乎能调试所有程序.感谢ddcrack让我看了这么好的文章.分享)
softice是异域の蜗牛了解到的最好的调试工具,对于没有对它进行屏避的软件都能较好的调试.不过本人并没用它成功破解过软件,有兴趣的朋友先看看使用方法,自己钻研钻研,请看下面正题Softice使用指南作者 :ddcrack (2001/5/24) 主页:http://ddcrack.yeah.net
微软技术日报 2026-09-08:Patch Tuesday 任务栏自由了,GPT-6 Astra 四平台齐发
今天推送的 9 月补丁让 Windows 11 找回了任务栏与开始菜单的自由,而 Copilot 一周内接入两大前沿模型、Studio Harness 转 GA,则标志着微软的"智能体平台化"从口号进入账单期——本地跑大模型(Project Zenith)与云端多模型编排(Copilot Studio)两条路线正在同时加速。
微软技术日报 2026-09-09:Project Opal 自主智能体亮相,Patch Tuesday 966 漏洞含 2 零日
每天 5 分钟,速览微软技术圈最新动态。今日看点:Project Opal 让 Copilot 学会"自主干活"、创纪录的 966 漏洞 Patch Tuesday、WinUI 3 三十分钟速成新范式。
4360




被折叠的 条评论
为什么被折叠?



