转Draren总结的ollydbg v1.09d 中文版使用说明

Ollydbg使用指南 Ollydbg基本操作的汇总 阅读详情

转Draren总结的ollydbg v1.09d 中文版使用说明

一点一滴的积累,也就会了.

之所以选择ollydbg

1.我的os是winXP,无法使用trw2000,而softice装了多次均未成功,还蓝屏死机多次.郁闷.

2.友好的gui界面,不像softice.可以边干活边听歌,不像softice,把整个os都挂起了.多用两次,连时间都不知道了.

3.强大的内存查看功能,再不用什么-d了,而且跳转方便,爽!一目了然.

4.强大的右键菜单功能

ollydbg的界面:

菜单:

文件:
    1.其中包括该菜单的下部有上次打开的纪录,该纪录保存有上次未清除的断点.
    2.附加.对付那些Anti-Debug程序.先运行程序,再运行od,文件-->附加.
查看:
    1.执行模块(Alt+E),查看程序使用的动态链接库
    2.查看断点.Alt+B
调试:
    1.运行(F9)加载程序后,运行!
    2.暂停(F12)
    3.单步进入(F7)遇见CALL进入!进入该子程序.
    4.单步跳过(F8)遇见CALL不进去!
    5.执行到返回(ALT+F9)就是执行到该子程的返回语句

ollydbg的16进制编辑功能.类似与hiew,hex workshop

查看-->文件

二进制文件编辑功能.查看-->文件,打开的文件是二进制显示.选中要改变的机器指令,空格,修改,右击-->保存.

ollydbg的四个区域

左上角是cpu窗口,分别是地址,机器码,汇编代码,注释;注释添加方便,而且还能即时显示函数的调用结果,返回值.
右上角是寄存器窗口,但不仅仅反映寄存器的状况,还有好多东东;双击即可改变Eflag的值,对于寄存器,指令执行后发生改变的寄存器会用红色显示.
cpu窗口下面还有一个小窗口,显示当前操作改变的寄存器状态.  不错;
左下角是内存窗口.可以ascii或者unicode两种方式显示内存信息;
右下角的是当前堆栈情况,还有注释啊.

F3选择打开程序.

使用

F9执行程序.

下断点:

1.对函数下下断点

在代码区右击-->搜索-->当前模块中的名称(ctrl+N),在跳出来的对话框中选择需要下的断点函数.->右击->查找导入参考(enter),按F2下断点.如果有多个地方调用了该函数就这样操作。

2.在需要的地方下断点  F2

添加注释:

在代码区第四列,右击-->注释

查看内存地址

右击内存地址列-->前往-->输入要查看的内存地址

在函数lstrlen的注释的上方,有一个变量string,当执行到该函数的时候,string后面会出现lstrlen函数的参数字符串.在实际使用中一般是输入的字符串.(很好用哦)

类似的还有lstrcmp,上面有string1,string2能够显示将要比较的两个字符串.

另外,一般在执行getwindowtext等函数后,右边寄存器列,eax会显示函数的返回值,即取到的内容.同时内存中也会有显示.

在反汇编中选中一条命令,如果其中有用到内存中的地址,右击-->在转存中跟随-->直接常数
此时内存地址会显示指令中引用到的内存字符

拷贝功能十分强大.直接选择要拷贝的内容.右击-->复制-->文件or剪贴板

ollydbg的条件断点可以按寄存器,存储器,消息(必须是消息的数字,如wm_command就是111)等等设断,非常强大,一旦设了之后记录到文件中,下次restart程序还能用,不用拿笔记,很方便。

显示跳转路进:
选项-->调试设置-->cpu页-->显示跳转的方向,显示跳转的路径,如果跳转没有实现则显示灰色路径。在cpu窗口中,机器码的前面显示">"符号.同时,在cpu窗口下的小缝中会显示跳转路径,从何跳转而来.右击-->前往...一般都是条件跳转,上面的内容就是比较的地方啦。:)

跟踪功能:
选项-->调试跟踪-->跟踪:设置运行跟踪的缓存大小.越大越好.
调试-->打开或清除运行跟踪
然后我们就可以用CTRL+F11或CTRL+F12开启“跟踪进入”和“ 跟踪跳过”了。当我们暂停程序的时候,可以用小键盘上的“+”,“-”,“*”来控制跟踪功能了。
其中,“跟踪进入”和运行类似,但是记录所有指令以及寄存器变化。并且会自动进入所有的CALL中。
“ 跟踪跳过”和“跟踪进入”类似,但是不进入CALL
“+”用来显示跟踪缓冲区中的下一条指令
“-”用来显示跟踪缓冲区中的上一条指令
“*”用来发返回当前指令

让OD显示MFC42.DLL中的函数
打开调试-->选择导入库-->添加-->选择MFC43.LIB加入.重新载入MFC程序,就可以看到call后面的api函数了.

动态暂停以messagebox为例)
先运行目标程序,再运行od,选择文件-->附加.在目标程序运行出现对话框时,切换至od,F12暂停.

字符串参考:
在汇编代码区,右击-->搜索-->字符参考

更改二进制文件:

方法1.查看-->文件,打开文件,找到欲修改的偏移,使用机器码修改,然后右击保存文件.缺点是需要使用其他软件来获取偏移地址.

