首页
社区
课程
招聘
Olly脚本(OllyScript)插件v0.85 完全中文帮助文档
发表于: 2004-6-6 11:43 12157

Olly脚本(OllyScript)插件v0.85 完全中文帮助文档

2004-6-6 11:43
12157

-------------------------------
Olly脚本插件v0.85 制作: SHaG
文档汉化:ZMWorm[CCG]
E-Mail:zmworm@sohu.com
2004年6月6日中文版初稿
-------------------------------

1. 关于 OllyScript
2. 目前情况
2.1 v0.85最新更新
3. 文档
3.1 语言概述
3.1.1 保留变量
3.1.2 指令
3.2 标签
3.3 注释
3.4 菜单
4. 嵌入其他的插件
5. 如何联系我
6. 特许与源代码
7. 鸣谢

------------------------------

1. 关于 OllyScript
-------------------
OllyScript 是 OllyDbg调试器的一个插件。我个人认为,OllyDbg是目前最好的程序级调试器。
这个调试器的最大的特色之一就是她的插件体系,这是使得用户能够更为有效的扩展她的功能。
OllyScript 是一种通过类汇编语言的脚本,来控制OllyDbg自动运行的插件。
在调试程序时,常常都是仅仅为了要找到某几个关键点,而不得不做大量的重复工作。
而通过使用我的脚本,您就可以做到“写一次脚本,无限使用” [write a script once and for all]。

------------------------------

2. 目前情况(2004年5月20日)
----------------------------
OllyScript仍在不断开发中。
由于OllyDbg v1.10c的某些Bug,使得这个插件不得不只能在OllyDbg v1.10b版本下工作。

2.1 最新更新
---------------
+ 新的指令: AN, DEC, DMA, INC, REPL
+ $VERSION 为保留变量。
# 加强了通配符功能。
# 修正对大数的操作错误的Bug (7FFF3456 + 33225698 = B3218AEE, 不是 7FFFFFFF,呵呵 )

------------------------------

3. 文档
----------------
在这个版本中,附带了两个脚本例子(tElock098.osc 和 UPX.osc)。
这两个脚本,可以迅速找到对应壳的入口。

3.1 语言
------------
OllyScript脚本语言是一个种类汇编的语言。

在后面的文档中, “源操作数” 和 “目的操作数”表示以下含义:
- 十六进制常数,既没有前缀也没有后缀。 (例如:是00FF, 而不是 0x00FF 和 00FFh的形式)
- 变量,这个变量必须在使用前用Var进行定义
- 一个32位寄存器 (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP, EIP)。
   目前尚不支持非32位寄存器,但是您可以使用SHL/SHR 和 AND指令来获得这它们的值。
- 一个被中括号括起来的内存地址 (例如:[401000] 指向内存地址为401000里存放分数据,
        [ecx] 指向内存地址为寄存器ecx里存放分数据).
- 一个标志位,带有感叹号前缀(!CF, !PF, !AF, !ZF, !SF, !DF, !OF)
- 字符串,也可叫数据序列。其格式为: #6A0000# (数值在两个“#”号之间),两个“#”号之间必须包含至少有一个数值。
- 包含“?”通配符的字符串。比如 #6A??00# 或者 #6?0000#

3.1.1 保留变量
------------------------

$RESULT
-------
<RESULT>
保存某些函数的返回值,比如FIND函数,等等。

$VERSION
--------
<VERSION>
保存OllyScript,的版本信息
例:
        cmp $VERSION, "0.8"  //比较是否大于 0.8版
        ja version_above_08  

3.1.2 指令
--------------

#INC "文件名"  
---------
<INClude>
将一个脚本文件的内容包含到另外一个脚本文件中
例:
        #inc "anotherscript.txt"
       
#LOG
----
<LOG>
开始记录运行指令
指令会显示在OllyDbg的log窗口中,每条记录前都会加上“-->”的前缀
例:
        #log

