OD和IDA的使用专业:信息安全班级:0441104姓名:夏维学号:2011211830授课老师:董涛一OD的使用1界面构成OllyDbg发行版是一个ZIP压缩包,只要解压运行OllyDbg.exe即可。运行OllyDbg打开进程,主窗口显示反汇编清单。各窗口的外观属性如:“标题栏(bar)、字体(font)”等在右键菜单界面选项(appearance)里控制代码窗口代码窗口(OllyDbg帮助文件自称反编汇窗口)显示被调试程序的代码。他有四个列地址/Address(虚拟地址)HEX数据/HEXdump(机器码)反汇编/Diassassembly(汇编代码)注释/Comment(注释)最后一列注释(Comment)显示相关API参数或运行简表,非常有用,有点类似于IDAPro。在代码窗口(地址行,不是列标题)双击时完成动作。地址(Address)列:显示相对被双击地址的地址,再次双击返回标准地址模式;HEX数据(HEXdump)列:设置或取消无条件断点,按F2键也能设置断点;反汇编(Diassassembly)列:调试编辑器,可直接修改汇编代码;注释(Comment)列:允许增加或编辑注释。代码窗口允许浏览、分析、搜索和修改代码,保存改变到可执行文件,设置断点等。相关弹出式菜单包括100多项。信息窗口(Informationwindow)动态跟踪时,与指令相关的各寄存器的值、API函数调用提示、跳转提示等信息显示。数据窗口以十六进制或内存方式显示文件在内容中的数据,类似于softICE的数据窗口。要显示数据可单击右键转到→表达式(Goto→expression)或按Ctrl+G键打开地址窗口,输入地址。寄存器(Registerswindow)显示CPU各寄存器的值,支持浮点(FPU)、MMX,3DNow!寄存器,可以单击鼠标右键切换。堆栈窗口(Stackwindow)堆栈窗口非常重要,各API函数、子程序等都利用它传递参数、变量等。OllyDbg堆栈窗口功能强大。如果传递的参数都是字符串,OllyDbg会在注释里直接将其显示出来,再也不用像SoftICE那样经常用D命令查看内存数据了。2简要的运用OD1,基本调试方法OllyDBG有三种方式来载入程序进行调试,一种是点击菜单文件-打开(快捷键是F3)来打开一个可执行文件进行调试,另一种是点击菜单文件-附加来附加到一个已运行的进程上进行调试。注意这里要附加的程序必须已运行。第三种就是用右键菜单来载入程序(不知这种算不算)。一般情况下我们选第一种方式。比如我们选择一个第九大陆来调试,通过菜单文件-打开来载入这个程序,OllyDBG中显示的内容将会是这样:调试中我们经常要用到的快捷键有这些:F2:设置断点,只要在光标定位的位置(图中灰色条)按F2键即可,单击右键会有相关操作。再按一次F2键则会删除断点。(相当于SoftICE中的F9)F8:单步步过。每按一次这个键执行一条反汇编窗口中的一条指令,遇到CALL等子程序不进入其代码。(相当于SoftICE中的F10)F7:单步步入。功能同单步步过(F8)类似,区别是遇到CALL等子程序时会进入其中,进入后首先会停留在子程序的第一条指令上。(相当于SoftICE中的F8)F4:运行到选定位置。作用就是直接运行到光标所在位置处暂停。(相当于SoftICE中的F7)F9:运行。按下这个键如果没有设置相应断点的话,被调试的程序将直接开始运行。(相当于SoftICE中的F5)CTR+F9:执行到返回。此命令在执行到一个ret(返回指令)指令时暂停,常用于从系统领空返回到我们调试的程序领空。(相当于SoftICE中的F12)ALT+F9:执行到用户代码。可用于从系统领空快速返回到我们调试的程序领空。(相当于SoftICE中的F11)若要查找软件里的某个字符操作有,在反汇编窗口中右击,出来一个菜单,我们在查找-所有参考文本字串上左键点击:现在出来另一个对话框,我们在这个对话框里右击,选择“查找文本”菜单项,输入你想查询的内容附个断点表:常用断点(OD中)拦截窗口:bpCreateWindow创建窗口bpCreateWindowEx(A)创建窗口bpShowWindow显示窗口bpUpdateWindow更新窗口bpGetWindowText(A)获取窗口文本拦截消息框:bpMessageBox(A)创建消息框bpMessageBoxExA创建消息框bpMessageBoxIndirect(A)创建定制消息框bpIsDialogMessageW拦截警告声:bpMessageBeep发出系统警告声(如果没有声卡就直接驱动系统喇叭发声)拦截对话框:bpDialogBox创建模态对话框bpDialogBoxParam(A)创建模态对话框bpDialogBoxIndirect创建模态对话框bpDialogBoxIndirectParam(A)创建模态对话框bpCreateDialog创建非模态对话框bpCreateDialogParam(A)创建非模态对话框bpCreateDialogIndirect创建非模态对话框bpCreateDialogIndirectParam(A)创建非模态对话框bpGetDlgItemText(A)获取对话框文本bpGetDlgItemInt获取对话框整数值拦截剪贴板:bpGetClipboardData获取剪贴板数据拦截注册表:bpRegOpenKey(A)打开子健bpRegOpenKeyEx打开子健bpRegQueryValue(A)查找子健bpRegQueryValueEx查找子健bpRegSetValue(A)设置子健bpRegSetValueEx(A)设置子健功能限制拦截断点:bpEnableMenuItem禁止或允许菜单项bpEnableWindow禁止或允许窗口拦截时间:bpGetLocalTime获取本地时间bpGetSystemTime获取系统时间bpGetFileTime获取文件时间bpGetTickCount获得自系统成功启动以来所经历的毫秒数bpGetCurrentTime获取当前时间(16位)bpSetTimer创建定时器bpTimerProc定时器超时回调函数GetDlgItemInt得指定输入框整数值GetDlgItemText得指定输入框输入字符串GetDlgItemTextA得指定输入框输入字符串拦截文件:bpCreateFileA创建或打开文件(32位)bpOpenFile打开文件(32位)bpReadFile读文件(32位)bpWriteFile写文件(32位)GetModuleFileNameAGetFileSizeSetfilepointerfileopenFindFirstFileAReadFile拦截驱动器:bpGetDriveTypeA获取磁盘驱动器类型bpGetLogicalDrives获取逻辑驱动器符号bpGetLogicalDriveStringsA获取当前所有逻辑驱动器的根驱动器路径VB程序专用断点文件长度:RtcFileLenbp__vbaFreeStr对付VB程序重启验证bp__vbaStrCmp比较字符串是否相等bp__vbaStrComp比较字符串是否相等bp__vbaVarTstNe比较变量是否不相等bp__vbaVarTstEq比较变量是否相等bp__vbaStrCopy复制字符串bp__vbaStrMove移动字符串bpMultiByteToWideCharANSI字符串转换成Unicode字符串bpWideCharToMultiByteUnicode字符串转换成ANSI字符串===============================密码常用中断Hmemcpy(win9x专用)GetDlgItemTextAGetDlgItemIntvb:getvolumeinformationavbastrcomp(trw)Bpx__vbaStrComp(记得是两个'_')MSVBVM60!_vbastrcomp|soficeMSVBVM50!|VBAI4STRCtrl+Dbpxmsvbvm60!__vbastrcompdod*(esp+0c)(softice)按几次F5出册码出来了。bpxregqueryvalueexadodesp-8(trw)vbaVarTstEq判断是否注册的函数(0042932F66898580FEFFFFmovwordptr[ebp+FFFFFE80],ax改为0042932F66898580FEFFFFmovwordptr[ebp+FFFFFE80],bx)时间常用中断GetSystemTimeGetLocalTimeGetTickCountvb:rtcGetPresentDate//取得当前日期杀窗常用中断Lockmytask(win9x专用)bpExitProcess退出进程DestroyWindowmouse_event(鼠标中断)postquitmessage(Cracking足彩xp,很有用^_^)vb:_rtcMsgBoxini文件内容常用中断GetPrivateProfileStringAGetPrivateProfileProfileIntkey文件:getprivateprofileintReadFileCreateFileA注册表常用中断RegQueryvalueARegQueryvalueExA狗加密中断BPIO-h278RBPIO-h378R其它常用函数断点CreateFileA(读狗驱动程序),DeviceIOControl,FreeEnvironmentStringsA(对付HASP非常有效).Prestochangoselector(16-bitHASP's),'7242'查找字符串(对付圣天诺).具体含义参考下面的范例。光盘破解中断16:getvolumeinformationgetdrivetypeint2fh(dos)32:GetDriveTypeAGetFullPathNameAGetWindowsDirectoryA读磁盘中断GETLASTERROR返回扩充出错代码限制中断EnableMenuItem允许、禁止或变灰指定的菜单条目EnableWindow允许或禁止鼠标和键盘控制指定窗口和条目(禁止时菜单变灰)二IDA的使用(1)IDA的简要介绍交互式反汇编器专业版(InteractiveDisassemblerProfessional),人们常称其为IDAPro,或简称为IDA。就其本质而言,IDA是一种递归下降反汇编器。但是,为了提高递归下降过程的效率,IDA的开发者付出了巨大的努力,来为这个过程开发逻辑。为了克服递归下降的一个最大的缺点,IDA在区分数据与代码的同时,还设法确定这些数据的类型。虽然你在IDA中看到的是汇编语言形式的代码,但IDA的主要目标之一,在于呈现尽可能接近源代码的代码。此外,IDA不仅使用数据类型信息,而且通过派生的变量和函数名称来尽其所能地注释生成的反汇编代码。这些注释将原始十六进制代码的数量减到最少,并显著增加了向用户提供的符号化信息的数量。(2)IDA的目录结构下面简要的介绍IDA安装目录中的各个子目录。Cfg。Cfg目录包含各种配置文件,包括基本IDA配置文件ida,cfg、GUI配置文件idagui.cfg以及文本模式用户界面配置文件idatui,cfg。我们将在后面的章节介绍IDA的一些更加重要的配置功能。Idc。Idc目录包含IDA的内置脚本语言IDC所需的核心文件。我们将在后面详细介绍如何使用IDC便携脚本。Ids。Ids目录中包含一些符号文件(IDA语法中的IDS文件),这些文件用于描述可被加载在到IDA的二进制文件引用的共享库的内容。这些DIS文件包含摘要信息,其中列出了有某一个指定库导出的所有项目。这些项目包含描述某个函数所需的参数类型和数量的信息、函数的返回类型(如果有)以及与该函数的调用约定有关的信息。Ioaders。Ioade