方法2.直接在反汇编代码区更改,这时可以使用汇编代码更改,不用记机器码.完了.右击-->复制到可执行文件-->保存文件.很是方便哪!

关于虚拟地址和偏移地址:
ollydbg果然强大,太强大了,在欲修改的指令处右击-->复制到可执行文件,弹出窗口中光标所在行即是欲修改的指令所在的偏移地址,右击-->汇编,直接修改汇编指令,不用记机器码,又不用虚拟地址到偏移地址的转换.改完后保存文件.爽丫!
olldbg 下怎么下消息断点?

如在softice 中下 BMSG 0084 WM_DESTROY,在olldbg下该怎么做?

不如下断 SendMessage,PostMessage,程序中的消息不一定都经过消息循环。

Ollydbg下消息断点的一个方法

原文:
SoftIce can trace application messages. And Olly?
by FuZzYBiT

SoftIce can trace application messages. And Olly?
And so does OllyDbg. That’s a very “hidden feature”. I guess it is sooo useful.
1. Open program
2. Names window [CTRL+N in CPU Window]
3. Find User32.TranslateMessage API
4. right click/FindReferences
5. conditional breakpoint [SHIFT+F4]
6. expression: MSG
7. Log function arguments: Always
If you cannot find it, try right click SEARCH FOR-> ALL INTERMODULAR CALLS.
But if I want to trap a specific message like WM_COMMAND?
To Log Only WM_COMMAND
Do it in this fashion:
1. Open program
2. Names window [CTRL+N in CPU Window]
3. Find User32.TranslateMessage API
4. right click/FindReferences
5. conditional breakpoint [SHIFT+F4]
6. Condtion box: MSG==WM_COMMAND
7. Log function arguments: On Condition
If you can’t find User32.TranslateMessage API, do the same as above.

翻译:

SoftIce 能够跟踪应用程序的消息,那么OllyDbg呢?
by FuZzYBiT

OllyDbg也是可以的,那是一个非常"隐蔽的功能"。它是如此的有用。
1. 打开程序
2. 名字窗口[ 在CPU窗口中按CTRL+N ]
3. 查找 User32.TranslateMessage API
4. 右击/FindReferences(查找参考)
5. 下条件断点 [SHIFT+F4]
6. 表达式: MSG
7. 记录函数参数:永远

如果你不能找到它,试试右击鼠标,然后搜索全部模块中的名称。
但是如果我想要捕捉一个特定的消息如WM_COMMAND呢?
只对WM_COMMAND记录
用这个方法做:
1. 打开一个程序
2. 名字窗口[ 在CPU窗口中按CTRL+N ]
3. 查找 User32.TranslateMessage API
4. 右击/FindReferences(查找参考)
5. 下条件断点 [SHIFT+F4]
6. 条件框:MSG==WM_COMMAND
7. 记录函数参数: 条件满足时
如果你不能找到User32.TranslateMessage API,象上面那样做。
以下命令适用于 OllyDbg 的命令行插件 Cmdline.dll(显示于程序的插件菜单中)
聆风听雨整理
===============================================================
命令行插件支持的命令

CALC
判断表达式

WATCH
添加监视表达式

AT
在指定地址进行反汇编

FOLLOW
跟随命令

ORIG
反汇编于 EIP

DUMP
在指定地址进行转存

DA
转存为反汇编代码

DB
使用十六进制字节格式转存

DC
使用 ASCII 格式转存

DD
转存在堆栈格式

DU
转存在 UNICODE 格式

DW
使用十六进制字词格式转存

STK
前往堆栈中的地址

AS
(AS + 地址 + 字符串)
在指定地址进行汇编

BP
进行条件中断(有条件的断点)

BPX
中断在全部调用 (Call)

BPD
清除全部调用中的断点

BC
清除断点

MR
内存断点于访问时

MW
内存断点于写入时

MD
清除内存断点

HR
访问时进行硬件中断

HW
写入时进行硬件中断

HE
执行时进行硬件中断

HD
清除硬件断点

STOP
停止运行程序调试

PAUSE
暂停执行程序调试

RUN
运行程序进行调试

GE
运行和通过例外

SI
单步进入 Call 中

SO
步过 Call

TI
跟踪进入直到地址

TO
跟踪步过直到地址

TC
跟踪进入直到满足条件

TOC
跟踪步过直到满足条件

TR
运行直到返回

TU
运行直到用户代码

LOG
查看记录窗口

MOD
查看模块窗口

MEM
查看内存窗口

CPU
查看 CPU 窗口

CS
查看 Call 堆栈

BRK
查看断点窗口

OPT
打开选项设置窗口

EXIT
退出 OllyDbg

QUIT
退出 OllyDbg

OPEN
打开一个可执行文件

CLOSE
关闭可执行文件

RST
重新运行当前程序

HELP
查看 API 函数的帮助

OllyDbg应用方法大全--请补充!

所有文章均为散落在DFCG论坛各处或其他网络文集的经典。
雪很冷搜集整理于学习笔记或与朋友讨论之中


Ollydbg 中断方法


  Quote:
Originally posted by dong at 2004-6-1 10:29 PM:
我问个问题
在od中怎么下断点呢??
现在有的程序一点注册就没反映了
这样的怎么下断点呢??
能介绍下什么情况下什么断点吗?  
在转存中下硬件访问->Word"断点,下断之后,怎么取消!
9398944(老菜鸟) 11:09:59
alt+D  按H  然后删除


