【加密与解密】第二章⑤

2.别名

执行的时候直接用内容替换原始操作数。别名有一种固定别名,另一种是自定义别名。
有10个固定别名,为\(u0~\)u9.在定义固定别名时要用r命令,同时要在字母u前面加一个.

用于自定义别名的命令有3个,分别是as,ad和al。as命令可以为内存中的一些字符串定义别名,ad用于删除别名,ad Name表示删除某个别名,ad *删除所有别名,al是列出别名。格式如下

我们现在查看一个字符串,地址是04040dc内容就是如下

用上面的格式设置别名并将其列出。alias:别名

3.表达式

WDG能够识别两种表达式类型,分别是MASM和C++表达式。.expr命令可以查看默认使用的表达式语法。这两种表达式的操作符和操作数都略有区别,使用“@@c++(...)”或者“@@masm(...)”来制定表达式的求值器。masm用?,c++用??
masm表达式除了可以使用+-*/算术运算符,类似转型运算符。

还有一些特殊的运算符支持复杂的调试命令。

4.流程控制语句

WDG定义一系列元命令和扩展命令来实现流程控制,列举如下。

5.实例

书中的例子是利用脚本对CreateFileA函数设断,判断第一个参数是不是“c:\1212.txt”若是则中断,具体如下

D:\script_ascii.txt内容如下

“poi(esp+4)”取地址的值。

给poi(esp+4)所指地址的内容别名\((fname)。“sicmp”用于进行字符串比较,判断\){fname}是否为“c:\1212.txt”。

调试功能扩展

WDG有良好的可扩展性。WDG的扩展模块也是导出了指定接口的DLL文件。

1.基本功能扩展

自带一部分扩展模块。在启动时默认加载。

扩展模块的功能涵盖了WDG常用命令集。例如观察peb的命令“!peb”,它的功能由winxp\exts.dll模块实现。

2.加载自定义调试扩展

用户可以自行加载一些扩展功能模块以丰富WDG功能。加载之前,需要指定搜索扩展模块DLL的路径。

3.自行编写扩展模块

提供了调试扩展的开发接口。

小结

可以通过阅读帮助文件来更好的使用WDG。熟悉了WDG命令模式后发现他是非常高效的,特别是调试系统模块及进行内核调试时,WDG是最佳选项。

posted @ 2023-01-04 14:51  Corax0o0  阅读(27)  评论(0)    收藏  举报