📒博客主页:开心星人的博客主页
🔥系列专栏:Try to Hack
🎉欢迎关注🔎点赞👍收藏⭐️留言📝
📆首发时间:🌴2023年2月21日🌴
🍭作者水平很有限,如果发现错误,还望告知,感谢!
OD简介
OllyDbg是一款反汇编工具,一个新的动态追踪工具。它将IDA与SoftICE结合起来的思想,Ring 3 级的调试器,己代替SoftICE成为当今最为流行的调试解密工具了。同时还支持插件扩展功能,是目前最强大的调试工具。
相关基础知识
静态分析和动态调试:
静态分析技术是指破解者利用反汇编工具将二进制的可执行文件翻译成汇编代码,通过对代码的分析来破解软件;而动态调试则是指破解者利用调试器跟踪软件的运行,寻求破解的途径。
动态链接
动态链接,在可执行文件装载时或运行时,由操作系统的装载程序加载库。大多数操作系统将解析外部引用(比如库)作为加载过程的一部分。在这些系统上,可执行文件包含一个叫做import directory的表,该表的每一项包含一个库的名字。根据表中记录的名字,装载程序在硬盘上搜索需要的库,然后将其加载到内存中预先不确定的位置,之后根据加载库后确定的库的地址更新可执行程序。
可执行程序根据更新后的库信息调用库中的函数或引用库中的数据。这种类型的动态加载成为装载时加载 ,被包括Windows和Linux的大多数系统采用。操作系统在加载应用软件时要完成的最复杂的工作之一就是加载时链接。其他操作系统可能在运行时解析引用。在这些系统上,可执行程序调用操作系统API,将库的名字,函数在库中的编号和函数参数一同传递。
操作系统负责立即解析然后代表应用调用合适的函数。这种动态链接叫做运行时链接 。因为每个调用都会有系统开销,运行时链接要慢得多,对应用的性能有负面影响。现代操作系统已经很少使用运行时链接。可以动态链接的库,在Windows上是dynamic link library (DLL),在UNIX或Linux上是Shared Library。 库文件是预先编译链接好的可执行文件,存储在计算机的硬盘上。大多数情况下,同一时间多个应用可以使用一个库的同一份拷贝,操作系统不需要加载这个库的多个实例。
API
API(Application Programming Interface,应用程序编程接口)是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
动态链接库DLL
(Dynamic Link Library 或者 Dynamic-link Library,缩写为 DLL),是微软公司在微软Windows操作系统中,实现共享函数库概念的一种方式(这些库函数的扩展名是 ”.dll"、“.ocx”(包含ActiveX控制的库)或者 “.drv”(旧式的系统驱动程序))。动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。
函数的可执行代码位于一个 DLL 文件中,该 DLL 包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。DLL 还有助于共享数据和资源。多个应用程序可同时访问内存中单个 DLL 副本的内容。
OD下载
下载地址:http://www.ollydbg.de/
ollydbg快捷键
1、F7 单步步入。执行一行代码,遇到 CALL 等子程序时会进入其中,进入后首先会停留在子程序的第一条 指令上。
2、F8 单步步过。执行一行代码,遇到 CALL 等子程序不进入其代码。
3、F2 按F2在选中行设置断点,再次按 F2 删除断点。
4、F9 黑色表示当前程序运行到的位置,按F9运行调试程序,直到遇到断点停止运行。
5、查询所有字符串
6、查询程序调用的函数
7、-减号键 返回到前一条指令处的话,只需要按一下减号键
8、查询函数在哪里被调用
9、保存更改的程序
OllyDbg动态分析的基本流程
crackme
需要输入名称和序列号,随便输入一下
弹框
我们在ollydbg中找一下这个字符串
双击追踪即可
看到了两个函数,一个是成功破解,一个是失败破解的提示
追踪一下函数,看看在哪里调用了
接下来分析跳转逻辑,将JE更改为JMP,无条件跳转,即可跳转到破解成功的窗口
选中需要更改的汇编代码,然后按空格
按F9运行一下,随便输入序列号和名称,破解成功
保存更改的程序
e春秋:Ollydbg动态反调试技术
https://blog.csdn.net/Eastmount/article/details/107777190