首页
社区
课程
招聘
《SoftICE IceExt 0.70使用手册》一。
发表于: 2007-4-13 17:13 11520

《SoftICE IceExt 0.70使用手册》一。

2007-4-13 17:13
11520
《SoftICE IceExt 0.70使用手册》
一、安装使用
SoftICE作为调试器王者当之无愧,但是对于为专业的程序分析来说还有很多不方便的地方,为此诞生了诸如IceExt之类的扩展SoftICE功能的插件,本文将描述IceExt。并逐步分析内核调试的技术和手段。
   和以往的版本相比,IceExt有了很大的改观,在0.70版本中主要改变了人工的注册IceExt.sys 和使用net start IceExt的方式,这不知道算不算人性化设计,不过也方便了不少,但这不是最主要的,最大的改变是加入了eXTreme tRaCer Engine。使得SoftIce在输入特定的条件下跟踪单步调试,记录调试的过程信息。
  首先,我们先下载IceExt,IceExt可以从ad1K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4y4G2N6i4u0U0k6h3k6G2M7X3N6W2i4K6u0W2L8X3g2@1i4K6u0r3M7s2u0G2K9X3g2U0N6s2y4Q4x3V1k6A6j5$3g2W2P5s2c8Q4c8e0g2Q4z5o6g2Q4z5p5c8Q4c8e0S2Q4b7U0c8Q4b7U0W2Q4c8e0S2Q4z5p5g2Q4b7U0N6Q4c8e0g2Q4b7V1g2Q4z5e0N6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4z5f1y4Q4b7e0S2Q4c8e0g2Q4z5p5k6Q4z5e0q4Q4c8e0S2Q4b7e0q4Q4z5p5y4Q4c8e0N6Q4z5o6W2Q4z5o6S2Q4c8e0c8Q4b7U0S2Q4b7f1c8Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0c8Q4b7V1u0Q4b7e0g2Q4c8e0W2Q4z5o6m8Q4z5o6W2Q4c8e0k6Q4z5p5u0Q4b7e0W2Q4c8e0c8Q4b7V1q4Q4z5p5y4Q4c8e0S2Q4b7V1k6Q4z5f1u0Q4c8e0g2Q4z5o6S2Q4b7U0k6Q4c8e0N6Q4z5o6W2Q4z5o6S2Q4c8e0k6Q4z5f1y4Q4b7f1y4Q4c8e0g2Q4z5e0u0Q4z5p5y4Q4c8e0k6Q4b7V1q4Q4z5e0m8Q4c8e0c8Q4b7V1u0Q4b7e0y4Q4c8e0N6Q4b7e0m8Q4z5o6q4Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4z5f1u0Q4b7V1g2Q4c8e0k6Q4z5e0k6Q4b7U0W2Q4c8e0c8Q4b7V1g2Q4b7V1k6Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0S2Q4b7f1k6Q4z5f1c8Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0c8Q4b7V1u0Q4b7e0g2Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0S2Q4b7V1c8Q4b7V1c8Q4c8e0c8Q4b7V1q4Q4z5p5y4Q4c8e0S2Q4b7V1k6Q4z5f1u0Q4c8e0g2Q4z5o6S2Q4b7U0k6Q4c8e0N6Q4z5o6W2Q4z5o6S2Q4c8e0k6Q4z5f1y4Q4b7f1y4Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0k6Q4z5e0k6Q4z5o6N6Q4c8e0c8Q4b7V1u0Q4b7U0k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0g2Q4b7V1c8Q4z5e0y4Q4c8e0N6Q4z5o6c8Q4b7U0k6Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0g2Q4b7f1k6Q4b7U0W2Q4c8e0c8Q4b7V1q4Q4z5p5g2Q4c8e0c8Q4b7U0S2Q4z5o6m8Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4c8e0c8Q4b7U0S2Q4z5e0y4Q4c8e0c8Q4b7U0S2Q4z5f1q4Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0S2Q4b7U0m8Q4z5o6y4Q4c8e0S2Q4b7f1k6Q4z5e0g2Q4c8e0c8Q4b7V1q4Q4b7V1q4Q4c8e0g2Q4z5e0q4Q4z5e0S2Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0c8Q4b7U0S2Q4z5p5c8Q4c8e0W2Q4z5o6m8Q4z5o6u0Q4c8e0g2Q4z5e0m8Q4z5o6S2Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0k6Q4b7f1k6Q4z5e0g2Q4c8e0N6Q4b7f1u0Q4z5f1k6Q4c8e0k6Q4z5o6S2Q4z5e0q4Q4c8e0c8Q4b7V1u0Q4b7f1y4Q4c8e0W2Q4z5f1y4Q4z5o6m8Q4c8e0S2Q4b7e0k6Q4z5o6q4Q4c8e0N6Q4b7e0m8Q4z5e0c8Q4c8e0N6Q4b7e0W2Q4b7U0k6Q4c8e0c8Q4b7U0S2Q4z5o6m8Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0S2Q4b7V1k6Q4z5e0W2Q4c8e0c8Q4b7U0S2Q4b7f1q4Q4c8e0c8Q4b7U0S2Q4z5f1y4Q4c8e0S2Q4b7e0g2Q4b7V1k6Q4c8e0g2Q4z5o6k6Q4z5o6g2Q4c8e0W2Q4z5o6y4Q4b7e0S2Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0g2Q4b7U0N6Q4b7e0g2Q4c8e0c8Q4b7V1c8Q4z5f1y4Q4c8e0g2Q4z5p5g2Q4z5f1k6Q4c8e0N6Q4z5e0m8Q4z5o6k6Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0S2Q4b7V1k6Q4z5e0S2Q4c8e0k6Q4z5f1y4Q4z5o6W2Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0g2Q4z5e0m8Q4b7e0k6Q4c8e0g2Q4z5p5k6Q4b7f1k6Q4c8e0c8Q4b7V1u0Q4b7e0g2Q4c8e0k6Q4z5e0c8Q4b7U0W2Q4c8e0S2Q4b7V1k6Q4z5f1u0Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0g2Q4z5f1y4Q4b7U0m8Q4c8e0k6Q4z5e0k6Q4b7U0W2Q4c8f1k6Q4b7V1y4Q4z5p5y4Q4c8e0k6Q4z5o6W2Q4z5o6m8Q4c8e0c8Q4b7V1u0Q4b7e0g2Q4c8e0k6Q4z5o6S2Q4z5e0q4Q4c8e0g2Q4b7V1u0Q4b7V1q4Q4c8e0S2Q4b7f1g2Q4b7f1g2Q4c8e0S2Q4b7V1k6Q4z5e0S2Q4c8e0k6Q4z5e0S2Q4b7f1k6Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0S2Q4b7V1c8Q4b7V1c8Q4c8e0k6Q4b7V1q4Q4z5e0m8Q4c8e0c8Q4b7V1u0Q4b7e0y4Q4c8e0N6Q4b7e0m8Q4z5o6q4Q4c8e0y4Q4z5o6m8Q4z5o6u0Q4c8e0c8Q4b7U0S2Q4z5p5c8Q4c8e0S2Q4b7V1k6Q4z5o6N6Q4c8e0c8Q4b7U0S2Q4z5p5u0Q4c8e0S2Q4b7V1c8Q4b7V1c8Q4c8e0k6Q4b7V1q4Q4z5e0m8Q4c8e0c8Q4b7V1u0Q4b7e0y4Q4c8e0N6Q4b7e0m8Q4z5o6q4Q4c8e0N6Q4z5f1q4Q4z5o6c8Q4c8e0g2Q4z5e0m8Q4z5p5y4Q4c8e0k6Q4z5e0N6Q4b7U0k6Q4c8e0c8Q4b7V1c8Q4b7e0m8Q4c8e0g2Q4b7V1k6Q4z5o6g2Q4c8e0W2Q4b7e0q4Q4b7V1u0Q4c8e0c8Q4b7V1k6Q4z5f1c8Q4c8e0S2Q4b7f1k6Q4z5o6q4Q4c8e0g2Q4b7U0N6Q4b7U0u0Q4c8e0N6Q4b7V1u0Q4z5p5k6Q4c8e0g2Q4b7f1g2Q4z5o6W2Q4c8e0S2Q4b7e0y4Q4z5o6g2Q4c8e0c8Q4b7V1q4Q4z5o6k6i4d9f1&6p5e0#2N6j5f1q4!0q4y4#2)9&6b7g2)9^5y4p5c8p5d9#2!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4g2!0n7c8q4)9&6x3#2!0q4y4#2)9^5y4q4!0n7y4W2!0q4y4q4!0n7c8q4!0m8x3q4!0q4y4q4!0n7z5g2)9&6c8W2!0q4y4g2)9^5c8W2!0m8c8W2!0q4y4q4!0n7b7W2!0m8y4g2!0q4z5g2)9^5x3q4)9^5z5g2!0q4y4W2)9^5b7W2!0m8z5g2N6u0e0V1&6f1i4@1f1#2i4K6V1J5i4K6S2o6g2@1W2z5x3U0l9H3x3q4!0q4y4#2)9&6b7g2)9^5y4p5c8p5d9#2!0q4c8W2!0n7b7#2)9^5b7#2!0q4y4q4!0n7c8q4)9^5y4W2!0q4y4W2)9^5z5q4)9&6x3g2!0q4y4q4!0n7c8q4!0n7c8W2!0q4y4#2)9&6y4q4!0m8z5q4!0q4y4#2)9&6b7g2)9^5y4q4!0q4y4W2)9&6z5q4!0m8c8W2N6u0e0V1c8a6g2#2y4j5f1l9`.`. 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-察看跟踪代码。

