【工具】 dnSpy-Chinese.zip de4dot-Reactor5.0.rar 火绒剑v5.0.47.zip
【环境】 Windows10 x64
【程序】VBA代码宝-2021.zip


一、更新记录

注意哦,这里它在关键信息这里进行了加密传输和保存
VBA代码宝-2021版 - 图1

二、行为分析

1.打开火绒剑过滤Excel.exe进程
VBA代码宝-2021版 - 图2
2.打开EXCEL的VBA编辑器查看VBA代码的关于界面,发现剩余是0天,与此同时它还读取了**active_...**注册表的值
VBA代码宝-2021版 - 图3
3.在图中画线条目上右键跳转到
VBA代码宝-2021版 - 图4
4.这个是我们在2018版本的注册信息,它的这个值还是DES加密,这里读取出来为0说明这个版本不是DES加密
VBA代码宝-2021版 - 图5
5.那我们破解这款软件的思路是什么呢?

  • 既然程序会读取这个使用期限,并且还进行了解密操作,如果发现解密不出来,就限制程序的使用
  • 如果它可以成功的被解密出来,那程序就可以正常使用,在此时肯定会有一个标志这个软件是否可用状态
  • 我们要做的就是找到这个标志修改这个标志让它无论什么情况下都可用

    三、静态分析

    3.1、脱壳

    1.首先用.Net Reactor脱壳,与2018版本一样
    VBA代码宝-2021版 - 图6

    3.2、搜关键字

    1.将脱壳后的文件载入到dnSpy里,搜索active_nextActiveDate,发现有两条结果,在Read上右键分析引用,具体如下图所示,我们先看最后一个UpdateLastRuntime
    VBA代码宝-2021版 - 图7

    3.3、修改激活属性

    1.

  • 发现这里有一个s_isAvtive属性,并且还是有条件赋值,那它肯定就是一个软件激活的标志了

  • 所以我们在这个方法空白处右键——>编辑方法将所有的赋值为flase的地方改成true,下图中是已经改好的

VBA代码宝-2021版 - 图8
2.查找第2处引用,发现是一个Do方法,同时调用了IsActiveCyle和GetDaysRemaing,重点我们看看SetActive方法
VBA代码宝-2021版 - 图9
3.跟随并编辑SetActive方法将它强制赋值为true
VBA代码宝-2021版 - 图10

3.4、修改剩余时间

1.在Do方法附近可以看到有一个窗口加载的方法,有一个剩余的天数将它改成99999999
VBA代码宝-2021版 - 图11
2.在调试Do方法的查看调用栈的时候发现有一个Init方法,下面发现有一个有意思的内容
VBA代码宝-2021版 - 图12

四、保存测试

1.点击菜单栏->保存模块->设置一个新文件名->点击保存
VBA代码宝-2021版 - 图13
2.打开Excel->点开VBA编辑器->打开VBA代码宝关于界面,所有功能已经全部可用
VBA代码宝-2021版 - 图14