




已阅读5页,还剩20页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
OllyDbg的help-怎样开始调试(翻译)最简单的方法是启动OllyDbg,点击File|Open,然后选择你想调试的程序。程序需要命令行参数输入对话框下方的文本栏。重新开始调试最后一个程序的快捷键是Ctrl+F2,并且OllyDbg使用相同的参数。你也可以点选历史记录。把程序拖入OllyDbg也可以开始调试。当然,当启动OllyDbg时,你在命令行中也能指定被调试的程序名和参数。比如:你可以创建桌面快捷方式指向OllyDbg,选择属性,到快捷方式,把程序名加入目标栏。每次你双击这个快捷图标,OllyDbg自动装载被调试程序。你可以attach OllyDbg到某个正在运行的进程。点击File|Attach,从列表中选择该进程。注意:当你关闭OllyDbg,这个进程也会终止。不要试图attach系统进程,这很可能使系统完全SI机。(事实上,大多数情况下,OS不允许attach敏感进程)OllyDbg能作为just-in-time debugger。这需要在注册表中登记。点击Options|Just-in-time debugging,在对话框中按“Make OllyDbg just-in-timedebugger”。现在,当一些程序崩溃,你会被询问是否调试它。这样,操作系统可以启动OllyDbg并直接停在异常发生处。如果你选择attaching withoutconfirmation,OllyDbg不会询问直接启动。要恢复原来的just-in-timedebugger,在出现的对话框中按相应的按纽就行了。其它方法还有,把OllyDbg加入可执行文件的弹出式菜单。点击Options|Add toExplorer,按“Add OllyDbg to menu in Windows Explorer”。以后你可以右击可执行文件点选OllyDbg。这个选项创建注册表键HKEY_CLASSES_ROOT/exefile/shell/Open with OllyDbg andHKEY_CLASSES_ROOT/exefile/shell/Open with OllyDbg/commandOllyDbg可以调试控制台(基于文本)程序。注意:WindowsNT或Windows2000下,你必须有管理员权限OllyDbg的help-通用快捷键(翻译)Golbal shortcuts(通用快捷键)这些快捷键在OllyDbg中通用,不依赖于当前活动窗口。Ctrl+F2-OllyDbg重置,重新开始调试。如果没有活动程序,OllyDbg装入历史列表中的第一个程序。OllyDbg重置会释放内存移除硬断点。Alt+F2关闭被调试的程序。如果程序还在活动状态,你会被询问是否执行该操作。F3显示“Open 32-bit .exe file”对话框,这里可以选择可执行文件和指定参数Alt+F5使OllyDbg显示在屏幕最前方。如果被调试程序中断时显示窗口遮住OllyDbg的一些区域,不继续运行又不能移动或最小化它。激活OllyDbg按Alt+F5可以解决。如果你再次按Alt+F5,OllyDbg会恢复为普通窗口。OllyDbg的当前状态显示在状态栏。F7step into,执行下一条简单命令。如果该命令是一个函数调用,进入调用函数内部。如果命令有REP前缀,执行该命令的一步操作。Shift+F7与F7相同,除了当被调试程序遇到某些异常时,首先尝试调用程序自己的异常处理过程。CtrlF7animate into,一步一步执行程序,也进入函数调用(就象你一直按着F7,不过更快)。当你执行一些单步或继续命令,程序到达有效断点,一些异常发生时,Animation终止。每步执行,OllyDbg重画所有窗口。要加速animation,关闭所有窗口而不要只改变现有窗口的大小。终止animation,也可按Esc。F8step over,执行下一条简单命令。如果该命令是一个函数调用,立刻执行完该函数(除非函数内部有断点或产生异常)如果命令有REP前缀,执行所有重复操作,并停于下一条命令。Shift+F8与F8相同,除了当被调试程序遇到某些异常时,首先尝试调用程序自己的异常处理过程。Ctrl+F8animate over,一步一步执行程序,但不进入函数调用(就象你一直按着F8,不过更快)。当你执行一些单步或继续命令,程序Animation到达有效断点或异常发生时,Animation终止。每步执行,OllyDbg重画所有窗口。要加速animation,关闭所有窗口而不要只改变现有窗口的大小。终止animation也可按Esc。F9继续执行程序。Shift+F9与F9相同。除了当被调试程序遇到某些异常时,首先尝试调用程序自己的异常处理过程。Ctrl+F11run trace into,一步一步执行程序,要进入函数调用,记录寄存器内容。Run trace 不重绘CPU窗口.F12-悬挂所有线程以停止程序执行。最好用继续键和菜单命令(像F9)恢复执行线程,而不要用其它手动方法恢复。Ctrl+F12run trace over,一步一步执行程序,不进入函数调用,记录寄存器内容。Run trace不重绘CPU窗口。ESC如果animation或跟踪正在进行,将被终止。如果CPU窗口显示跟踪时的数据,此时转为显示实际数据。Alt+B打开或恢复Breakpoint窗口。这里可以编辑,删除和观察断点。Alt+C打开或恢复CPU窗口。Alt+E打开或恢复模块列表Alt+E打开或恢复Call stack窗口。Alt+L打开或恢复Log窗口。Alt+M打开或恢复Memory窗口。Alt+O打开Option对话框Ctrl+P打开Patch窗口。Ctrl+T打开Pause run trace对话框AltX中断OllyDbg。多数窗口可以使用下列快捷键:Alt+F3关闭活动窗口。Ctrl+F4关闭活动窗口。F5最大化或恢复活动窗口。F6激活下一个窗口。Shift+F6激活前一个窗口。F10打开激活窗口或面板的右键菜单。LeftArrow左移一个字符。Ctrl+LeftArrow左移一行。RightArrow右移一个字符。Ctrl+RightArrow右移一行。OllyDbg的help分析模块介绍(翻译)分析OllyDbg集成了快速超强的代码分析器。装载它,可以用弹出式菜单或者CPU窗口的反汇编栏按Ctrl+A或者在执行模块选“Analyze all modules”。分析器非常有用。它在数据中分辨代码,标记入口点和jump的目标,辨认switchtables,ASCII和UNICODE字符串,定位过程、循环、高级switch语句和解码标准API函数参数(看范例)。OllyDbg的其它部分也广泛用于数据分析。这怎么可能呢?我稍微介绍一下原理。首先,OllyDbg反汇编代码区所有可能的地址,记下所有发现的调用及指向的目标。当然,许多这样的调用不正确,但是未必会有两个错误的调用指向同一条命令,并且三个或三个以上更不可能。这样,三个或更多调用指向同一地址,我就确信该地址是经常使用的子过程入口。从这个入口开始,我跟踪所有的跳转和调用,反复操作。这种方法使我99.9确定所有命令。然而,某些字节不在这条链中,我采用大约20个更高效的方法(最简单的如:“MOV RA,Ra是无效命令).过程检测也简单。过程,从分析器的角度看,就是从入口开始的代码的连续区域,(理论上)可以到达其它命令(除NOP或对齐填充外)。你可以指定三种识别级。Strict级严格确认一个入口和至少一个出口。heuristical级,分析器尝试确认入口。如果你选择fuzzy级,或多或少相容的代码区被分离为过程。现代编译器把过程分成几个部分作公用代码优化。这种情况下,fuzzy级特别有用!然而,误解的概率也相当高。类似的,loop是一个封闭的连续命令序列,这里最后的命令跳到开头、一个入口几个出口。Loop相当于高级操作语言中的do,while和for。OllyDbg能认识任何复杂的嵌套循环。在反汇编区,他们用长长的大括号标记。如果入口不是循环的第一条命令,OllyDbg用个小三角形作标记。实现switch语句,多数编译器把switch变量装入寄存器,然后减去一部分,像下面代码序列一样:MOV EDX,SUB EDX,100JB DEFAULTCASEJE CASE100 ; Case 100DEC EDXJNE DEFAULTCASE. ; Case 101这些序列也可能包含一级或两级switch表,直接比较,优化,填充等等。如果你深入研究比较和跳转树,很难说哪一条命令是某个case语句。OllyDbg为你代劳。它标记所有的case语句,包括default,甚至尝试猜测case的意思,如A,WM_PAINT 或者 EXCEPTION_ACCESS_VIOLATION。如果命令序列不修改寄存器(只由比较命令构成),那么不大可能是switch语句,但可能是if嵌套:if (i=0) .else if (i=5) .else if (i=10) .让OllyDbg解码if嵌套为switch,选择Analysis1中相应的选项。OllyDbg预置超过1900个常用API函数的描述。包括KERNEL32, GDI32, USER32,ADVAPI32, COMDLG32, SHELL32, VERSION, SHLWAPI, COMCTL32, WINSOCK,WS2_32 和 MSVCRT。你也可以加入自己的描述。如果分析器遇到已知函数名的调用(或跳转到该函数),它尝试解码调用跟前的PUSH命令。因此,你可以粗略翻译该调用的功能。OllyDbg也内置大约400个标准C函数的描述。如果你利用新库,我建议你分析前先扫描对象文件。这种情况下,OllyDbg也会解码已知的C函数参数。如果选项“Guess number of arguments of unknown functions”被设置,分析器尝试确认调用过程进栈的双字数目,并标记他们为参数Arg1,Arg2等等。注意:如果有寄存器参数,OllyDbg还是不认识也不包括在上面的统计中。分析器采用了一个安全的方法。例如,它不分辨无参数过程和返回前用POP恢复寄存器代替舍弃参数的case语句。然而,能分辨出的函数数目相当多,并非常有助于提高代码的可读性。分析器能跟踪寄存器的值。现代优化编译器,特别是面向Pentium的,经常把常量和地址装入寄存器便于重复使用或减小内存占用空间。如果一些常量装入寄存器,分析器会注意它,并用于解码函数及其参数。还能执行简单的算术计算跟踪push和pop命令。分析器不能区别不同类型的名字。如果你用已有的名字命名一些函数,OllyDbg会解码所有该地址的调用为原过程。WinMain,DllEntryPoint和WinProc是特殊的预定义名。你可以使用这些标号标记主程序入口,DLL入口指针和window过程(注意:OllyDbg不会检查用户定义标号的唯一性)。当然,最好的方法是显示已定义的参数。非常不幸,没有一般的规则用于100的准确分析。有些情况下,例如当模块包含p-代码或者代码区嵌入大量数据,分析器可能认为部分数据是代码。如果统计分析显示代码可能被打包或加密,分析器会警告你。如果你想用hit跟踪方式,我建议你不要用fuzzy分析方式,否则断点被设置在被误认为代码的数据上的几率很高。自解压文件通常在主体代码外有解压代码。如果你选择SFX选项“Extend codesection to include self-extractor”,OllyDbg会扩大代码区,形式上允许分析它并跟踪。OllDbg的一般原理(翻译)部分我希望你熟悉80x86兼容CPU的内部结构,并且有汇编写程序的经历。我也希望你熟悉Microsoft Windows.OllyDbg是一个单进程多线程的“机器代码级”debugger,用于Windows环境下的32位程序。它允许你debug和patch PE格式的可执行程序。OllDbg仅仅使用列入文档的Win32 API调用,所以可用于下一代32位Windows系统。OllDbg看来也可工作于Windows XP,但是我没有详尽的测试,因此不能保证功能完整。OllyDbg不是面向编译器。它不含特别的规则显示某些情况下特定的编译程序生成哪些代码序列。因此,你可以一样对待任何编译器编译的,或者汇编书写的任何代码。OllyDbg与被调试的程序同时工作。你可以浏览代码和数据、设置断点、停止或继续线程,甚至运行期修改内存(有时这叫作软调试方式)。当然,如果被请求的操作不是最基本的,OllyDbg就会短时暂停程序,但这对用户透明。有时不在调试状态运行的程序会意外崩溃。OllyDbg,这个“及时”debugger,会指出异常发生的位置。OllyDbg强烈面向模块。模块这里指启动时加载的或动态加载的主执行文件或动态连接库。在调试区,你可以设置断点,定义新标号和注释汇编语句。当一些模块从内存卸载后,OllyDbg保存这些信息到扩展名为.UDD名字同被调试模块的文件中。下次当装载这些模块时,OllyDbg自动复原所有调试信息,不论程序是否使用这些模块。比如:你调试使用Mydll的程序Myprog1,并且在Mydll中设置一些断点。那么当你调试Myprog2时,也使用Mydll,你会发现所有在Mydll中的断点还在那里,不管Mydll是否装载在不同的位置。一些调试器把被调试进程的内存视为单个2*32字节区域。OllyDbg做了别的处理方法。内存由几个独立的块组成。任何内存操作都限制于块内。在大多数案例中,这工作优良并且容易调试。但是模块包含几个执行部分等等,你将不能立刻看到整个代码。然而这些例外不常见。OllyDbg是内存消耗大户。启动时就要分配3MB内存,甚至更多。每次分析,备份,跟踪或文件转储另外再分配。所以当你调试大工程时消耗40或60M内存很正常。要有效的调试一些无源代码的程序,你首先必须理解它是如何工作的。OllyDbg提供了大量的手段使理解更容易 本帖最后由 渔歌子 于 2005-12-22 23:16 编辑 转Draren总结的ollydbg v1.09d 中文版使用说明一点一滴的积累,也就会了.之所以选择ollydbg1.我的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 FuZzYBiTSoftIce can trace application messages. And Olly?And so does OllyDbg. Thats a very “hidden feature”. I guess it is sooo useful.1. Open program2. Names window CTRL+N in CPU Window3. Find User32.TranslateMessage API4. right click/FindReferences5. conditional breakpoint SHIFT+F46. expression: MSG7. Log function arguments: AlwaysIf 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_COMMANDDo it in this fashion:1. Open program2. Names window CTRL+N in CPU Window3. Find User32.TranslateMessage API4. right click/FindReferences5. conditional breakpoint SHIFT+F46. Condtion box: MSG=WM_COMMAND7. Log function arguments: On ConditionIf you cant find User32.TranslateMessage API, do the same as above.翻译:SoftIce 能够跟踪应用程序的消息,那么OllyDbg呢?by FuZzYBiTOllyDbg也是可以的,那是一个非常隐蔽的功能。它是如此的有用。1. 打开程序2. 名字窗口 在CPU窗口中按CTRL+N 3. 查找 User32.TranslateMessage API4. 右击/FindReferences(查找参考)5. 下条件断点 SHIFT+F46. 表达式: MSG7. 记录函数参数:永远如果你不能找到它,试试右击鼠标,然后搜索全部模块中的名称。但是如果我想要捕捉一个特定的消息如WM_COMMAND呢?只对WM_COMMAND记录用这个方法做:1. 打开一个程序2. 名字窗口 在CPU窗口中按CTRL+N 3. 查找 User32.TranslateMessage API4. 右击/FindReferences(查找参考)5. 下条件断点 SHIFT+F46. 条件框:MSG=WM_COMMAND7. 记录函数参数: 条件满足时如果你不能找到User32.TranslateMessage API,象上面那样做。以下命令适用于 OllyDbg 的命令行插件 Cmdline.dll(显示于程序的插件菜单中)聆风听雨整理=命令行插件支持的命令CALC判断表达式WATCH添加监视表达式AT在指定地址进行反汇编FOLLOW跟随命令ORIG反汇编于 EIPDUMP在指定地址进行转存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步过 CallTI跟踪进入直到地址TO跟踪步过直到地址TC跟踪进入直到满足条件TOC跟踪步过直到满足条件TR运行直到返回TU运行直到用户代码LOG查看记录窗口MOD查看模块窗口MEM查看内存窗口CPU查看 CPU 窗口CS查看 Call 堆栈BRK查看断点窗口OPT打开选项设置窗口EXIT退出 OllyDbgQUIT退出 OllyDbgOPEN打开一个可执行文件CLOSE关闭可执行文件RST重新运行当前程序HELP查看 API 函数的帮助OllyDbg应用方法大全-请补充!所有文章均为散落在DFCG论坛各处或其他网络文集的经典。雪很冷搜集整理于学习笔记或与朋友讨论之中Ollydbg 中断方法Quote:Originally posted by dong at 2004-6-1 10:29 PM:我问个问题在od中怎么下断点呢?现在有的程序一点注册就没反映了这样的怎么下断点呢?能介绍下什么情况下什么断点吗?在转存中下硬件访问Word断点,下断之后,怎么取消!9398944(老菜鸟) 11:09:59alt+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+N2. 在命令行窗口中输入BPX API函数名或者BP API函数名 后回车。这时出现了所有调用这个函数的地址的窗口,在这个窗口中可以看到调用这个API函数的地址已改变了颜色。说明下好了断点。说明一下:BPX一般中断在程序调用API的地址处。BP会中断在API的写入地址处。二这有所不同,根据需要选择。优点:这种方法下的断点是针对每一个API函数的,所以具有明确的目的。缺点:关键的API函数不容易找到。所以有时下的断点没有作用。第三 内存断点(跟踪关键数据的断点)Ollydbg中的内存断点相当于TRW中的bpm 断点。下断点的方法是:在程序运行中断时选择界面中的转存窗口,用光标选择内存中的一段关键数据(颜色会改变),然后右击鼠标出现功能菜单。选择断点项,其中有二个选择内存访问和内存写入。内存访问断点是程序运行时要调用被选择的内存数据时就会被Ollydbg中断,根据这个特点在破解跟踪时只要在关键数据内存中下中断就可以知道程序在什么地方和什么时候用到了跟踪的数据。对于一些复杂算法和流程变态的算法跟踪有很大的帮助。从破解上讲,一个注册码的生成一定是由一些关键数据或者原始数据计算来的。所以在内存中一定要用到这些关键数据。那么内存访问断点就是最好的中断方法。内存写入断点是程序运行时向被选择的内存地址写入数据时就会被Ollydbg中断。根据这个特点在破解时可以跟踪一个关键数据是什么时候生成的,生成的代码段在那个地方。所以一个关键的数据如果不知道他的由来就可以用内存访问断点查找计算的核心。内存中断的下断点还有另外的一种方法:程序运行时如果知道关键的数据,比如我们输入的试验码、程序生成的序列号等。这时在内存中一定存在这些数据。用Alt+M打开内存窗口,在这个窗口中搜索知道的关键数据。用光标选择这些数据同样下内存中断,这种方法更容易找的关键的数据。优点:断点是直接面向关键数据的,所以比较容易到核心部分。缺点:内存断点重新运行后会消失,干扰比较多。第四 硬件断点(跟踪关键标志的断点)硬件断点是Olldbg所特有的断点,他不会因为重新运行就销毁,只要不删除。跟踪这个程序时就有效。但他在98系统下会不起作用。硬件断点是根据关键标志回逆到关键代码的好方法。下中断的方法和内存断点的方法相同,有三个方式硬件访问、硬件写入、硬件执行。一般用前2个。他也同样有内存断点的特性,所以可以用内存断点的地方也可以用硬件断点。这里介绍利用他来跟踪注册标志的使用方法,一般软件的注册都用到了标志比较。即在内存地址中有一个标志,在判断是不是注册时比较标志的值。不同的值表示不同的注册状态。这个标志的地址一般比较固定。根据这个特点可以下硬件断点来跟踪标志位是什么地方被标志的。方法:在转存窗口中选择到标志存放的内存地址处,然后选择标志值。下硬件写入中断(根据标志的字节下不同的长度)。重新运行程序你会发现Ollydbg会不断的中断在这个标志的内存地址处。在功能菜单的调试选项下选择硬件断点就打开了硬件断点的窗口,在这个窗口中选择跟踪,这时转存窗口就会来到被下中断的内存地址处。运行程序跟踪内存地址中的值就会知道被赋标志的代码,跟踪到计算的核心。硬件访问的使用可以知道程序在运行时多少地方用到了这个注册标志。对于破解复杂效验的程序十分的有效。直接在命令栏里下bh *硬件断点以上只是我的总结,本想每个方法用一段例子,无奈时间有限,请大家原谅了。当然,还是许多的下中断的方法,本人水平有限,不能一一尽述。只当抛砖引玉,请大侠们赐教。Fxyang属于中国破解组织OCNBCGFCG2003-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 关闭 OllyDbgQUIT 同上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 doesnt 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 EAX00454477 6A 00 PUSH 000454479 E8 C218FBFF CALL kernel32.CreateProcessA00454479处堆栈内容如下:0012FD40 00000000 |ModuleFileName = NULL0012FD44 00956B94 |CommandLine = C:/QXJDGL/QXJDGL.DLL 20012FD48 00000000 |pProcessSecurity = NULL0012FD4C 00000000 |pThreadSecurity = NULL0012FD50 00000000 |InheritHandles = FALSE0012FD54 00000020 |CreationFlags = NORMAL_PRIORITY_CLASS0012FD58 00000000 |pEnvironment = NULL0012FD5C 00000000 |CurrentDir = NULL0012FD60 0012F
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电脑停在课件页面不动
- qms考试题及答案
- 电网基建业务知识培训课件
- 电缆知识基础培训课件
- 电线电缆标准培训课件
- 管线保护专项方案
- 【ABeam】2025中国个人信息保护和网络安全相关法律法规的趋势与应对报告
- 北京一模考试美术试题及答案
- 北京初二模拟考试试卷及答案
- 北电实验班分班考试题及答案
- 【MOOC】认识飞行-上海工程技术大学 中国大学慕课MOOC答案
- 国际商务谈判 习题答案、练习题及答案(白远)
- 父母借用子女名义购房协议书
- 2024至2030年DC/DC转换器项目投资价值分析报告
- 关节活动维持与改善技术
- 湖南省长沙市师大附中博才实验中学2024-2025学年九年级上学期开学考试语文试题
- 电网劳务分包投标方案(技术方案)
- 《赏书法之韵》教学课件1
- 2024年新人教版八年级上册物理全册教案
- 第三课 我国的经济发展(课件)
- 02R111小型立、卧式油罐图集
评论
0/150
提交评论