首页
社区
课程
招聘
[原创]Everedit的试用限制绕过
发表于: 2020-8-10 14:59 14674

[原创]Everedit的试用限制绕过

2020-8-10 14:59
14674

 因为蜜汁自信导致我在短短两天内重装了7次系统,导致Everedit当年的注册码生成次数耗尽,所以想着先把试用限制过了凑合着用到明年。

从4.0版本开始授权文件就没有保存在本地的选项了,都是保存在注册表里,试用限制也是如此,先跟一下。

其实都不用查壳都知道是vmp,先拉到x64dbg里面对(RegQueryValueExW)跨模块调用里面的关键函数下断:

跑起来以后断下了:

   RDX应该是第二个参数: lpValueName(在x64下对函数的调用都是优先使用寄存器的,第一个参数是RCX),license不是我们想要的,继续跑。F9以后直接跑飞了,说明试用限制的call被加密了。直接对kernelbase.RegQueryValueExW这个函数下断,并记录他的RBX。跑了一遍以后发现了一个可疑的字符串:

跟踪他的来源,发现调用果然被加密了:

但是我们的目的已经达到了,打开注册表编辑器,看看这个项到底有什么玄机:

我觉得这个默认项很像时间戳啊,于是转换之:

5ECCEFBD -> 1590489021 -> 2020-05-26 18:30:21

那我们把试用条件改成今天0点试试:

2020-08-10  00:00:00 -> 1596988800 -> 5F301D80

发现还是提示过期,尝试将Value这个值删除,能正常打开了。

分析部分就到此结束了,下面开始敲代码

采用劫持导入表hook的方案。

由前面的分析已经可以大致确定几个关键点了:

RegQueryValueExW

L"ZQBKAF8AMQA0ADIANGA4"

由于我们并没有去找机器码的算法,所以要做一些额外的工作。

大致思路如下:

hook advapi32.RegOpenKeyW获取项的名称和HKey用于比对。

hook kernelbase.RegQueryValueExW 欺骗程序,告诉它:值“Value”并不存在;生成一个合法的“时间点”,然后改写函数的参数。


dllmain.cpp:

创建一个名为“Out”的导出函数用于导入表劫持。

DllModule.h:

DllModule.cpp:

hooks.cpp:

detour RegOpenKeyW的流程大致如下:

使用一个全局静态变量g_reg_open_key_w_call_count记录其被调用的次数。


