鼠标连点器烦人弹窗?我直接爆破

项目需要测试一款芯片,重复性采集数据,网上随便找了一个鼠标连点器,试了一下,发现还挺好用的,结果用着用着,居然要卡半天,提示未注册用户需要暂停使用一分钟。本着学习的目的,尝试了一下绕过验证,结果令我大吃一惊!!!

一、软件使用界面

界面还是很清爽的
界面还是很清爽的
这大大的试用版属实扎眼
这大大的试用版属实扎眼
就是这玩意儿
在这里插入图片描述
注册选项在这里面
在这里插入图片描述
在这里插入图片描述

二、给软件做个体检

1.查壳

很好,Delphi写的,没有壳
在这里插入图片描述

2.错误提示

随便输入注册邮箱和注册码
在这里插入图片描述
可以看到弹窗以及里面的字符串:”注册码不正确“
在这里插入图片描述

3.OD分析排坑

  1. 载入OD中,F9运行程序
    在这里插入图片描述
  2. CTRL+G转到00401000,这是程序运行的起始位置
    在这里插入图片描述
  3. 转到之后有OD帮我们分析的东西,不太需要,直接干掉看汇编源码,从模块中删除分析(我的已经删除了)
    在这里插入图片描述
  4. 关键一步查找字符串,还记得之前的错误提示吗?不是Vb程序,直接智能搜索即可
    在这里插入图片描述
  5. 出来的字符串太多了,直接CTRL+F查找 ”注册“
    在这里插入图片描述
    6.可以找到两处比较关键的位置(第二处才是正主!!)
    在这里插入图片描述
    在这里插入图片描述
  6. 依次双击进去,找关键跳转,如图所示,je跳过了注册成功的字样,跳到了注册码不正确的地方,可能就是他了,直接nop掉,然后保存到文件,看看效果
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    提示注册成功了,只不过要重新启动,结果重启之后还是试用版,所以这TM是个重启验证的程序!!
    在这里插入图片描述

4.追码法失败

既然是重启验证,第一反应是尝试追码法,因为已经定位到了一个可能是关键位置的跳转,那往上肯定有一个关键call,这个call的返回值就是影响下面跳转,是跳到注册成功,还是注册失败。
通常来说,关键跳上面的就是关键call,很容易定位到。
在这里插入图片描述
既然关键call有了,可以利用他来干嘛呢?平时我们写程序,喜欢在某个函数中,首先读取用户的输入字符(此处就是假码),然后和某个字符串做对比(此处就是软件的真实注册码),如果比较的结果一样,那么就返回true,否则返回false。所以程序在对比分析的时候,无意之中暴露了自己,我们通过OD进入这个关键call,然后读取寄存器的数值,很有可能就能找到真码!
在上图中的call处下断点,然后点击注册,输入假码,程序就会断在此处,F7单步进call运行(和F8的区别就是,一个遇到函数直接过,一个会进入函数单步执行),进入call之后,单步F8即可。
注意,寄存器中已经出现输入的假码了!
在这里插入图片描述
继续往下跟,出现了非常可以的字符串,复制下来备用,然后继续看又没有其他可疑的了
在这里插入图片描述
直到出call,都没有类似可疑的字符串了,所以接下来就是用上述可疑字符串去测试能不能通过了,注意,注册码对应的注册邮箱要是保持一致,因为注册码计算的方式是通过注册名生成的

打开软件,输入测试,结果还是注册失败,所以追码失败了!

5.常量法爆破

第三步中试图绕过注册码失败,因为他是一个重启验证的程序,只能从第二个字符关键位置下手了,同样是双击进去,也能找到关键跳转,这下不用直接爆破的方法了,采用更加稳妥一点的常量法。注意je跳转上面的cmp byte ptr ds:[0x****],0x0,这句代码的意思就是某个寄存器的值,和0x0做比较,影响下面的关键跳转,而且这个寄存器值是个常量,0x*****,所以从他下手。
在这里插入图片描述
复制这个常量值,然后查找所有的常量,出现了很多处,说明程序在多处都有判断软件是否被注册了
在这里插入图片描述
在这里插入图片描述
熟悉汇编的同学估计可以看的比较清楚,对于mov指令就不用考虑了,我们只考虑cmp比较指令处的常量,在这些地方下断点
在这里插入图片描述
然后重新运行程序,程序断在如图所示的地方,发现了非常可疑的东西,此时只要修改je或者cmp比较的值(即将0x0换成0x1即刻影响跳转)
在这里插入图片描述
依次修改0x0,然后继续运行,断下来就重复操作,最后将所有修改保存至可执行文件。
在这里插入图片描述

这下应该就没有烦人的弹窗了。

Guess you like

Origin blog.csdn.net/qq_34935373/article/details/121271789