当前位置:文档之家› OD使用教程7 - 解密系列【调试篇】

OD使用教程7 - 解密系列【调试篇】


破解的思路
• 仔细观察一个程序,我们会发现,无论在怎么加 密,无论加密哪里,这个程序加密的目的就是需 要你掏腰包来获得更多的功能或者解除限制。
• 那么我们就可以逆向的来思考,如果该程序成功 的注册后,那么程序的行为必将发生变化,如 NAG去除了,如功能限制没有了等等。
• 也就是说,程序的代码的走法也会跟未注册的时 候截然不同。因为程序的行为改变了,那么决定 它所有行为的代码走法也会发生变化。
• 那么聪明的鱼油肯定会追问:小甲鱼老湿,那我 要如何来区分何时使用何种断点呢?
认识OD的两种断点
• 这两种断点在使用上都有它们自身的限制,只要 搞清楚它们各自的特性就知道何时该用哪个了。
• 例如软件断点就只能在OD的CPU界面下,在数据 段它下不了,在一条指令的中间它也下不了。
• 在我们这个例子中,断点我们想下在windows的动 态链接库里,我们需要用到硬件断点,因为用软 件断点下在dll文件中是不会保存的,重启程序后 将丢失断点。
认识OD的两种断点
– 传说中,有这么一些寄存器,它们只用于调试,我 们称为调试寄存器:Dr0~Dr7
– 其中Dr0~Dr3四个寄存器用来存放中断地址,Dr4、 Dr5保留不使用,Dr6、Dr7用来记录Dr0~Dr3的属性 (如读,写还是执行,单位是字节,字还是双字) 。
– 因此,这就解释了为啥硬件断点只有四个,天生不 足哈。
破解的思路
• 小甲鱼在这里再举个例子:
– 未注册 -> 不跳过NAG窗口 – 已注册 -> 改编代码或条件,跳过NAG窗口
• 说啥呢?也就是说我们只需要找到这个判断是否 需要“跳”的条件即可。
• 另外补充说一点,一般我们说条件跳,鱼油们一 定会想到:cmp XX,XX 然后jz或jnz或jl等。
• 其实还有另外一种形式,叫做可变跳转。 • 小甲鱼描述能力仅限于美女,还是举个例子吧:
OD使Байду номын сангаас教程7
• 小甲鱼觉得,掌握逆向的思维尤为重要。所以在 咱的OD使用教程中,不单会告诉你怎么去逆向这 个软件,小甲鱼更多想引导大家发挥自己的想象 力,在理解原理的基础上用更多创新的方法实现 突破。(此处应该有掌声)
• 好滴,咱一起来看一下今天的对手,正所谓知己 知彼杀杀杀!
• VisualSite Designer.exe
认识OD的两种断点
– 另外还需要提一下的是,内存断点会明显降低OD 的性能,因为OD经常会校对内存。
• 软件断点: – 当我们按下F2设置的断点就是软件断点。 – 设置该断点的原理是在断点处重写代码,插入一个 int3中断指令,当CPU执行到int3指令的时候,OD 就可以获得控制权。
• 硬件断点: – 这个原理跟软件断点不同,硬件断点的可行性依赖 于CPU的物理支持。
• 接下来的一系列实践会让你掌握这些技巧的!
相关主题