飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 1623|回复: 8

[原创] OD 脚 本编写基础语法学习及避坑

[复制链接]
  • TA的每日心情
    开心
    2023-5-25 11:16
  • 签到天数: 25 天

    [LV.4]偶尔看看III

    发表于 2022-11-28 13:04:10 | 显示全部楼层 |阅读模式
    现在用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,[addr]

    mov hex,[addr+4] //用偏移的方式


    // 从内存中读取字符串

    readstr [addr],12 // 解释:addr 是一个变量,也是读取的内存地址,12 是字符串长度,注意是十六进制

    示例:
    var addr
    mov addr,esi // 当前esi的值是目标值
    readstr [addr],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



    PYG19周年生日快乐!
  • TA的每日心情
    开心
    前天 08:08
  • 签到天数: 525 天

    [LV.9]以坛为家II

    发表于 2022-11-28 14:13:29 | 显示全部楼层
    谢谢楼主分享下载!!!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    9 小时前
  • 签到天数: 649 天

    [LV.9]以坛为家II

    发表于 2022-11-28 16:22:31 | 显示全部楼层
    感谢分享经验
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    昨天 21:31
  • 签到天数: 424 天

    [LV.9]以坛为家II

    发表于 2022-11-28 20:35:53 | 显示全部楼层

    感谢分享经验
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    昨天 22:20
  • 签到天数: 956 天

    [LV.10]以坛为家III

    发表于 2022-11-28 21:20:06 | 显示全部楼层
    谢谢老师专注技术分享!这应该是论坛的主旋律。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    4 天前
  • 签到天数: 608 天

    [LV.9]以坛为家II

    发表于 2022-11-30 12:26:48 | 显示全部楼层
    这就完了?  没过瘾啊。
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    7 小时前
  • 签到天数: 511 天

    [LV.9]以坛为家II

    发表于 2022-11-30 13:35:21 | 显示全部楼层
    过来学习,多谢分享!
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    无聊
    2024-3-12 09:44
  • 签到天数: 415 天

    [LV.9]以坛为家II

    发表于 2022-12-1 14:00:35 | 显示全部楼层
    谢谢分享,但是没必要守旧了. x32 x64dbg还是学习下把. OD虽然说是个好软件,但没有人维护了. 很多指令已经不支持了. 除非你用OD分析老软件,如果分析主流软件确实局限性很大.  x64得脚本都有官方文档. 很多OD之前需要插件得功能都已经内置了.  建议放弃OD.用X32.
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2023-8-13 20:26
  • 签到天数: 163 天

    [LV.7]常住居民III

    发表于 2022-12-1 19:54:09 | 显示全部楼层
    感谢楼主分享经验
    PYG19周年生日快乐!
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表