相关文章推荐
侠义非凡的课本  ·  NVDA 更新日志·  5 天前    · 
曾经爱过的松树  ·  DevExpress Universal ...·  5 天前    · 
潇洒的山楂  ·  Uncaught ...·  4 天前    · 
率性的稀饭  ·  地图服务(HarmonyOS)·  19 小时前    · 
AI AWS AX Axure Azure BlueMix CAA DDoS DNS DNSSEC DNSViz DYN GCP IAM Jmeter LB Local DNS Network Oracle PL/SQL PM Public DNS RFC Recursion DNS RunAsDate SOA SSL TCP UDP UML VPC VSCode VirtualHost Vmware Win8 Windows api axure bind caddy deepseek dig edns-client-subnet git hexo https jquery libfaketime mac node npm postman sitemap stylus v2ex web 产品管理 产品运营 协议 域名 域名劫持 域名攻击 域名格式 域转移 备案 安全 泛域名 测试 版权 用户鉴权 程序员 网站 虚拟机 解析流程 记录类型 设计师 负载均衡器 资源协作 顶级域 项目管理

众所周知,Axure 9 升级到 Axure 10 后,就从原本的永久授权变更为订阅授权。同时 Axure 10 的订阅注册激活码与 Axure Cloud 的用户账号强绑定,激活时将根据登录账号在线跳转到官方网站实时获取注册状态。

一直以来,我还挺喜欢尝试新鲜事物的,尤其是各种软件、网站、科技产品等。Axure 作为互联网产品经理的必备软件,在 Axure 10 正式版诞生后,它默认提供一个月的试用期,于是我就早早的参与到试用大军中。