这个没有万能的方法,只能视具体情况而定,就我的经验而言:
第一步,反汇编找有用信息,有时候虽然点击注册按钮后,没有任何反映,但软件也许包含了可用的信息,比如“未注册”,“已注册”等等之类的,都可用做断点的。
第二步,如果反汇编也找不到有用信息,如果用OD可以下HMEMECPY断点,在每个调用的函数上下断,虽然这个法子太笨,但我试过,几乎有70%以上的机会可找到断点,找到断点后再慢慢跟吧!这只是个人的看法,关键只要找到断点,有什么办法都无所谓。
在命令行下bpx hmemcpy断点,然后回车,在每个调用的函数上下断。
有的程序甚至无法用API中断,可以在OD载入程序后上下翻动反汇编窗口查看字符串参考下断,在反汇编窗口里直接找到的,右键查找那里找不到


转发Ollydbg 中断方法浅探-各种断点常识知识

Ollydbg 中断方法浅探
                                   ――国庆节小礼

Ollydbg是一个新的32位的汇编层调试软件。适应于windows98、me、2000、xp和2003操作系统。由于他具有图形窗口界面,所以操作方便、直观,是cracker的好工具。
由于Ollydbg没有了TRW2000的万能断点,所以许多的新手感觉到用Ollydbg断点不好找。现在我来的说说Ollydbg下中断的几种方法。本人是个菜鸟,水平有限,可能不能完整的写出来,也可能存在错误。请大家指正。
我所表述的是Ollydbg v1.09d中文版,其他版本和英文版下自己参考。

第一 寻常断点
Ollydbg中一般下中断的方法,就是在程序的地址处用鼠标选择这一行。然后按F2键,这时被选择的那一行的地址会变成别的颜色,就表示这个地址处下了中断。然后运行程序时只有到这个地址处就会被Ollydbg中断。
这个方法用的比较多,所以把他称作寻常断点。
如果有命令行插件,就可以在命令窗口中输入BPX xxxxxxxx 下断点。
优点:只要自己怀疑是重要的代码处都可以下这种下断点,不受条件的限制,所以方便实用。
缺点:如果不知道代码功能下断点具有盲目性。

第二 API断点
Ollydbg中一般下API中断的方法,有二种。
1.  在代码窗口中点鼠标右键,出现功能菜单。在[搜索]选择项下有〔当前模块的名称〕和〔全部模块的名称〕俩项,选择其中的一项就打开了程序调用API的窗口,在这个窗口中选择你要跟踪的API函数名。双击这个函数就能到程序的调用地址处。然后用F2下中断。也可以在API窗口中选择需要跟踪的函数点鼠标右键出现功能菜单,选择〔在每个参考设置断点〕。同样下了断点。                                      
快捷方式:Ctrl+N
2.  在命令行窗口中输入BPX  API函数名或者BP  API函数名 后回车。这时出现了所有调用这个函数的地址的窗口,在这个窗口中可以看到调用这个API函数的地址已改变了颜色。说明下好了断点。
说明一下:BPX一般中断在程序调用API的地址处。BP会中断在API的写入地址处。二这有所不同,根据需要选择。
   优点:这种方法下的断点是针对每一个API函数的,所以具有明确的目的。
   缺点:关键的API函数不容易找到。所以有时下的断点没有作用。

   第三  内存断点(跟踪关键数据的断点)
   Ollydbg中的内存断点相当于TRW中的bpm 断点。
下断点的方法是:在程序运行中断时选择界面中的转存窗口,用光标选择内存中的一段关键数据(颜色会改变),然后右击鼠标出现功能菜单。选择〔断点〕项,其中有二个选择〔内存访问〕和〔内存写入〕。
〔内存访问〕断点是程序运行时要调用被选择的内存数据时就会被Ollydbg中断,根据这个特点在破解跟踪时只要在关键数据内存中下中断就可以知道程序在什么地方和什么时候用到了跟踪的数据。对于一些复杂算法和流程变态的算法跟踪有很大的帮助。从破解上讲,一个注册码的生成一定是由一些关键数据或者原始数据计算来的。所以在内存中一定要用到这些关键数据。那么〔内存访问〕断点就是最好的中断方法。
〔内存写入〕断点是程序运行时向被选择的内存地址写入数据时就会被Ollydbg中断。根据这个特点在破解时可以跟踪一个关键数据是什么时候生成的,生成的代码段在那个地方。所以一个关键的数据如果不知道他的由来就可以用〔内存访问〕断点查找计算的核心。
内存中断的下断点还有另外的一种方法:程序运行时如果知道关键的数据,比如我们输入的试验码、程序生成的序列号等。这时在内存中一定存在这些数据。用Alt+M打开内存窗口,在这个窗口中搜索知道的关键数据。用光标选择这些数据同样下内存中断,这种方法更容易找的关键的数据。
优点:断点是直接面向关键数据的,所以比较容易到核心部分。
缺点:内存断点重新运行后会消失,干扰比较多。