ADD 目的操作数,源操作数
-------------
<ADD>
源操作数与目的操作数相加,并把相加的结果保存到目的操作数中。
例:
        add x, 0F
        add eax, x
        add [401000], 5

AI
--
<Animate Into>
在OllyDbg中执行“自动步入” [Animate into]操作。
例:
        ai
       
AN 地址
-------
<ANalyze>
从指定处,对代码进行分析。
例:
        an eip // 相当于在OllyDbg中按 Ctrl+A键

AND 目的操作数, 源操作数
-------------
<AND>
源操作数与目的操作数进行逻辑与操作,并将结果保存到到目的操作数中。
例:
        and x, 0F
        and eax, x
        and [401000], 5

ASM 地址, 指令
-----------------
<ASseMble>
修改指定地址的指令
例:
        asm eip, "mov eax, ecx" //将当前指令修改为 mov eax,ecx

AO
--
<Animate Over>
在OllyDbg中执行“自动步过” [Animate over]操作。
例:
        ao

BC 地址
-------
<BreakPoint Clear>
清除指定地址的断点。
例:
        bc 401000
        bc x
        bc eip

BP addr
--------
<BreakPoint>
在指定地址设断点
例:
        bp 401000
        bp x
        bp eip

BPCND 地址, 条件
----------------
<BreakPoint on CoNDition>
在指定地址处,设置条件断点。
例:
        bpcnd 401000, "ECX==1" //当 代码执行到401000且 ecx等于1 时,程序暂停
       
BPMC
----
<BreakPoint Memory Clear>
清除内存断点。
例:
        bpmc

BPHWC 地址
----------
<BreakPoint HardWare Clear>
删除指定地址处的硬件断点。
例:
        bphwc 401000 //清除 401000处的断点
       
BPHWS 地址, 模式
----------------
<BreakPoint HardWare Set>
在指定地址,设置硬件断点。有三种模式: "r" - 读取, "w" - 写入 或者 "x" - 执行.
例:
        bphws 401000, "x" //当执行到此地址时发生中断

BPRM 地址, 大小
---------------
<BreakPoint on Read Memory>
在指定地址处,设置一个内存读取断点。 “大小” 是指内存中的字节大小。
例:
        bprm 401000, FF  //一个字节

BPWM 地址, 大小
---------------
<BreakPoint on Write Memory>
在指定地址处,设置一个内存写入断点。“大小” 是指内存中的字节大小。
例:
        bpwm 401000, FF

CMP 目的操作数, 源操作数
-------------
<CoMPare>
比较 目的操作数与源操作数的大小,和其对应的汇编指令作用相同。
例:
        cmp y, x
        cmp eip, 401000

CMT 地址, 字符串
--------------
<CoMmenT>
在指定地址处,加入注释。
例:
        cmt eip, "这是入口" //当前地址处 加上 “这是入口”的注释

DBH
---
<DeBugger Hided>
隐藏调试器
例:
        dbh

DBS
---
<DeBugger Show>
对隐藏的调试器操作进行恢复,不再隐藏。
例:
        dbs

DEC 变量
-------
<DECrement by 1>
对变量进行减一操作
例:
        dec v

DM 地址, 大小, 文件名
-------------------
<Dump Memory>
从指定地址处开始,在内存中提取指定大小的数据,并保存到指定的文件中
例:
        dm 401000, 1F, "c:\dump.bin"
       
DMA 地址, 大小, 文件名
-------------------
<Dump Memory Appended>
从指定地址处开始,在内存中提取指定大小的数据,并保存到指定的文件中;如果指定文件已存在,则将数据追加到指定文件尾部。
例:
        dma 401000, 1F, "c:\dump.bin"

DPE 文件名, 入口
----------------
<Dump Process with Entry point>
提取执行模块到指定文件中。
“入口”用来设定入口地址。
例:
        dpe "c:\test.exe", eip //入口为当前地址,保存为C盘下test.exe

EOB 标签
---------
<Execution On Breakpoint>
在下次中断发生时,跳转到指定标签处。
例:
        eob SOME_LABEL