别说还挺好用的,尤其是动态面板多状态一起编辑,以及一键将表单转换成中继器并将中继器表格直接浮于内容区,真的有惊艳到我。(虽然工作中这俩功能其实并不常用hhh

尽管被惊艳到,但由于我已经习惯了 Axure 9 ,试用期一过就没有再去尝试了。并且由于高版本文件无法用低版本打开,所以也没敢将 Axure 10 作为正式的生产力工具。

前段时间心情不错,突然又想折腾一番~

背景原理

既然可以免费试用一个月,那么验证时一定跟你打开软件的时间有关系。

Axure 这款软件性质是本地软件,正常来讲除了原型发布时其他时间均无需联网。

尝试了下:

将电脑断网后通过离线修改 PC 本地的系统时间到可试用时间,再打开 Axure RP 10 确实可以继续试用。而且只要当前运行的软件不退出(窗口不关闭),即使恢复联网电脑系统时间被同步到正确到时间,依然还可以正常使用。

可是,咱总不能为了使用这款软件每次去断网修改系统时间后再联网吧?那可多麻烦。

就没有什么办法可以让这个软件启动的时候就自动完成这些操作吗?

答案当然是“有”,而且可能比咱想象的更好用。

Windows 环境

要说我能找到这样的工具,得益于软件测试的出身。当遇到有关时间的测试时,总会去获得一些奇怪的知识。

Windows 兼容性高,逆向工程较成熟,反编译的成本相对来说比较低,所以能为软件修改启动时间的工具还挺多的。

下面就以 Axure 10 的使用为例,挑几个比较知名的工具介绍下。

RunAsDate

官方网站: https://www.nirsoft.net/utils/run_as_date.html

RunAsDate 是一个绿色便携的软件,不用安装也不写注册表,就地执行即可。

为了方便永久试用目标软件,它可以在指定目标软件后创建新的目标软件快捷方式。此后点击该快捷方式即可运行目标软件,并且目标软件的系统启动时间就是你设置的时间。以下是我本地的软件配置:

完成快捷方式创建后启动 Axure RP 10 的效果,右上角提示还有 11 天过期(我是 2022 年 3 月份申请试用的):

PS:创建快捷方式后会在同目录生成 RunAsDate 的启动参数配置文件 RunAsDate.cfg ,另外也可以在同目录通过写一个名为 RunAsDate_lng.ini 的语言配置文件达到为 RunAsDate 汉化的目的(官方网站上有提供汉化配置下载)。因此建议将 RunAsDate 工具及其配置放到一个独立的目录,然后可将该目录和目标软件目录放到一起。

CrackLock

官方网站: https://william.famille-blum.org/software/cracklock/

CrackLock 多年前用来做过测试,原理是一样的,也是改程序运行时的虚拟时间来实现。

因为这个软件需要安装,所以我个人更倾向使用 RunAsDate 。不过它有个优点是可以直接修改替换掉可执行程序(当软件禁止注入时就可能是缺点了),我没有在 Axure 10 上试用,感兴趣的童鞋可以试试看。

MAC 环境

libfaketime

这是一个开源的程序库,其 GitHub 地址: https://github.com/wolfcw/libfaketime

这个库在 Linux 和 MAC 上都可以用,通常用来测试 Linux 上开发的软件。虽然 MAC 上可能会惯常用 UI 应用程序(就像 Axure 一样),其实也是可以找到对应的可执行程序来使用的。

话不多说,先安装起来。

打开终端,在本地创建一个目录后, git clone https://github.com/wolfcw/libfaketime.git 下载源码,然后进入目录执行 sudo make install 输入本机登录密码即可安装成功。

安装成功后,可通过 faketime 命令测试软件是否能达到效果。例如在 date 命令前置 faketime 以输出时间:

1
2
~ » faketime -f '2022-04-01 00:00:00' date                            
2022年 4月 1日 星期五 00时00分00秒 CST

然后同样的道理可以用到应用程序上,将上面的 date 命令替换为 App 的全路径可执行程序即可。例如可以试试将 Axure RP 10 的可执行路径 /Applications/Axure\ RP\ 10.app/Contents/MacOS/Axure\ RP\ 10 放到 faketime 后执行:

1
2
3
~ » faketime -f '@2022-04-01 00:00:00' /Applications/Axure\ RP\ 10.app/Contents/MacOS/Axure\ RP\ 10 
Environment version 6.0.0
Framework description .NET 6.0.0-rtm.21522.10

可以看到已正常启动软件,并且右上角也是提示还有 11 天过期:

可如果每次都要这样启动,是不是未免也太麻烦了点?

其实也不用。

我们进入到应用程序列表,双指点击 Axure RP 10 后单指点击“显示包内容”:

打开后会看到当前目录下有一个名为 info.plist 的文件:

然后编辑这个文件,在 <dict> 内加入如下代码后保存:

1
2
3
4
5
6
7
8
9
10
11
<key>LSEnvironment</key>
<dict>
<key>DYLD_FORCE_FLAT_NAMESPACE</key>
<string>1</string>
<key>DYLD_INSERT_LIBRARIES</key>
<string>/usr/local/lib/faketime/libfaketime.1.dylib</string>
<key>FAKETIME</key>
<string>@2022-04-01 00:00:00</string>
<key>FAKETIME_STOP_AFTER_SECONDS</key>
<string>10</string>
</dict>

编辑完后重启电脑,或者打开终端执行命令: /System/Library/Frameworks/CoreServices.framework/Frameworks/LaunchServices.framework/Support/lsregister -v -f /Applications/Axure\ RP\ 10.app

设置完成后,打开启动台点击 Axure RP 10 的图标即可正常使用咯。

不过,此方法可能会在软件更新或升级后因重置了 info.plist 而失效,需要再次做上述操作后才可使用。

结语

以上方法仅供个人测试,商业使用还请寻找官方渠道获得授权。

由于各软件的验证机制的原因,不保证通用,也无法保证以上方法永久有效,还请低调试用。

PS:若试用不成功请自行解决或购买授权,本人不会提供任何技术解答。