第四  硬件断点(跟踪关键标志的断点)
硬件断点是Olldbg所特有的断点,他不会因为重新运行就销毁,只要不删除。跟踪这个程序时就有效。但他在98系统下会不起作用。
硬件断点是根据关键标志回逆到关键代码的好方法。下中断的方法和内存断点的方法相同,有三个方式〔硬件访问〕、〔硬件写入〕、〔硬件执行〕。一般用前2个。他也同样有内存断点的特性,所以可以用内存断点的地方也可以用硬件断点。这里介绍利用他来跟踪注册标志的使用方法,一般软件的注册都用到了标志比较。即在内存地址中有一个标志,在判断是不是注册时比较标志的值。不同的值表示不同的注册状态。这个标志的地址一般比较固定。根据这个特点可以下硬件断点来跟踪标志位是什么地方被标志的。
方法:在转存窗口中选择到标志存放的内存地址处,然后选择标志值。下〔硬件写入〕中断(根据标志的字节下不同的长度)。重新运行程序你会发现Ollydbg会不断的中断在这个标志的内存地址处。在功能菜单的〔调试〕选项下选择〔硬件断点〕就打开了硬件断点的窗口,在这个窗口中选择〔跟踪〕,这时转存窗口就会来到被下中断的内存地址处。运行程序跟踪内存地址中的值就会知道被赋标志的代码,跟踪到计算的核心。〔硬件访问〕的使用可以知道程序在运行时多少地方用到了这个注册标志。对于破解复杂效验的程序十分的有效。
直接在命令栏里下bh ****硬件断点

以上只是我的总结,本想每个方法用一段例子,无奈时间有限,请大家原谅了。
当然,还是许多的下中断的方法,本人水平有限,不能一一尽述。只当抛砖引玉,请大侠们赐教。


                                    Fxyang
                            属于中国破解组织[OCN][BCG][FCG]
                                       2003-10-1

欢迎!我高兴地为你推出命令行插件的初始版本,功能很有限但非常适用。它的源代码是自由的,因此你可以添加任意的命令和修改现存的功能。插件所使用的 OllyDbg 新函数在PDK 1.08中有详细的描述。 注意该插件不能工作在1.08及以前版本的 OllyDbg中。

 

命令行插件的快捷组合键:Alt+F1。目前,它支持如下的命令:

 

 

表达式  

CALC 表达式     计算表达式的值

? 表达式        同上

表达式 (第一个字符不能是字母)   同上

WATCH 表达式    添加监视

W 表达式        同上

反汇编器        

AT 表达式       在反汇编中跟随

FOLLOW 表达式   同上

ORIG    前往实际的 EIP

*       同上

转存和堆栈      

D 表达式        在转存中跟随

DUMP 表达式     同上

DA [表达式]     转存为汇编格式

DB [表达式]     转存为十六进制(hex)字节格式

DC [表达式]     作为ASCII 文本转存

DD [表达式]     作为地址(堆栈格式)转存

DU [表达式]     作为 UNICODE 文本转存

DW [表达式]     转存为十六进制(hex)字格式

STK 表达式      在堆栈中跟随

汇编    

A 表达式 [,命令]        在地址处汇编

标号和注释      

L 表达式, 标号  为地址指派符号标号

C 表达式, 注释  在地址处作注释

断点命令        

BP 表达式 [,条件]       在地址处设置 INT3 断点

BPX 标号        在当前模块内部的每个调用外部'标号'处设置断点

BC 表达式       删除地址处的断点

MR 表达式1 [,表达式2]   设置访问范围的内存断点

MW 表达式1 [,表达式2]   设置写入范围的内存断点

MD      移除内存断点

HR 表达式       在访问地址处设置一个字节的硬件断点

HW 表达式       在写入地址处设置一个字节的的硬件断点

HE 表达式       在执行地址处设置硬件断点

HD [表达式]     移除地址处的硬件断点

跟踪命令        

STOP    暂停执行

PAUSE   同上

RUN     运行程序

G [表达式]      运行到地址处

GE [表达式]     跳过意外的句柄并运行到地址处

S       单步进入

SI      同上

SO      单步跳过

T [表达式]      跟踪进入到地址处

TI [表达式]     同上

TO [表达式]     跟踪跳过到地址处

TC 条件 跟踪进入到条件处

TOC 条件        跟踪跳过到条件处

TR      执行到返回

TU      执行到用户代码

OllyDbg 窗口    

LOG     查看日志窗口

MOD     查看可执行模块

MEM     查看内存窗口

CPU     查看 CPU 窗口

CS      查看调用堆栈

BRK     查看断点窗口

OPT     编辑选项

杂项命令        

EXIT    关闭 OllyDbg

QUIT    同上

OPEN [文件名]   打开待调试的可执行文件

CLOSE   关闭调试的程序

RST     重新载入当前程序

HELP    显示本帮助

HELP OllyDbg    显示 OllyDbg 帮助

HELP API函数帮助完整文件名      显示 API 函数帮助

命令不区分大小写, 中括号中的参数是可选的。表达式可以包含常量, 寄存器和内存参考并支持所有标准的算术和逻辑操作符。默认情况下,所有常量都是十六进制的数。要标记为十进制的常量,紧接着使用十进制标明。例如:

 

?2+2 ?计算该表达式的值;

 

?AT [EAX+10] ?在地址EAX+0x10处开始的双字长度内存的内容反汇编;

 

