FLOAT 32位浮点数
ERRCODE 系统错误代码(像由函数GetLastError()报告的)
ADDR, PTR 地址(特殊情况:NULL)
ASCII ASCII串指针
UNICODE UNICODE串指针
FORMAT 在类函数printf()(不包括wscanfW()!)使用的 ASCII 式串
WFORMAT 类函数wsprintfW()(不包括scanf()!)使用的 UNICODE 式串
RECT RECT(矩形)结构指针
MESSAGE MSG(ASCII 窗口消息)结构指针
WMESSAGE MSG(UNICODE 窗口消息)结构指针
HANDLE 句柄(特殊情况:NULL,ERROR_INVALID_HANDLE)
HWND 窗口句柄
HMODULE 模块句柄
RSRC_STRING 带索引的资源串
NULL, DUMMY 有参数,但解码时跳过了
你不能重定义预定义类型。自定义类型允许你将参数分离成几个域并分别解码。类型描述有以下几种式:
TYPE 类型名
[TEXT "任何文本"]
[<域选择器>]
<域解码>
<域解码>
[TEXT "任何文本"]
[PURGE]
...
<域选择器>
<域解码>
<域解码>
[TEXT "任何文本"]
END
类型名的程度限制在16个字符以内。 OllyDbg会无条件将"任何文本"作为生成的解码。域选择器提取一部分参数用于解码。以下域选择器,可以用于提取域:
MASK 十六进制掩码—域等于参数同十六进制掩码按位与(AND)的结果。
FIELD 十六进制掩码—参数同十六进制掩码按位与(AND)的数,然后OllyDbg同时按位右移掩码和计算的数直到掩码的二进制个位为1,这时数按位右移的结果就是域的。例如参数0xC250, FIELD F0,得到的结果是5。
SIGFIELD十六进制掩码—参数同十六进制掩码按位与(AND)的数,然后OllyDbg同时按位右移掩码和计算的数直到掩码的二进制个位为1,这时数按位右移的结果转成带符号32位数就是域的。例如参数0xC250 ,SIGFIELD FF00,得到的结果是0xFFFFFFC2。
简单域的解码会一次显示整个域的内容:
HEX—以十六进制形式显示域内容;
INT—以带符号十进制形式显示域内容(带小数点);
UINT—以无符号十进制形式显示域内容(带小数点);
CHAR—以 ASCII 字符形式显示域内容。
域若是一个枚举类型,则可以使用IF序列,如果必要的话还可以在IF序列后跟关键字 TRYxxx 与 ELSExxx:
IF 十六进制 "文本"—如果域等于十六进制,则将文本作为输出字符串;
TRYASCII—如果域是一个指向ASCII串的指针,则显示这个串;
TRYUNICODE—如果域是一个指向UNICODE串的指针,则显示这个串;
TRYORDINAL—如果域是一序号(有16位均为0),则会显示为序号(“#”后跟整数);
OTHERWISE—如果前面IF语句为真,则停止解码,否则继续解码;
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-41789-31.html
自己一不留神成为首富就不知道话怎么讲了