破解之VisualSite Designer

  • 会飞的鱼
  • 2 Minutes
  • April 21, 2019

学习了小甲鱼OD使用教程之后的记录

一,程序分析、

打开

关闭

这个程序无壳,需要破解的有两个点:1.使用次数限制 2.广告

第一点甲鱼叔在视频中介绍了两种方法,在次数耗尽之前和之后

1.次数耗尽之前

用OD载入程序

具体方法就是一路F8,遇到弹窗就在此处F2下断,然后重新载入,F9运行到断点处,消除断点,继续执行

当然这是在程序领空的操作,当我们发现基地址变成非常大数字的时候,就是来到了动态链接库领空,如下图

此时要下硬件断点,具体方法是选中该地址,右键–断点–硬件执行,如果要查看断点 工具栏调试–硬件断点,然后依然重新载入,F9运行到断点处。删除断点,继续向下

当调试到一个尴尬的局面,进入一个函数之后,弹窗已经出来了,但是程序仍然可以单步执行,那么我们离成功就不远了

我们重新在这个函数上下断,运行到此处

发现该函数在DLL领空,以我的技术现在改不了动态链接库。。,所以继续返回上一层函数

在此处下断

F8,出现弹窗,计数减一完成,点击进入程序发现程序执行下一条语句

所以该函数的作用是显示欢迎界面,计数器减一并返回eax==1,

此时我们修改该指令

保存修改,运行,发现已经没有次数限制

2.次数耗尽之后

在耗尽之前,我们用OD载入观察所有的条件跳转语句,并标志出跳转结果,等到次数耗尽之后观察跳转结果与是否发生改变,找到关键跳转点nop掉就ok了,这里不再赘述

3.去广告

这里用到了查看调用堆栈的方法

我们知道在调用函数的时候会有一系列参数的入栈保护,此时就会调用堆栈,alt+k可以查看调用情况

删除所有断点,重新运行程序,弹出广告后暂停,查看堆栈调用情况

从后往前找到程序领空的调用

这里是0x00480c24,双击来到这里,下断点重新执行

发现断在0x00480c24时没有弹出广告,F8之后广告出现,所以0x00480c24处函数便是关键函数,nop掉

完成

总结:

1.断点有:软件断点,硬件断点,内存断点

软件断点:原理是在断点处重写代码,插入一个int3中断指令,当cpu执行到int3时od便可获得执行权

硬件断点:可行性依赖于cpu的物理支持

2.其中有8个专用的调试寄存器:Dr0-Dr7

Dr0-Dr3:存放执行地址

Dr4-Dr5:默认不使用

Dr6-Dr7:记录Dr0-Dr3的特征

所以这也是硬件断点最多下四个的原因

3.硬件断点和软件断点的区别

软件断点:只能下载od的cpu界面,不能下载数据端,在DLL中重启即消失,以指令为单位,

硬件断点:下在动态链接库中

4.alt+F9:从DLL领空回到程序领空并暂停