?BP KERNEL32.GetProcAddress ?设置 API 函数断点。注意:你仅可以在基于NT 系统的系统 DLL 上设置断点;

 

?BPX GetProcAddress ?在当前所选模块中的每个调用外部函数 GetProcAddress 处设置断点;

 

?BP 412010,EAX==WM_CLOSE - 在 0x412010 处设置条件断点。当 EAX 的值等于WM_CLOSE 时程序暂停。

 

你可以在 OllyDbg 帮助中找到 OllyDbg  支持的完整的表达式描述。

 

译者注:由于本人的“E”文水平有限,加之对该插件和与之相关的ollydbg 软件以及其他知识的理解深度不足,译文难免在很多地方产生歧义甚至在语义上根本不通顺,鉴此,欢迎各位专业人士积极修正。汉化:张小平 网络浪子工作室

 

 

如何添加新命令:

要添加新命令,首先你必须在数组 cmdlist[] 里注册它。数组的元素是结构类型的 t_command. 第一个元素是大写字母的命令,第二个元素描述它的操作数。当前版本的插件只支持三种类型的操作数:

 

A ?在 address 中使用值的地址表达式 address. 插件检查为它已分配内存的指针。

 

a ?等同于 A 但可选。如果未指定表达式,address 被置为0。

 

V ?在value 中任意类型的表达式。如果你期望整数表达式,检查 value.dtype 是 DEC_DWORD 并使用 value.u 的内容。

 

v ?等同于 V 但可选。如果未指定表达式,value.dtype 是 DEC_UNKNOWN 并 value.u 为 0。

 

S - 在 string 中的 ASCII 串,可能为空。

 

第三个元素是将被跳过命令过程的常量,第四个是执行命令的过程地址:

 

typedef int t_exefunc(char *answer,ulong parm);

 

如果可识别命令的所有操作数被正确解析和评估,插件调用该过程。首先是变元,answer,是长256个字节的串指针。命令被执行后它的内容会被显示在命令行窗口中。第二个变元是从 cmdlsit[] 取出的参数。如果函数的返回值为 0,说明命令正确执行并将其添加到历史列表中。


ollydbg1.10汉化版有些地方意思翻译得不准确

例如“调试选项”中的"sfx"中的“停止在自释放解释器的入口”这句话的翻译根本就是错的。原文是Stop at entry of self-extractor,原文意思为“OllyDbg doesn't attempt to trace real entry.”就是“Ollydbg不试图跟踪真实入口”。还有一些类似的翻译也是错的。容易引起误解,建议大家还是用英文原版,不懂的看帮助文件。
请教:怎么在OLLYDBG中保存当前正在调试的程序?
在代码区修改程序后,点右键-》复制到可执行文件-》选择部分,在弹出的窗口里点右键-》保存文件。起个文件名吧。
OllyDbg 常用快捷热键
聆风听雨整理
===============================================================
打开一个新的可执行程序 (F3)

重新运行当前调试的程序 (Ctrl+F2)

当前调试的程序 (Alt+F2)

运行选定的程序进行调试 (F9)

暂时停止被调试程序的执行 (F12)

单步进入被调试程序的 Call 中 (F7)

步过被调试程序的 Call (F8)

跟入被调试程序的 Call 中 (Ctrl+F11)

跟踪时跳过被调试程序的 Call (Ctrl+F12)

执行直到返回 (Ctrl+F9)

显示记录窗口 (Alt+L)

显示模块窗口 (Alt+E)

显示内存窗口 (Alt+M)

显示 CPU 窗口 (Alt+C)

显示补丁窗口 (Ctrl+P)

显示呼叫堆栈 (Alt+K)

显示断点窗口 (Alt+B)

打开调试选项窗口 (Alt+O)
我想知道在OD中如何下地址断点
比如bpx 5022e2
是不是在命令行中?有其他办法没?
命令行在98下不能用


ctrl+g输入地址,F2下断
请问用ollydbg如何跟踪被跟踪进程的子进程

我在跟踪一个程序的时候,它用CreatProgressA产生了一个子进程,然后关闭父进程,请问我如何在子进程的入口处下断?请高手指教!
指令为:
00454476   50               PUSH EAX
00454477   6A 00            PUSH 0
00454479   E8 C218FBFF      CALL kernel32.CreateProcessA

00454479处堆栈内容如下:
0012FD40   00000000  |ModuleFileName = NULL
0012FD44   00956B94  |CommandLine = "C:/QXJDGL/QXJDGL.DLL 2"
0012FD48   00000000  |pProcessSecurity = NULL
0012FD4C   00000000  |pThreadSecurity = NULL
0012FD50   00000000  |InheritHandles = FALSE
0012FD54   00000020  |CreationFlags = NORMAL_PRIORITY_CLASS
0012FD58   00000000  |pEnvironment = NULL
0012FD5C   00000000  |CurrentDir = NULL
0012FD60   0012FD84  |pStartupInfo = 0012FD84
0012FD64   0012FD74  /pProcessInfo = 0012FD74

飞叶流枫回答:
C:/QXJDGL/QXJDGL.DLL 2,这个程序是一个EXE程序,你可以改入口点为INT 3,也就是CCh,将OD设为最终异常处理程序。当程序启动的时候会产生一个INT 3非法操作,你点调试就可以中断在QXJDGL.DLL中了。

转OllyDbg实用技巧六则