[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

最后于 2020-8-12 17:04 被黑洛编辑 ,原因:
上传的附件:
收藏
免费 6
支持
分享
最新回复 (22)
雪    币: 6525
活跃值: (3570)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
2
兄弟,有生成好的文件吗?
2020-8-11 09:58
0
雪    币: 1246
活跃值: (4322)
能力值: ( LV5,RANK:69 )
在线值:
发帖
回帖
粉丝
3
写的很好,收藏了
2020-8-12 06:13
0
雪    币: 1195
活跃值: (1125)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
厉害了,收藏学习
2020-8-12 08:56
0
雪    币: 1478
活跃值: (4012)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
5

能否上传完整代码学习一下,这几个文件找不到

#include <base/hook/fp_call.h>

#include <base/hook/inline.h>

#include <base/util/xorstr.hpp>

#include <base/util/Debug.hpp>


最后于 2020-8-12 12:49 被方向感编辑 ,原因:
2020-8-12 12:49
0
雪    币: 6124
活跃值: (4721)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
6
Kisesy 兄弟,有生成好的文件吗?
国产软件的话,不能提供bin。
2020-8-12 16:49
0
雪    币: 6124
活跃值: (4721)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
7

代码上传到附件了。

config.h:

#define _BASE_API

Debug.hpp是调试用的,可以全部注释掉。

xorstr_字符串混淆库,可以去除,直接使用字符串

编译这份需要vs2019最新版本,并将C++语言标准设置为最新草案标准(C++20)


最后于 2020-8-12 17:07 被黑洛编辑 ,原因:
2020-8-12 16:53
0
雪    币: 6124
活跃值: (4721)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
8
方向感 能否上传完整代码学习一下,这几个文件找不到#include&nbsp;&lt;base/hook/fp_call.h&gt;#include&nbsp;&lt; ...

xorstr_()不是必须的,直接用字符串就行了。

最后于 2020-8-12 16:55 被黑洛编辑 ,原因:
2020-8-12 16:55
0
雪    币: 1378
活跃值: (3067)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9

让我学到一招搜索call.不错.

2天之内7次重装系统,哈哈哈...

最后于 2020-8-12 18:35 被风中小筑V编辑 ,原因:
2020-8-12 18:28
0
雪    币: 6124
活跃值: (4721)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
10
风中小筑V 让我学到一招搜索call.不错.2天之内7次重装系统,哈哈哈...
搜索跨模块调用挺有用的,你看看调用了哪些api就大概能知道程序做了什么,还包括程序自身的模块间的调用,这样分析起来定位比较快一点。
2020-8-12 19:09
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
谢谢,能不能把hooks.h也传一下
2020-8-14 20:01
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12

还差base::hook吧


最后于 2020-8-14 22:55 被yaoguen编辑 ,原因:
2020-8-14 20:27
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
黑洛 搜索跨模块调用挺有用的,你看看调用了哪些api就大概能知道程序做了什么,还包括程序自身的模块间的调用,这样分析起来定位比较快一点。
能不能把hooks.h也传一下,谢谢
2020-8-14 22:12
0
雪    币: 6124
活跃值: (4721)
能力值: ( LV6,RANK:80 )
在线值:
发帖
回帖
粉丝
14
yaoguen 能不能把hooks.h也传一下,谢谢
只有两个函数定义void Install()和void Uninstall()
2020-8-15 01:21
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
黑洛 只有两个函数定义void Install()和void Uninstall()
base::hook::install(static_cast<uintptr_t*>(&real::RegOpenKeyW), \
你好,是不是还有一个类,base::hook::install(static_cast<uintptr_t*>(&real::RegOpenKeyW), \reinterpret_cast<uintptr_t>(fake::RegOpenKeyW), &hook_t::RegOpenKeyW);
base::hook::uninstall(&hook_t::RegQueryValueExW);这两个函数没找到
2020-8-16 08:51
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
现在是出现"unsigned __int64 hooks::real::RegQueryValueExW" (?RegQueryValueExW@real@hooks@@3_KA) 已经在 DllModule.obj 中定义错误
2020-8-16 09:26
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
编译成功,但是没起作用,不知道怎么回事,我是用的64位程序
2020-8-16 10:34
0
雪    币: 4661
活跃值: (4622)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
18
可以用了,但有两个问题,第一个是要删除注册表中value键值,第二个是点关于后不管点确定还是关闭程序都会退出。
2020-8-16 11:20
0
雪    币: 2324
活跃值: (5093)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
19
风中小筑V 让我学到一招搜索call.不错.2天之内7次重装系统,哈哈哈...
哪里有搜call?
2020-8-16 11:47
0
雪    币: 1378
活跃值: (3067)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
20
值得怀疑 哪里有搜call?
就第一步.   右键 搜索->当前模块-> 调用.    他第一张图片在第二步过滤了.
2020-8-17 09:42
0
雪    币: 2402
活跃值: (6808)
能力值: ( LV7,RANK:102 )
在线值:
发帖
回帖
粉丝
21
不是特别好用,经常解析不出xml,json。得结合其他编辑器,例如NotePad++,010Editor一起使用
2020-8-20 20:36
0
雪    币: 3128
活跃值: (3927)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22
网上有个一字节爆破的    通过32位分析64位的
2022-9-14 12:06
0
雪    币: 3269
活跃值: (1415)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
23
64位的分析在哪里呢
2022-11-7 14:45
0
游客
登录 | 注册 方可回帖
返回
//