EOE 标签
---------
<Execution On Exception>
在下次异常发生时,跳转到指定标签处。
例:
        eoe SOME_LABEL

ESTI
----
<Exception STep Into>
相当于在OllyDbg按 SHIFT-F7。
例:
        esti

ESTO
----
<Exception STep  cOntinue>
相当于在OllyDbg按 SHIFT-F9。
例:
        esto

FILL 地址, 长度, 数值
---------------------
<FILL>
在指定地址后,指定长度的内容这 此数值进行添充
例:
        fill 401000, 10, 90 // 在401000处添充0x10个 Nop指令

FIND 地址, 查找内容
---------------
<FIND>
从指定地址开始在内存中查找指定的内容。
如果查找成功,地址会保存到保留变量$RESULT中,否则$RESULT将等于 0。
查找的串支持通配符“??”(见下面的例子)。

例:
        find eip, #6A00E8# // 查找一个Call,其的第一个参数为0 (push 0)
        find eip, #6A??E8# // 查找一个带参数的Call

FINDOP 地址, 查找内容
-----------------
<FIND OPcode>
从指定地址开始查找指定一个指令,这个指令是以指定内容为开始的。
如果查找成功,地址会保存到保留变量$RESULT中,否则$RESULT将等于 0。
查找的串支持通配符“??”(见下面的例子)。
例:
        findop 401000, #61# // find next POPAD
        findop 401000, #6A??# // find next PUSH of something

译者注:
对比一下FIND 和FINDDOP的区别:

地址          数据                 代码
00401007      B8 3300              MOV     EAX, 33
0040100C      33F6                 XOR     ESI, ESI

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 9
支持
分享
最新回复 (14)
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
2
嘿嘿,好久不见了(*^___^*)
OllyScript 6月3日又更新了一次,修正了FIND指令的问题。
周末无事,翻译一篇帮助,希望对大家有用。
可能有些地方翻译的不对,欢迎大家批评指正。
我会尽快修正。
等修正好了,我要做的CHM格式方便大家使用。
2004-6-6 11:46
0
雪    币: 207
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
hao
2004-6-6 12:28
0
雪    币: 898
活跃值: (4039)
能力值: ( LV9,RANK:3410 )
在线值:
发帖
回帖
粉丝
4
好久不见  :D
zmworm 兄辛苦  
BTW:OD的帮助文件何时能够汉化完毕?
2004-6-6 12:38
0
雪    币: 6075
活跃值: (2236)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
5
严重支持!:D
2004-6-6 12:39
0
雪    币: 5340
活跃值: (598)
能力值: (RANK:170 )
在线值:
发帖
回帖
粉丝
6
最初由 fly 发布
好久不见 :D
zmworm 兄辛苦
BTW:OD的帮助文件何时能够汉化完毕?


嘿嘿,OD太长了,总在坚持,看能不能坚持下了了
2004-6-6 12:49
0
雪    币: 690
活跃值: (1826)
能力值: ( LV9,RANK:250 )
在线值:
发帖
回帖
粉丝
7
等待zmworm老大OD帮助的汉化.
2004-6-6 16:28
0
雪    币: 392
活跃值: (909)
能力值: ( LV9,RANK:690 )
在线值:
发帖
回帖
粉丝
8
谢谢:)
2004-6-6 17:23
0
雪    币: 237
活跃值: (31)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
多谢ZMWORM的辛勤工作~:p
2004-6-28 16:41
0
雪    币: 228
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
从哪里下载 使用 没发现
2004-6-28 17:44
0
雪    币: 109
活跃值: (36)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
11
∠・_灬_)~
2004-6-28 17:53
0
雪    币: 426
活跃值: (36)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
kbs
12
xiexie
2004-6-28 19:43
0
雪    币: 239
活跃值: (478)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
13
good:D Thanks
2004-7-2 09:45
0
雪    币: 222
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14
good
2004-7-3 16:54
0
雪    币: 211
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
thanks
2004-7-9 10:44
0
游客
登录 | 注册 方可回帖
返回
//