标题: OllyDbg实用技巧六则

作者:  dOSKEY lEE

关键词: OllyDbg、OD、技巧

1、让跳转路径显示出来

   打开Options/Debugging Option。弹出Debugging Option对话框,选择CPU页,选定“Show direction to jumps”、“Show jump path”和“Show grayed path if jump is not taken”。如此以来在  Disassembler窗口就会显示跳转的路径了。

2、让OD显示MFC42.DLL中的函数

   如果程序是用MFC进行的动态编译,那么在OD中将只能显示MFC42.DLL中的函数为:

00410E40  |.  E8 43000000  CALL    <JMP.&MFC42.#1576> 1576是函数在MFC42.DLL中的序号。打开Debug/Select import libraries,单击弹出的对话框中“Add”,在弹出的打开文件对话框中选择“MFC42.LIB”并打开,重新载入MFC程序,你就可以看见函数名称变为:

00410E40  |.  E8 43000000  CALL    <JMP.&MFC42.#1576_?AfxWinMain@@Y>

IDA中分析出了来的东西一样了!呵呵,以后不用等待IDA的“细嚼慢咽”也可以轻松搞定MFC程序了。其他的DLL类似,如果有序号,可以在VC的LIB目录中找到相关的.LIB文件,加到OD中便可。如果你没有“MFC42.DLL”,你可以的到看学论坛的下载区找,我已经上传到那里了。

3、让OD轻松躲过“ANTI-DEBUG”
  
   很多“ANTI-DEBUG”的程序都是在程序开始时来检查是否安装调试器的。用这种特性我们可以轻松的用OD的“Attach”绕过检查部分。如“X语言”,如果你哟内TRW2K/S-ICE/OD 直接加载它的话,程序回警告你安装了调试器并结束。但是我们在“X语言”开启后再运行OD,并用“Attach”系上它就就可以了,轻松通过检查。而且在OD系上它后仍然可以用CTRL+A进行分析。如此一来,快哉!:)

4、轻松对付调用“MessageBoxA”以及类似的模态对话框的程序
    
   很多人都认为OD不好拦截“MessageBoxA”这类API函数。其实我们有个很简单的办法将API拦截下来,并且快速找到比较地点/主算法地点。首先用OD加载目标程序,如果不能加载,用上面的方法“Attach”目标程序。然后,F9运行目标程序,并且有意让目标程序显示“ MessageBox”,然后切换到OD中,F12暂停,如

0041201F  |>  53            PUSH    EBX                    ; /Style
00412020  |.  57            PUSH    EDI                    ; |Title
00412021  |.  FF75 08       PUSH    [ARG.1]                ; |Text
00412024  |.  FF75 F4       PUSH    [LOCAL.3]              ; |hOwner
00412027  |.  FF15 A8534100 CALL    DWORD PTR DS:[4153A8]  ; /MessageBoxA
0041202D  |.  85F6          TEST    ESI, ESI              ; 停在此处
0041202F  |.  8BF8          MOV    EDI, EAX
00412031  |.  74 05         JE      SHORT 1551-CRA.00412038

F8单步一下,切换到“MessageBox”中,确认,被OD中断。我们可以看见上面的代码41201F处有一个“〉”,说明可以从某段代码跳转到此处,我们选择41201F这一行,在“Information”栏看见一句“JUMP FROM 412003”,右键单击,选择“GO TO JUMP FROM 412003”。回到412003,一般都是条件跳转,上面的内容就是比较的地方啦。:)

5、使用OD的TRACK功能
    
   OD拥有强大的TRACK功能,在分析算法时十分有用。首先我们要设定OD的TRACK缓冲区大小,选择Option/Debugging Option,在弹出的对话框中选择TRACK页,“Size of run track buffer(byte/record)”,缓冲区大小,当然约大约好。其他的设置在我以前的OLLYDBG.INI中都已经设置好了。然后,开启目标程序,在DEBUG中选择“Open or clear run track”。然后我们就可以用CTRL+F11或CTRL+F12开启“Track into”和“Track over”了。当我们暂停程序的时候,可以用小键盘上的“+”,“-”,“*”来控制TRACK功能了。

“Track into”和运行类似,但是记录所有指令以及寄存器变化。并且会自动进入所有的CALL中。
“Track over”和“Track into”类似,但是不进入CALL
“+”用来显示TRACK缓冲区中的下一条指令
“-”用来显示TRACK缓冲区中的上一条指令
“*”用来发返回当前指令

6、不是技巧的技巧
   当你遇到花指令的时候一定会很头痛。但是如果你用OD进行分析的时候就会轻松得多。OD会自动标识出无效指令,即花指令。如果OD没有正确识别,你还可以用CTRL+↑/↓来单个 字节的移动。可以很有效的识别出花指令的所在。

加密与解密 调试篇 动态调试技术 (一)-OllyDbg的使用 TraceMe的逆向 我们进行载入的时候 主要返回的是CPU窗口 是最主要的窗口 对应面板的C。 阅读详情

相关推荐

反汇编:OllyDBG/objdump分析

