beSTROM绕过试用限制

admin 2022年6月29日02:50:24评论280 views字数 1484阅读4分56秒阅读模式

声明

本文只是科普和供专业人员在合法范围内进行研究,严禁学习用于非法用途。由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,本公众号及文章作者不为此承担任何责任。

前言

Beyond Security出品的beSTORM是商业市场上最通用的模糊测试工具之一。无需访问源代码即可执行测试,几乎可与任何应用程序、协议、语言乃至硬件一起工作,甚至还可以测试为特定行业和特种应用设计的设备和程序。比如物联网、过程控制应用、与can总线兼容的汽车应用、航空工具和低耗能蓝牙设备。

多功能性是beSTORM的最为突出的价值所在,程序员只需学习使用单个界面,就可以针对几乎无限数量的设备或应用程序发起模糊测试。beSTORM测试平台预置了250个测试模块,并且还能轻松地添加新的模块,以覆盖另类或专有的应用程序。

此外,beSTORM还可以作为云服务访问。通过这种方式,一个大型机构可以购买该平台,然后向不同地点的多个用户提供模测工具的使用。

但是beSTORM的试用版只能试用30分钟,如下图。

beSTROM绕过试用限制


想要使用更久,除了充钱就只能尝试逆向分析,看看能否绕过试用限制了。由于过程比较简单,本文更适合一些初学逆向分析的朋友们观看。

软件分析

使用exeinfo打开,发现是32位无壳的程序。

beSTROM绕过试用限制

而后通过IDA打开进行分析,通过搜索字符串找到一串这样的字符。

beSTROM绕过试用限制

这正是报错的地方。

查看其引用继续分析。发现其在0445F71位置使用了 该字符串,查看附近代码


beSTROM绕过试用限制

取当前时间和qword_64D980处的数据比较。而qword_64D980处的数据是通过上面的if函数获取值的。判断dword_64D988的位置是否为0,当其为0 时走入if中会把64D988置为1,并且把qword_64D980的值设置为当前时间,简单来说就是软件第一次运行时会取当前时间,之后在运行过程中发现当前和刚运行的时候的时间差大于1980则退出。

至此摸清了时间检测的逻辑,下一步就是绕过限制了。

绕过限制

这里可以通过对程序patch的方式来完成绕过限制,最简单的方法就是改一个非常大的时间差。

以下是比较时间差处的汇编,直接把7BC改大。

beSTROM绕过试用限制

点开hex view

beSTROM绕过试用限制

这里直接把BC 07 00 00 改成我们想要的时间差。

改完之后的效果如下

beSTROM绕过试用限制


我们尝试替换掉程序跑一下,看看还会不会弹出试用期30分钟的提示。结果发现并不能成功。

进一步进行排除,我把比较的时间改为较小数值,并且修改了snprintf函数的参数,把30改成了31,如下图所示。

beSTROM绕过试用限制


改完之后,还是出现弹框如下图,并且时间提示信息仍然是30不是31.

beSTROM绕过试用限制

根据运行结果,说明我们修改的地方错了,真正的检测可能不在此处。

再回头看字符串beSTORM Trial cannot run test for more than %d minutes. 的引用。发现我们看漏了一个,有另一块的代码使用了它,走进来看一下。

beSTROM绕过试用限制


和之前我们分析的那段代码一样的逻辑,只不过这次的时间差是0x708 正好是 1800秒,至此确认这部分是真正的验证代码。接着我们做一些小修改尝试一下。

更改后如图所示。

beSTROM绕过试用限制



再次进行尝试。经过三十分钟后没有再退出,成功。

逆向中,需要耐心以及细心,不够细心的话很可能像我一样忽略掉关键的信息。

结语

以我的视角来看逆向分析,分为两个过程,第一部分过程是定位程序的检测代码位置,例如一些需要license的程序判断license的位置。第二部分过程是修改程序或者编写代码完成绕过限制的效果,例如本文中的patch二进制程序,又或者是编写注册机等等。


原文始发于微信公众号(BeFun安全实验室):beSTROM绕过试用限制

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年6月29日02:50:24
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   beSTROM绕过试用限制http://cn-sec.com/archives/1136817.html

发表评论

匿名网友 填写信息