OD 脚 本编写基础语法学习及避坑
现在用OD的人少了,这几天尝试用 OD 写脚本,中间遇到不少问题。所以把自己总结的经验分享一下。只用到了很少几个指令,只把我用过的写一下。
基本语法:
注释用 // 开始
指令不区分大小写
保留变量 $RESULT ,一些指令执行后的结果都保存在 $RESULT 中。
自定义变量要先声明,然后才能使用
以下是我测试过的指令:
var 变量声明
示例:var addr
msg 弹窗显示信息
示例: msg "提示"
示例: msg $RESULT
mov 变量赋值,跟汇编指令类似
示例:
var addr
mov addr,401000
mov addr,eax
add 相加运算
示例:
var addr
mov addr,401000
add addr,100 //注意是十六进制
GMI eip,CODEBASE// 获取EIP,结果保存在 $RESULT
msg $RESULT// 显示结果
GMI eip,MODULEBASE// 获取模块基址
bp 下断点
示例:
bp addr//注意,addr 已事先声明,并且其中的值是下断点的目标值
run// 相当于按F9运行
// 获取内存中十六进进制数据
var hex,addr//假设 addr 是目标地址,hex 是保存数据的变量
mov hex,
mov hex, //用偏移的方式
// 从内存中读取字符串
readstr ,12 // 解释:addr 是一个变量,也是读取的内存地址,12 是字符串长度,注意是十六进制
示例:
var addr
mov addr,esi // 当前esi的值是目标值
readstr ,12// 注意,一定要加 [],结果保存在 $RESULT 中
msg $RESULT//显示读到的字符串
// 显示格式处理,比如我想弹窗显示:目标值是x (其中x是变量)
eval "目标值是 {x}" // 解释:变量用 {} 括起来,结果会保存在 $RESULT,并不能直接弹窗
msg $RESULT//把上面的结果弹窗显示
// 十六进制数据逆序处理,注意是字节逆序
rev hex//其中,hex 是变量,结果保存在 $RESULT
mov hex,$RESULT //把逆序的结果保存到 hex中
// 写信息到文件
wrta code,$RESULT// 解释:code是变量,值是 文件的名字,$RESULT 是要保存的信息
示例:
var code
mov code,"code.txt"
wrta code,$RESULT // 会把 $RESULT 中的信息写到文件 code.txt 中。
// 结束脚本
ret
谢谢楼主分享下载!!! 感谢分享经验
感谢分享经验 谢谢老师专注技术分享!这应该是论坛的主旋律。 这就完了?没过瘾啊。 过来学习,多谢分享! 谢谢分享,但是没必要守旧了. x32 x64dbg还是学习下把. OD虽然说是个好软件,但没有人维护了. 很多指令已经不支持了. 除非你用OD分析老软件,如果分析主流软件确实局限性很大.x64得脚本都有官方文档. 很多OD之前需要插件得功能都已经内置了.建议放弃OD.用X32. 感谢楼主分享经验
页:
[1]