反汇编中的第四列:是强大的od反汇编工具为我们提供的注释功能,能看到一些windows api,或是一些可读的信息。反汇编中的第三列:是我们研读的目标了,它是我们需要学习型的汇编语言;ALT+F9:执行到用户代码,可以快速地从系统领空返回到程序领空。CTR+F9:执行到返回,会在第一个遇到的RET指令暂停。F2:在光标处设置断点,再按一次删除光标处的断点。F8:单步步过,遇到CALL等函数会跳过,不进入。反汇编中的第二列:是所谓的汇编语言中的操作码;反汇编中的第一列:是指令在内存中存放的地址;

zxf347085420的博客 984

Ollydbg 入门、使用 Ollydbg 从零开始 Cracking、玩玩破解,写给新人看

OllyDBG 入门、使用OllyDbg从零开始Cracking

freeking101的博客 4万+

【愚公系列】2023年06月 逆向分析之Ollydbg(基本介绍和使用)

Ollydbg是一个x86体系结构的反汇编器和调试器,它是一款非常受欢迎的调试工具,通常用于软件逆向工程和漏洞发现过程中。可以反汇编并调试x86二进制文件支持多种反汇编风格,如汇编、C、Pascal等支持多种调试功能,如单步执行、断点、内存查看和修改等可以在不影响原始代码的情况下修改程序内容,并重新运行程序打开Ollydbg并加载要调试的二进制文件设置断点,例如在特定的指令处停下来或在某个内存位置处停下来运行程序并观察断点何时触发在程序暂停时查看寄存器、堆栈、内存和其他相关信息。

愚公智库 5万+

网络安全|渗透测试入门学习,从零基础入门到精通—动态分析技术工具OllyDbg界面介绍

OllyDbg(简称“OD”)是由leh Yuschuk(网上查了很久,竟然很少OD作者的消息。在一个国外站点上,我零星地找到一点资料:Oleh Yuschuk: 可能是前苏联->俄罗斯人,前苏联解体后移民德国且一直住在德国一个古老的小城,具体的信息查询不到)编写的一款具有可视化界面的用户模式调试器,可以在当前各种版本的 Windows上运行NT系统架构更能发挥OllyDbg 的强大功能。

Jum的博客 7712

ollydbg反汇编工具

OllyDebug,简称OD,一种反汇编软件,动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器。OllyDebug的使用界面是可视化操作。OD,已代替SoftICE成为当今最为流行的调试解密工具了.同时还支持插件扩展功能,是最强大的调试工具。基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug。OllyDbg 支持所有 80x86、奔腾、MMX、3DNOW!、Athlon扩展指令集、SSE指令集以及相关的数据格式,但是不支持SSE2指令集。

ollydbg汉化版带插件

ollydbg汉化版带插件 调试反汇编必备

OllyDbg 使用笔记 (十)

OllyDbg 使用笔记 (十) 参考 书:《加密与解密》 视频:小甲鱼 解密系列 视频 这个程序可以从标题栏的“ unregistered”入手,查找所有参考文本字串,搜索 “unregistered” 可以找到这段代码: 可以发现004046E0~0040470C 是一段函数。 我们可以发现je跳转比较关键,在这里可以先尝试让je不跳转。但是这样只能使标题中不会出现(unregistered),被屏蔽的功能还是不能使用。 直接改je跳转不行,我们可以看看引起je跳不跳转

billvsme的专栏 4025

NX二次开发编译时dll自动数字签名及拷贝

在UG5.0开始,所有基于UG二次开发的DLL都要“签名”后才能被客户端上正版的NX调用。

菜鸟爱飞不飞的博客 2684

【逆向分析】扫雷

扫雷程序分析与游戏规则修改

网络安全从业者的学习笔记 2561

物理专业书库模板(1):物理学书单(适合物理专业本科生、研究生、科研工作者、物理爱好者...)

物理专业书库模板(1):物理学书单(适合物理专业本科生、研究生、科研工作者、物理爱好者...) 求赞求喜欢求分享,建议关注,防止文章丢失。

hepyang的博客 2179

Win11+Ubuntu18.04+Ubuntu20.04三系统安装与卸载

以下情况均为个人情况:1.插入启动 U 盘后,登录时可以按F12(拯救者Y7000,不同电脑不同)进入BIOS,选择从启动盘启动。2.。3.5.在win基础上,安装第一个Ubuntu系统后,系统启动界面类似如下第一张图,Ubuntu不显示版本号。安装第二个Ubuntu系统后,系统启动界面如下第二张图,如果想更改启动项的名称,可自行查阅相关资料。

weixin_61686291的博客 2539

OllyDBG 入门系列(一)-认识OllyDBG

一、OllyDBG 的安装与配置 OllyDBG 1.10 版的发布版本是个 ZIP 压缩包,只要解压到一个目录下,运行 OllyDBG.exe 就可以了。汉化版的发布版本是个 RAR 压缩包,同样只需解压到一个目录下运行 OllyDBG.exe 即可: OllyDBG 中各个窗口的功能如上图。简单解释一下各个窗口的功能,更详细的内容可以参考 TT 小组翻译的中文帮助: 反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单 界面选项->隐藏标

子曰小玖的博客 6523

如何制作poster以及下载poster模板

目录 前言 一、poster 二、制作软件 1.常用软件 2.专用工具 3.模板下载网址 总结 前言 随着会议的发展,参与国际会议成为研究工作展示的重要途径。poster逐步成为一个方面专家交流的重要工具。本文主要简单介绍一些poster的制作工具。 一、poster Paper, presentation, poster是deadline期间作者的三座大山。poster的内容较小,但内容都是论文中的干货。 二、制作软件 一般来说,制作poster使用PowerPoint.

