zoukankan      html  css  js  c++  java
  • OD脚本学习

    重要的   一般用得到的:
    $RESULT  //返回值
    
    cmp $VERSION, "1.47"
    ja ``````
    
    
    #INC "脚本名"
    
    
    #LOG //开始记录运行指令
    
    
    ADD 目的,源
    add [401000],5 //[4010000]+5
    add x,16.50
    add y,"times"
    
    
    alloc  //申请内存  RWE
    alloc 1000   1000字节 保存到$RESULT放着申请内存的开始地址
    Free $RESULT, 1000
    
    
    AND  目的,源
    and x,0F
    AO   自动步过  ctrl+F8
    ask 显示一个提示输入框,让用户输入 结果放在$RESULT(如果取消了则$RESULT=0)
    $RESULT_1放着长度
    
    
    ask "enter new EIP"
    cmp $RESULT,0
    je cancel_pressed
    mov eip, $RESULT
    
    
    cancel_pressed:
    asm 地址(支持变量),指令
    asm eip,"mov  eax,ecx"//将EIP指定的地方进行汇编
    
    
    bc 指定地址 breakPoint Clear
    bc  无后缀   删除所有断点
    
    
    bp  401000   设置断点
    
    
    BPCND 地址,条件 条件断点
    
    
    BPHWC  401000  BreakPoint HardWare Clear
    
    
    BPHWCALL   删除所有的硬件断点
    
    
    BPHWS 地址,模式  "r" 读取  "w" 吸入 "x"执行
    
    
    bpmc    memory clear
    
    
    bprm   地址 , 大小   读取内存断点
    
    
    bpwm    写入内存断点
    
    
    cmp 跟OD一样
    
    
    CMT   EIP,"这是OEP"  //注释
    
    
    DEC  变量  减一操作
    
    
    DIV   目的,源   除法
    
    
    DM 地址,大小,文件名 DUMP Memory
    DM 401000,1f,"dump.bin" //当前目录下生成  有则覆盖
    
    
    DMA  401000,1F,"1.txt" 可追加
    
    
    EOB 在下次中断发生时 跳
    EOE 在下次异常发生时 跳
    
    
    ESTI  Exception Step Into//shift+f7
    esti
    
    
    ESTO  Exception Step Continue //shift+f9
    esto
    
    
    EVAL   计算含义变量的表达式(用var定义)
    var x
    mov x,1000
    eval "x的值是{ x }" // x的值是00001000
    
    
    exec
    pushad
    pushfd
    ende //保存了环境
    
    
    FILL addr,len,value
    fill 401000,10,90 //NOP 10h个字节
    fill 401000,ff,[eax] 
    
    
    find 地址,查找内容,【最大大小】//支持?? ##是HEX “”为字符串,什么都不带是内存数据  输入的16进制必须是偶数
    
    
    find EIP, #6A00E8#//查找一个CALL 其第一个参数是0(push 0)
    find EIP, #6A??e8#//查找一个带参数CALL 一个?代表一个字符变量
    find EIP, "kernel32.dll"//查找字符串
    find EIP, "ker???32.d??"//一个?代表一个字符串变量 
    
    
    find eip,15ff //查找内存数据15ff
    
    
    findcom 401000,"push eax"
    
    
    gapi 地址
    得到指定代码处的API调用信息
    
    
    GMI 地址,信息(模块基地址等等)
    gmi eip,codebase //$RESULT等于当前所在模块的代码段基地址
    
    
    
    
    GP  401005
    
    
    GPA 函数名,动态链接库名//得到指定函数地址
    gpa "MessageBoxA", "user32.dll"
    //$RESULT=函数MessageBoxA的地址
    bp $RESULT
    
    
    lm 0401000,0x100,"test.bin" //引到内存dm()
    
    
    opcode addr //反汇编指定地址处的代码
    opcode 00401000 //$RESULT opcode $RESULT_1汇编代码  _2字节数
    
    
    repl 地址,查找字符串,替换字符串,长度
    
    
    repl eip,#6a00#,#6b00#,10//10个字节以内
    
    
    ret
    
    
    wrt "out.txt",ebx写数据给文件 //覆盖
    
    
    wrta 附加
    wrta sFile,"
    "
    
    
    找CALL /JMP
    找到  CODE 中指向 VMP1段 的CALL
    
    
    var fi
    var sFile
    mov sFile,"log.txt"
    
    
    mov fi,00401000
    
    
    loop:
    inc fi
    find fi,#E8??????00# //
    cmp $RESULT,0
    je exit
    mov fi,$RESULT
    gci fi,DESTINATION//获取当前命令的目标地址
    cmp $RESULT,460000
    jb loop
    cmp $RESULT,497000
    jae loop
    
    
    wrta sFile,fi
    wrta sFile,"
    "
    jmp loop
    
    
    exit:
    ret
    

  • 相关阅读:
    BZOJ 4260: Codechef REBXOR (trie树维护异或最大值)
    BZOJ 3744 Gty的妹子序列 做法集结
    BZOJ 3289: Mato的文件管理 (区间查询逆序对)
    [JSOI2007]文本生成器
    [TJOI2013]单词
    模板 AC自动机
    POJ 3710 Christmas Game
    HDU 3094 A tree game
    BZOJ 3817 Sum
    BZOJ 4589 Hard Nim
  • 原文地址:https://www.cnblogs.com/zcc1414/p/3982465.html
Copyright © 2011-2022 走看看