ODbgScript与OllyScript:脚本语言详解及示例

5星 · 超过95%的资源 需积分: 9 9 下载量 198 浏览量 更新于2024-07-30 收藏 203KB PDF 举报
"ODbgScript脚本是一种基于OllyScript语言的工具,用于控制ODbg(Olly Debugger)的脚本执行。它采用类似于汇编的语法,支持多种数据类型和操作,包括十六进制和十进制常数、变量、寄存器、内存地址、标志位、字符串以及通配符字符串。此外,脚本还提供了保留变量、版本信息检查、指令包含、日志记录等功能,便于在调试过程中实现自动化和自定义操作。" 在ODbgScript中,你可以使用不同的操作数类型进行计算和控制流程。这些操作数包括: 1. **常数**:可以是无前缀和后缀的十六进制数(如00FF),或带点的十进制数(如100.128,甚至浮点数如128.56)。 2. **变量**:需通过`Var`关键字定义后才能使用。 3. **寄存器**:涵盖32位(EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP)、16位(AX, BX, CX, DX, SI, DI, BP, SP)以及8位(AL, AH, DL, DH)寄存器。 4. **内存地址**:可以是直接的内存地址(如[401000])或基于寄存器的地址(如[ecx])。 5. **标志位**:前缀为感叹号的标志,如(!CF, !PF, !AF, !ZF, !SF, !DF, !OF)。 6. **字符串**:以#开头和结束的序列,如#6A0000#,或包含通配符的字符串,如#6A??00#。 ODbgScript提供了几个特殊的保留变量: - **$RESULT**:用于存储函数返回值,例如FIND函数的结果,可以在调试窗口中查看和修改。 - **$VERSION**:表示ODbgScript的版本信息,可用于版本比较,确保脚本兼容性。 ODbgScript的一些关键指令包括: - **#INC"文件名"**:将另一个脚本文件包含进来,类似子程序调用,但两脚本内变量名不可重复。 - **#LOG**:开启日志记录,所有记录的指令将在OllyDbg的日志窗口中显示,前面会有"-->"标记。 例如,以下脚本片段展示了如何使用这些元素: ```odbgscript Var myVar = 0x1234 #log "Starting script..." cmp $VERSION, "1.47" jne version_not_supported #INC "additional_script.txt" mov eax, [ebx + 4] #LOG "eax value is now: " + eax ``` 这个例子中,首先定义了一个变量`myVar`,然后检查版本信息,如果版本不满足条件,则跳转到`version_not_supported`标签。接着包含外部脚本,并移动内存中 ebx+4 的值到 eax 寄存器,最后记录 eax 的当前值。