yiyang14的博客 2万+

OllyDbg设置

字体修改 自带字体太小了,可以改大一些

若风 6610

2025小红书跳转卡片实战指南:从零搭建独立后台与自动化发卡系统

本文提供了一份2025年小红书跳转卡片的实战搭建指南,详细解析了独立后台系统的核心架构与自动化发卡流程。文章从零开始,手把手教你使用Node.js、Vue.js等技术栈构建包含后台管理、用户制卡中心与前端交互的完整系统,旨在帮助运营者实现合规引流,并掌握数据自主权与自动化运营能力。

weixin_29234423的博客 518

10、利用智能合约实现公平的私有集合交集

本文探讨了利用智能合约实现公平的私有集合交集(PSI)的多种协议,重点分析了协议 Π 和 Π∗ 的气体成本与性能特点。同时对比了包括 Justitia 和 Anesidora 在内的现有方案,突出了仅使用智能合约实现硬币补偿公平性的优势。文中还介绍了相关密码学基础、安全模型及隐私保障机制,为在不同应用场景下选择高效、安全的 PSI 协议提供了理论支持和实践指导。

linux的博客 96

OD(Ollydbg)简介

ollydbg简介: Ollydbg 通常称作OD,是反汇编工作的常用工具,OD附带了200脱壳脚本和各类插件,功能非常强大,可以过SE,VMP3.0,深受逆向圈内人士的喜爱 OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。基本上,调试自己的程序因为有源码,一般用vc,破解别人的程序用OllyDebug。 这里面地

am_03的博客 9679

MAX30102心率血氧传感器原理图设计,已量产(e-Health传感器)

在最近的便携健康监测设备项目中,我们采用了集成算法的 MAX30102 心率血氧模块 —— 这类带内置 MCU 算法的传感器能直接输出心率 / 血氧数值,大幅降低了主控资源占用。但硬件电路的稳定性直接决定了 PPG 信号的采集精度,下面结合实际项目里的原理图,拆解下这个模块的设计细节。

不脱发的程序猿 1281

OllyDebug的使用方法. IDA Pro分析程序的控制流图,可以找到不同的函数入口点. 在汇编代码中定位特定函数可能是一个耗时且复杂的过程

OllyDbg” 是一个流行的Windows平台上的汇编级调试器,用于调试和分析二进制程序,尤其是用于逆向工程目的。:首先,您需要在您的计算机上安装OllyDbg。完成安装后,打开程序。:在OllyDbg中,通过点击文件菜单中的“打开”来加载您想要调试的可执行文件(.exe)。:加载文件后,OllyDbg将显示程序的汇编代码。您可以浏览代码,查看不同的部分和指令。:为了调试程序,您可能想在特定的指令处设置断点。这可以通过右击代码行并选择“设置断点”来实现。

chenhao0568的专栏 3584

在 LangGraph 中集成 Skills 增强智能体能力

LangGraph 的核心是通过**状态机 + 节点(Node) + 工具(Tool)**来编排智能体流程,你可以把 Skills 理解为“封装好的工具或可复用的任务流”,下面是一套可落地的集成方案。

lpfasd123的博客 1180

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

揭秘最为知名的黑客工具之一:OllyDbg,从零基础到精通,收藏这篇就够了!

在程序员的世界里,尤其是搞安全的,调试器那就是吃饭的家伙。OllyDbg,这货绝对是32位汇编级调试器里的扛把子,逆向分析、漏洞挖掘、恶意软件解剖,哪哪都少不了它。但是,请务必记住,技术是把双刃剑,一定要在法律允许的范围内使用 OllyDbg。合理利用 OllyDbg,你就能深入理解程序的内部机制,发现潜在的安全漏洞,增强软件的安全性和稳定性,成为一名真正的安全专家!让你像看电影一样,一步一步地跟踪代码,设置断点,查看寄存器,程序的一举一动都逃不过你的眼睛。在你想暂停的地方设置断点,程序就会乖乖停下来。

Libra1313的博客 2485

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

破解入门【OllyDebug爆破程序】

逆向破解这块我也是个刚起步的小菜,入门都还算不上吧,看了点基础教程,先动手练习一下增加点兴趣。嘿嘿 工具: peid //查壳工具 OllyDebug //反汇编、动态调试工具 简称OD 壳的概念: 作者编好软件后,编译成exe可执行文件。 1.有一些版权信息需要保护起来,不想让别人随便改动,如作者的姓名等,即为了保护软件不被破解,通常都是采用加壳...

u011105442的专栏 3288

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

GalGame汉化教程(一)——Ollydbg修改编码和字体

汉化的软件的语言为日语

madonghyu的博客 3万+

四、OllyDbg学习

一、简介 OD,是一个反汇编工具,又叫OllyDebug,一个新的动态追踪工具,将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。 二、安装 下载链接:https://down.52pojie.cn/Tools/Debuggers/ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P3aTSHdf-1617160312677)(https://i.loli.

Zxy_space的博客 2419
上一篇: 江湖小挂
下一篇: 关于OD万能断点设置 - [转贴]
yesloo
博客等级 码龄21年 3粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值