OD使用教程18 - 解密系列【调试篇】
- 格式:ppt
- 大小:248.50 KB
- 文档页数:4
od教程没有具体的破解,不过是些个⼈经验ollydbg1.06集调试和⽂件修改于⼀⾝,其中的直接显⽰字符串的功能是不必说,还有针对cpu窗⼝中的5个窗格的右健菜单,功能⾮常强⼤。
修改⽂件,选view,file,打开⽂件后,选disassemble,马上可以看到反汇编后的命令(32位的hiew?),选中⼀⾏后按空格键,直接修改命令,不必记住机器码,改后选右键菜单的save,可以保存到⽂件。
如果先analyze后,可以通过ctrl+G,写虚拟地址,直接找到⾏,不必再转成⽂件偏移地址,改后直接选copy to exeutive file,注意,必须让光标停在你改的⾏上,否则不能修改,如果改错了,选undo selection。
在调试中,animate step over/in 这两个命令⾮常⽅便,尤其我觉得在对付nag程序的时候,⼏乎不必设断,⽐如,先analyze 程序,然后选animatestep over或in,程序开始运⾏,光标在命令⾏上滑过(要的就是这种效果),然后nag出现,仔细看看反汇编窗格,是不是光标停在⼀个call上,它到底call什么我们不关⼼,反正call出了nag对话框,然后往上看看,极有可能有个jz,jnz,直接改了跳过即可(⼀般程序⽽⾔)然后有两个命令是⾮常好的东西,hit trace和run trace,hit trace可以⽤来查看在你选定的命令范围内命令被执⾏与否,执⾏了前⾯就有个红竖线,⽽run trace可以为你设定的命令范围作⼀个运⾏的profile,有了它,你就可以完全掌握程序的跳转,在爆破的时候不⽤为了⼀个个跳转反复的找。
其次,ollydbg的拷贝功能⾮常好,在任意⾏⼀都可以拷贝到剪贴扳,或拷贝到⽂件,甚⾄在上⾯说的由run trace做出来的profile,你都可以copy the whole table,留下来细细研究。
在调试中寄存器的值都能⽤10进制16进制看到的,⽅法是只要选中如eax,ebx然后按回车,省得你⽼是?这?那的敲命令,如果要r fl z,只要双击0状态标志Z后⾯的值就可以了,⾮常⽅便值的⼀提的是follow命令,在反汇编中选中⼀条命令,如果其中有⽤到内存中的地址,那么follow in dump 有两个选项,⼀个是selection⼀个是address,sellection到命令所在的虚拟地址,address到其中⽤到的内存地址,这样可以⾮常⽅便的看到到底有些什么东西,不⽤反复⽤d命令。
od 加密函数断点
OD加密函数断点是指在使用OD(OllyDbg)调试工具时,针对
特定的加密函数设置断点以便分析其加密算法和过程。
在进行OD加
密函数断点时,我们通常需要考虑以下几个方面:
1. 加密函数的位置,首先需要在程序中定位到需要分析的加密
函数的位置,可以通过静态分析或动态调试的方式找到函数的入口点。
2. 加密算法分析,一旦设置了断点,当程序执行到加密函数时,我们可以逐步跟踪代码的执行过程,观察寄存器和内存的变化,以
便分析加密算法的具体实现方式。
3. 输入输出数据分析,通过断点可以观察到加密函数的输入和
输出数据,我们可以分析这些数据的结构和变化规律,以便理解加
密过程中数据的转换和变换。
4. 调试技巧,在设置加密函数断点时,需要灵活运用OD调试
工具提供的功能,比如条件断点、内存监视等,以便更好地分析加
密函数的执行过程。
总之,在进行OD加密函数断点时,我们需要综合运用静态分析和动态调试的方法,结合加密算法分析和输入输出数据分析,以便全面深入地理解加密函数的实现原理和运行过程。
这样能够帮助我们更好地理解程序的加密机制,为安全分析和逆向工程提供有力支持。
od反编译工具用法反编译是指将已经编译过的程序文件转换为高级源代码的过程。
反编译工具可以帮助开发者了解和学习其他人编写的程序,对于调试和修复软件错误也很有帮助。
OD (OllyDbg) 是一种广泛使用的反汇编调试工具,本文将介绍如何使用OD进行反编译。
OD的基本使用方法如下:2.打开需要反编译的程序:在OD主界面上点击“文件”菜单,然后选择“打开”选项,浏览并选择需要反编译的程序文件,并点击“打开”按钮。
3.反汇编代码窗口:OD会在主界面上打开一个反汇编代码窗口,这个窗口将显示程序的机器码和相应的汇编指令。
4.反编译代码:可以通过“右键单击”汇编指令,然后选择“跟随”选项来进行反编译。
OD会尝试寻找并显示反编译后的代码。
5.查看变量和数据:在OD的主界面上,有一个“数据窗口”,可以显示程序中的变量和内存数据。
在反汇编代码窗口中选择一些指令,然后在数据窗口中查看它所使用的变量和数据的值。
6.设置断点:在OD中设置断点可以帮助我们在特定指令上暂停执行程序,以便查看程序状态和调试错误。
在反汇编代码窗口中选择一些指令,然后点击“上方”菜单中的“条件断点”选项,OD会弹出一个对话框,可以在其中设置断点条件。
7.运行程序:在OD的主界面上,有一个“执行”菜单,可以用于运行程序。
可以通过点击“执行”菜单中的“运行”选项来启动程序的执行。
当程序遇到断点时,会停止执行并进入调试模式。
8.调试程序:在OD的调试模式下,可以通过一些常用的调试功能来调试程序。
例如,可以通过“单步执行”菜单选项逐行执行程序代码,通过“寄存器窗口”查看和修改寄存器值,通过“内存窗口”查看和修改内存数据等。
需要注意的是,使用OD进行反编译需要一定的汇编和调试知识。
同时,反编译软件可能涉及违法行为,如未获得程序开发者的许可而进行反编译。
请确保遵守法律规定,并只在合法和正当的情况下使用反编译工具。
在使用OD进行反编译时,可以参考以下一些技巧和注意事项:1.了解汇编语言与机器码的对应关系:汇编语言是将机器码转换为可读性更高的指令的语言,因此了解汇编语言的基本语法和常见指令有助于理解和分析程序。
几种用OD脱壳方法OD是反编译软件的一种,可以将可执行文件转换为可读的源代码。
脱壳是指从已经加密或保护的软件中提取出原始的未加密或未保护的代码。
下面是几种常见的OD脱壳方法:1.静态分析法:静态分析是指对二进制文件进行分析,了解其结构、函数调用和控制流程等信息。
通过对逆向工程的分析,可以分析出加密算法和解密函数的位置。
使用静态分析法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用各种OD工具,如IDA Pro,OllyDbg等,显示可执行文件的汇编代码。
-通过分析代码和调试程序,找到加密算法和解密函数的位置。
-根据找到的位置,修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
2.动态调试法:动态调试是指在运行时对程序进行调试和分析。
使用动态调试法脱壳的主要步骤如下:-打开OD软件,将加密的可执行文件加载到OD中。
- 使用动态调试工具,如OllyDbg或GDB等,在程序执行期间跟踪和记录函数调用和内存访问。
-通过分析函数调用和内存访问,找到加密算法和解密函数的位置。
-在找到的位置上下断点,执行程序并使用OD工具查看解密后的代码。
3.内存镜像法:内存镜像法是指通过将程序加载到内存中,并对内存进行镜像和分析来脱壳。
使用内存镜像法脱壳的主要步骤如下:-运行加密的可执行文件。
- 使用内存镜像工具,如DumpBin或WinDBG等,将程序的内存镜像保存到磁盘上。
-使用OD软件加载内存镜像文件。
-通过分析内存镜像文件,找到加密算法和解密函数的位置。
-修改程序的执行流程,跳过解密函数,使得程序直接执行解密后的代码。
这些方法都可以用于将加密的可执行文件转换为可读的源代码,从而进行进一步的分析和修改。
脱壳过程需要进行深入的逆向工程和对程序的理解,因此需要具备一定的技术和知识。
此外,需要注意的是,脱壳过程可能涉及到破解和侵犯版权的行为,应遵守法律规定,并仅限于安全研究和个人学习的目的使用。
od 调试原理Debugging is the process of finding and fixing errors or bugs in a computer program. 调试是在计算机程序中查找和修复错误或漏洞的过程。
It is an essential part of software development, as even the most carefully written code can contain bugs that need to be identifiedand resolved. 这是软件开发中必不可少的一部分,因为即使是最仔细编写的代码也可能包含需要被识别和解决的bug。
There are various methods and tools used for debugging, and different programmers may have their own preferred techniques. 有各种方法和工具用于调试,而不同的程序员可能有他们自己偏好的技术。
One common method for debugging is to use a debugger, which is a software tool that allows the programmer to step through the code and inspect the values of variables at different points in theprogram's execution. 一种常见的调试方法是使用调试器,这是一种软件工具,允许程序员逐步执行代码,并检查程序在不同执行点的变量值。
This can help pinpoint exactly where an error is occurring and provide insight into how to fix it. 这可以帮助准确定位错误发生的地方,并提供修复它的见解。
Ollydbg强大的调试工具,简单的介绍一下,在以后的使用中再详细介绍每个功能是具体使用。
如果不把常用到的软件先介绍一下,等使用的时候再介绍会很麻烦。
所以前面的几篇文章就当作铺垫吧。
虽然这几篇文章都很枯燥,但是有不能不提前介绍。
前面的配置很简单,需要掌握。
其余的窗口介绍,名词介绍,和后面的快捷键可以了解一下就算了,我们会在以后的实践当中慢慢去使用的。
这篇文章主要是认识软件,了解快捷键,学会配置插件和UDD的绝对路径,学会添加到右键。
OllyDBG 的安装与配置到OD的文件夹下面直接运行ollydbg.exe即可。
反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的 CPU 寄存器内容。
同样点击标签寄存器 (FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
每个窗口以后都会用到。
等具体使用的时候在具体讲解。
第一次使用OD首先要配置插件和UDD的目录为绝对路径,否则很多莫名其妙的错误会出现。
点击菜单上的选项->界面,将会出来一个界面选项的对话框,点击其中的目录标签:UDD 目录的作用是保存你调试的工作。
比如你调试一个软件,设置了断点,添加了注释,一次没做完,这时 OllyDBG 就会把你所做的工作保存到这个 UDD 目录,以便你下次调试时可以继续以前的工作。
如果不设置这个 UDD 目录,OllyDBG 默认是在其安装目录下保存这些后缀名为 udd 的文件,时间长了就会显的很乱,所以还是建议专门设置一个目录来保存这些文件。
另外一个重要的选项就是调试选项,可通过菜单选项->调试设置来配置:上面那个异常标签中的选项经常会在脱壳中用到。
1. 工具SoftICE是一款经典的调试工具,运行在Ring0级,可以调试驱动。
但平时调试的程序都是Ring3级,因此推荐大家用OllyDBG(简称OD),这款工具上手容易,功能十分强大,现在论坛上的文章基本都是用OllyDBG来讲解的。
Q:从哪儿得到OllyDBG、IDA等加解密工具?A: /tools.htm另外,由于版权,本站不提供SoftICE、IDA等商业软件下载,需要的可以用Google搜索或时常关注论坛。
Q:W32Dasm中的“Ord:0109h”是什么?A:是Hint,本函数在其所驻留DLL的导出表中的索引号( firstrose 回答)Q:谁能介绍一下sig文件的制造方法?A:How to create .sig file from .cpp?1. Compile the CPP files (remember, compile ONLY, do not link)2. See the resulting .OBJ files?3. Run the IDA FLIRT utilities on the .OBJ files4. Voila! Instant .SIG files5. Copy those .SIG files to the SIG folder of IDA6. Disassemble the app in IDA7. Open the "APPLY SIGNATURE" box8. Select your signatures and apply-------------------------------------------------------------------------------- Olldbg常见问题Q: OD中如何运行到光标所在处?A: 将光标移到目标位置,按F4.(SoftICE等价功能键是F7)Q: 如何用OD修改可执行程序?A:直接在反汇编代码区更改,这时可以使用汇编代码更改,然后选中修改后的汇编代码,右击-->复制到可执行文件-->保存文件.Q:使用OD,从内存区复制内存数据的时候,有时候无法将所有的数据都复制到剪贴板A:ALT + o 打开调试选项,选择“字符串”标签,里面有个“无法打印的ASCII字符转存为圆点”,选中就可以了。
od用流程图查看代码执行流程准备工作。
Windows程序由于要使用API函数,在分析中以API函数作为切入点就使过程变得容易起来。
·先了解程序序列号验证流程。
1.输入用户名和序列号;2.使用GetDlgItemTextA函数把字符读出;3.对输入字符进行计算;4.使用lstrcmp函数进行比较。
所以上述的函数就是我们下断点分析的目标,追踪程序序列号验证过程。
(这种为了解密制作的小程序一般称为“CrackMe)。
加载目标文件进行调试。
为了让OD中断在程序入口点,在加载前需要在Options->Debuggingoptions中设置。
在event标签里,一般需要将断点设置在WinMain处。
寄存器。
ESP栈指针指向栈顶。
EIP当前要执行指令(无法通过寄存器面板修改,只能通过在反汇编窗口Neworiginhere改变EIP及当前执行指令的位置,程序会从这条指令开始执行)。
寄存器下方显示的是标志寄存器。
C,P,......,O;只能在0/1之间切换。
单步追踪。
F2设置断点。
F7单步步进遇到call指令跟进。
F8单步步过遇到call指令路过,不跟进。
F9/菜单栏中播放按钮运行程序。
F12暂停程序处理死循环使用。
Ctrl+F2重新调试目标程序(OD将结束目标进程并重新加载它)。
Ctrl+F7在用户按ESC/F12或遇到其他断点时停止重复单步步进。
Ctrl+F8在用户按ESC/F12或遇到其他断点时停止重复单步步过。
Ctrl+F9直到出现ret指令时中断,返回调用call指令的位置。
执行到返回(Executetillreturn)OD会停止在第一个ret/retf/iret遇到ret指令时暂停还是路过在调试选项中设置。
➖在进入子程序的过程中,回看之前单步追踪的代码。
Alt+F9若进入系统领空,可瞬间回到应用程序领空Executetillusercode(执行到用户代码)。
双击EIP或者点击view菜单中的C让光标回到当前EIP指向的语句。
一、OllyDBG 的安装与配置OllyDBG 1.10 版的发布版本是个ZIP压缩包,只要解压到一个目录下,运行OllyDBG.exe 就可以了。
汉化版的发布版本是个RAR 压缩包,同样只需解压到一个目录下运行OllyDBG.exe 即可OllyDBG 中各个窗口的功能如上图。
简单解释一下各个窗口的功能,更详细的内容可以参考TT 小组翻译的中文帮助:反汇编窗口:显示被调试程序的反汇编代码,标题栏上的地址、HEX 数据、反汇编、注释可以通过在窗口中右击出现的菜单界面选项->隐藏标题或显示标题来进行切换是否显示。
用鼠标左键点击注释标签可以切换注释显示的方式。
寄存器窗口:显示当前所选线程的CPU 寄存器内容。
同样点击标签寄存器(FPU) 可以切换显示寄存器的方式。
信息窗口:显示反汇编窗口中选中的第一个命令的参数及一些跳转目标地址、字串等。
数据窗口:显示内存或文件的内容。
右键菜单可用于切换显示方式。
堆栈窗口:显示当前线程的堆栈。
要调整上面各个窗口的大小的话,只需左键按住边框拖动,等调整好了,重新启动一下OllyDBG 就可以生效了。
启动后我们要把插件及UDD 的目录配置为绝对路径,点击菜单上的选项->界面,将会出来一个界面选项的对话框,我们点击其中的目录标签:因为我这里是把OllyDBG 解压在F:\OllyDBG 目录下,所以相应的UDD 目录及插件目录按图上配置。
还有一个常用到的标签就是上图后面那个字体,在这里你可以更改OllyDBG 中显示的字体。
上图中其它的选项可以保留为默认,若有需要也可以自己修改。
修改完以后点击确定,弹出一个对话框,说我们更改了插件路径,要重新启动OllyDBG。
在这个对话框上点确定,重新启动一下OllyDBG,我们再到界面选项中看一下,会发现我们原先设置好的路径都已保存了。
有人可能知道插件的作用,但对那个UDD 目录不清楚。
我这简单解释一下:这个UDD 目录的作用是保存你调试的工作。