Ollydbg脚本常用命令整理+经典脚本实例
Ollydbg脚本常用命令整理+经典脚本实例
1.$RESULT 保存某些函数的返回值
2.#log 在脚本的前面加上,就会在OD的log窗口记录指令的运行。
3.alloc 申请内存如:alloc 1000
free $RESULT //申请1000字节的内存,初始地址放在$RESULT里
4.ask 显示一个对话框,让用户输入值,放在$RESULT里。如:ask “enter eax”
mov eax,$RESULT
5.bc 清除指定地址的断点,如:bc 00401000,bc eip;
6.bp 跟命令行的一样
7.bpcnd 设置条件断点如:bpcnd 00401000,”eax==1”
8.bpd 清除调用函数断点 bpd “send”
9.bphws 设置硬件断点,3中模式”r”,”w”,”x”, 如:bphws 401000,”r”
10.bphwc 清除硬件断点 bphwc 401000
11.bphwcall 清除所有硬件断点
12.bpl 设置记录断点,运行到这里时记录所需要的值,如:bpl 401000,”eax” //执行到这里把eax的值记录到log窗口
13.bpmc 清除内存断点
14.bprm,bpwm内存读取,写入断点,如:bprm 401000,10//对401000起始的16字节内存下读取断点
15.cmt 指定地址处加入注释 如:cmt eip,“this is OEP”
16.dm 从内存中取数据保存在文件中。如:dm 401000,10,“D:\123.txt”
17.dma是将数据追加到指定文件的为末尾。
18.find 地址,内容,范围(可以不加范围)
19.free 释放alloc申请的内存
20.go 执行到指定地址处如:go 402000
21.gpa 在指定的动态链接库中,获得指定函数的地址。
如:gpa “send”,“WS2_32.dll” //地址保存在$RESULT
bp $RESULT //相当于命令行bp send
22.log 将值显示在log窗口 如:log “abc” //log窗口显示”abc”
log eax //log窗口就显示eax:eax的值
var x
mov x,ff10
log x //log窗口就显示x:0000FF10
23.msg 将消息显示在一个对话框如:msg “the script stop”
24.msgyn 显示的对话框有”是”” 否”按钮,点”是”,$RESULT=1.点”否”等于0.
25.pause 暂停脚本运行。
26.ret 退出脚本,写在在脚本最后一行
27.run 相当于F9
28.rtu 相当于Ctrl+F9
29.sti 相当于F7
30.sto 相当于F8
31.var 声明一个变量
32.脚本也可以定义标签,Label:
33.汇编的大部分基本命令都可以在脚本中使用。
简单的ESP脱壳定律:
#log
var addr // 变量
sto //F8单步
log esp //将此时esp显示在log窗口
mov addr,esp //将esp赋给变量addr
bphws addr
jmp label //在addr处下硬件断点
label:
run //F9运行
bphwc //清除硬件断点
sto //F8单步
sto //F8单步
cmt eip,”This is OEP”//到了OEP处加注释
log eip //把这个OEP地址
显示在log窗口
ret //退出脚本