今天我们用的附件是第三个,afkayas的AfKayAs.2.Exe

大家可以先用找字符串的方法和api断点的方法来尝试干掉这个软件

今天我们用新方法,按钮事件,具体的按钮事件怎么查找请参考:总结五种语言按钮事件的找法

由于我们这个软件是VB写的,我们就参考这篇文章里面VB的按钮事件吧!

我怎么知道他是VB的呢~很简单 ,用peid或者die看看就知道了,这两个软件的下载地址如下:

链接: http://pan.baidu.com/s/1boCqRKF 密码: rzyr

链接: http://pan.baidu.com/s/1qY4Fcny 密码: tnh2

这里我只演示PEID,我们打开PEID

把目标软件拖入PEID,就能显示软件是用什么语言开发的

开始正题


我们先打开软件,这个软件会过几秒才会到输入name和key的界面

先输入假码,简单的试试

上吧,皮卡丘,用查找字符串和API断点的方法先干掉他,一定要多练习!

好了,附加到OD去~

今天我们用按钮事件的办法,附加以后在OD的反汇编窗口点击右键,选择查找->二进制字符串 或者直接ctrl+b,所谓的按钮事件呢,就是,你点击按钮,他会执行一个函数,我们打了断点,所以在他函数之前我们断点就会断下来,如果我们单步跟踪的话,就能进入到它的函数里面去,然后我们就知道他怎么验证验证码的正确性了

好,在弹出来的对话框中,输入我们的按钮事件,记住,VB的是81 6c 24

点击确定,发现OD帮我们选中了一行,这表示找到一个按钮事件了,我们再这里下个断点

我们再看看还有没有,在反汇编窗口中点击右键 查找->下个 或者按catl+L继续

嘿嘿 又找到一个~下断点, 再继续看看

如果OD没有找到的话,下面的状态栏会有个黄色的条条 一闪而过,注意观察,好了,所有的按钮事件都下断点了,我们F9运行起来,运行起来发现断在我们的按钮事件上,由于不是我们点击OK按钮产生的,不管他,按F9继续

看到主界面后,我们输入假码 dbgpro.com 然后鼠标点击OK按钮,让它触发我们的按钮事件

你会发现OD断下来了,我们单步跟踪,发现是个jmp jmp是无条件跳转,也就是说,无论如何都会跳转,所以左边的线是红色的,我们看到 这里跳转的目标地址是 004080f0 我们jmp处的地址是 00407939 是一个大跳转,我们F8单步跟过去

发现来到了这里,我们注意观察,我选中的代码,这种代码一般来讲 就是一个函数的开始部分了,也就是函数入口处

由于参数是通过栈传递的,所以在函数入口处一般会先把ebp入栈,然后把esp赋值给ebp,然后通过ebp来访问参数和局部变量

函数的入口多看就熟悉了,大部分函数入口都涨这样

既然我们说了,到了一个函数的入口了,上面也说,按钮事件 就是进入到按钮要执行的函数,那么我们往下看看,有没有什么乱七八糟的提示,上篇我们讲过,要OD反汇编窗口显示软件的字符串得先查找字符串

往下面滚一段以后,我们发现来到了上面选中代码的地方,这貌似就是我们的正确提示了,还有个rtcmsgbox,还不放心的话

我们在正确的提示上面的je这一行,

选中它,然后点击鼠标右键,断点->运行到所选位置 或者F4运行过来

运行到了以后,发现这个跳转实现了,也就是跳过我们的正确提示了,这时候大家应该都知道 nop掉的话 肯定就成功了,

嘿嘿,既然你们知道了 怎么爆破,今天就讲讲原理吧,je 是表示 运算结果为0的时候跳转,运算结果为0的时候 寄存器窗口的Z标志 会被设置成1

我们看看右上的寄存器窗口

果然,寄存器窗口是1那么 表示运行结果为0 je也会跳转,我们在标识上双击,这样Z表示就变成0了,也就是je不会跳转

然后F9运行,发现已经提示正确了(注意 改标志位的方法 只有调试的过程中才有用,这方法常常用于我们nop前试试是否真的有效)

打赏