用表达式访问内存内容¶
OllyDbg 表达式也强大到可以包含内存读取,你可以用方括号包裹内存地址(或求值为地址的表达式)来做到这一点。例如,[EAX+C] 和 [401000] 表示地址 EAX+C 和 401000 处的内容。要以 DWORD 以外的类型读取内存,你可以在括号前指定想要的类型(如 BYTE [EAX]),或作为括号内的第一个标记(如 [STRING ESP+C])。支持的类型列在表 2-5 中。
数据类型含义 BYTE8 位整数(无符号)CHAR8 位整数(有符号)WORD16 位整数(无符号)SHORT16 位整数(有符号)DWORD32 位整数(无符号)LONG32 位整数(有符号)FLOAT32 位浮点数 DOUBLE64 位浮点数 STRING指向 ASCII 字符串的指针(以 null 结尾)UNICODE指向 Unicode 字符串的指针(以 null 结尾)
把内存内容直接插入 OllyDbg 表达式在游戏破解中非常有用,部分原因是你可以告诉调试器在中断前检查角色在内存中的生命值、名字、金币等等。你会在第三十七页「在绘制特定玩家名字时暂停执行」中看到一个例子。