OD使用教程 -
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
准备工作
• 拆解一个Windows程序要比拆解一个DOS程序容 易得多,因为在Windows中,只要API函数被使 用,想对寻找蛛丝马迹的人隐藏一些东西是比较 困难的。 • 因此分析一个程序,用什么API函数作为切入点就 显得比较关键了。这也正是小甲鱼常跟大家说破 解靠的是耐心和经验的道理! • 为了便于大家理解,我们先把TraceMe这个序列 号验证程序流程图给大家展示出来:
Βιβλιοθήκη Baidu• 演示中… …
调试技巧总结
• 1.F2下断点,Alt+b打开断点编辑器,可编辑所 有下过的断点,空格键可快速切换断点状态。 • 2.当位于某个CALL中,这时想返回到调用这个 CALL的地方时,可以按“Ctrl+F9”快捷键执行 返回功能。这样OD就会停在遇到的第一个返回命 令(如RET、RETF或IRET)。 • 3.如果跟进系统DLL提供的API函数中,此时想返 回到应用程序领空里,可以按快捷键“Alt+F9” 执行返回到用户代码命令。
TraceMe序列号验证程序流程图
加载目标文件调试
• 设置OllyDbg中断在程序的入口点。 • 名词注释
– System breakpoint:系统断点,OllyDbg用 CreateProcessA加载 DEBUG_ONLY_THIS_PROCESS参数执行,程序运行 之后会触发一个INT13,在系统空间里。 – Entry point of main module:主模块的入口点, 即文件的入口点。 – WinMain:程序的WinMain()函数入口点。
调试技巧总结
• 7.一般我们要结合经验通过猜测的方式多尝试几遍设 陷阱,找出相关的函数。 • 8.按“Ctrl+G”键打开跟随表达式的窗口。 • 9.也可以通过“Ctrl+N”键打开应用程序的导入表( 输入表),然后查看应用程序总共导入了哪些函数来 以此推断需要在哪里挖坑下陷阱! • 10.关于返回值,汇编代码的返回值约定是存放在eax 这个寄存器里边的,如果32位的eax不够存放返回值 ,系统会将返回值放在内存某个位置并把该位置的地 址放在eax返回。
调试技巧总结
• 4.所谓领空,实际上就是指在某一时刻,CPU执 行的指令所在的某段代码的所有者。 • 5.如004013F7这类地址一般是可执行文件领空, 7C8114AB这类大地址一般是系统DLL所在的地 址空间。 • 6.程序通常读取文本框内容的字符串用的是以下 两个函数:
– GetDlgItemTextA(GetDlgItemTextW) – GetWindowTextA(GetWindowTextW)
OD使用教程
• 今天小甲鱼给大家演示使用OD破解《解密系列》 里边的小程序的过程。 • 《解密系列》里固然破解过程说明,但是看过此 书的朋友无不说太简单带过了,书中仅提到破解 该程序的简要步骤。 • 但是我们强调一定要知其然且知其所以然!所以 在今天的演示中,小甲鱼会用一样的程序讲出更 全面的内容! • 鸡冻吧?那上课就别睡觉了哦~
加载目标文件调试
• 1.虚拟地址:一般情况下,同一程序的同一条指令在不 同系统环境下此值相同。 • 2.机器码:这就是CPU执行的机器代码。 • 3.汇编指令:和机器码对应的程序代码。
容易犯错的调试方法
• 我们来试着用上节课的方法自行来摸索一下! • 演示中… … • 死循环的原因
正确的破解方式