书写仓促,下次我将继续将我使用ICEEX的过程和遇到的问题和大家讨论

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

收藏
免费 1
支持
分享
最新回复 (7)
雪    币: 110
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
写的太有技术性了 ICE 我从来没成功用过一次,但就是喜欢那个黑屏 哈哈哈
2007-4-13 17:43
0
雪    币: 58782
活跃值: (21961)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
等全部完成再设精华。;)
2007-4-13 20:19
0
雪    币: 216
活跃值: (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
嗯,不错!楼主再发一些有关于ICEEXT的how what...
期待ing...
2007-4-13 20:43
0
雪    币: 200
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
请楼主发一下Softice4.05的使用说明.网上的使用说明都是老版本的,谢谢!
2007-4-13 22:40
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
不错!不错!
2007-4-14 15:21
0
雪    币: 603
活跃值: (617)
能力值: ( LV12,RANK:660 )
在线值:
发帖
回帖
粉丝
7
可惜SI不更新了。
2007-4-15 20:42
0
雪    币: 223
活跃值: (85)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
8
SoftICE的翻译工作,工程浩大,翻译english无法了解softice的内部运行机制,通过学习SoftICE插件,我们可以清晰的理解SoftICE,至少可以理解50%的工作原理。剩余的50%需要通过使用来学习。
2007-4-16 08:47
0
游客
登录 | 注册 方可回帖
返回