小萌博客 - 既是个人原创，又是汇聚分享 - immoe.org - Navicat Premium 无限试用
RunAsDate.exe一款可修改软件系统时间，实现软“破解”（含源码）
全篇转载自 @如有乐享 ，由 小萌 进行编辑，本文仅作存档使用博主之前分享过一些关于软件手动“破解”的方法！对于一些试用一段时间的软件，如果过了试用期只能寻找软破解的路子了！过了试用期的软件，好多软件都支持修改系统时间来实现继续使用！比如在 2018年的 Xshell无法启动：要继续使用此程序，您必须应用最新的更新或使用新版本 其中有一种方法就是修改系统时间！再比如前一段时间分享的：体验Navicat Premium 16，无限重置试用14天方法(附源码)博主亲测也可以利用该方法实现继续试用！软件介绍RunAsDate 是一个小型实用程序，可让您在指定的日期和时间运行程序。此实用程序不会更改您计算机的当前系统日期和时间，但它只会将您指定的日期/时间注入所需的应用程序。您可以同时运行多个应用程序，每个应用程序使用不同的日期和时间，而系统的实际日期/时间继续正常运行。软件下载https://www.nirsoft.net/utils/run_as_date.html关于汉化官方提供汉化文件！官方下载页面最下方可见！RunAsDate也有其他语言版本。要更改 RunAsDate 的语言，请下载适当的语言 zip 文件，解压缩“runasdate_lng.ini”，并将其放在已安装 RunAsDate 实用程序的同一文件夹中。基本操作1）官方提供X32和X64俩个版本，需要根据你的软件情况选择！不知道咋选？挨个试一试！2）软件截图，这里就以XShell 5 为例！直接将软件的可执行文件选择到应用程序框内设置要修改的软件要穿越到哪个时间直接点击运行即可！3）软件成功启动了！因为XShell5于2018年12月25日被官方强制清退。历史文章： Xshell无法启动：要继续使用此程序，您必须应用最新的更新或使用新版本 4）当然软件支持直接在桌面创建快捷方式，下载直接双击快捷方式就可以运行啦！这是什么原理？右键快捷方式 查看目标框内的内容就了解了！5）再比如软破解 Navicat Premium 16 你懂的！6）软件还支持管理员方式运行，支持附加到进程！软件原理RunAsDate 拦截返回当前日期和时间（GetSystemTime、GetLocalTime、GetSystemTimeAsFileTime、NtQuerySystemTime、GetSystemTimePreciseAsFileTime）的内核 API 调用，并将当前日期/时间替换为您指定的日期/时间。开源代码目前官方并未开源代码！不巧N年前马甲大佬E盘上收藏了一份代码！原理就如同本文介绍的软件一样的功能！但是只是拦截了部分dll的时间！开源仓库：https://github.com/malaohu/RunAsDate最后说明就如官方作者所言，他不能保证这个程序能使所以软件穿越！下面是翻译的内容！我收到许多电子邮件，上面写着“我试图用 RunAsDate 延长 xyz 软件的试用期，但没有用”。运行具有不同日期/时间的软件可用于许多合法目的，为此创建了 RunAsDate。我从未暗示或明确说过 RunAsDate 可用于延长软件的试用期。对于某些共享软件程序，RunAsDate 可能确实有效，但是许多共享软件创建者足够聪明，可以检测到日期/时间已被修改，并且当他们检测到时间更改时，他们会立即结束试用期。请不要打扰自己向我发送有关延长软件试用期的问题，因为这类消息只是被删除而没有回答。 懂技术的大佬可以研究研究原理！其他童鞋会用就噢了！
全篇转载自 @如有乐享 ，由 小萌 进行编辑，本文仅作存档使用前几天又重装了一下电脑~ 于是又要安装Navicat Premium的时候，发现官方发布了 Navicat Premium 16 版本！下载安装完发现UI比之前确实清新了不少~ LOGO也变成金色的了！哎嗨，问题来了。咋激活呢？翻了一圈，博主并没有找到开源代码的破解激活工具。于是马甲就想起了之前的重置试用的路子！！Navicat Premium 15 怎么激活？参考历史文章： 注册激活Navicat全系产品的开源代码分享 替换DLL目前网上有不少替换DLL文件激活的方式。如果大家想用自己去搜索吧。我这里不推荐了。你懂的~~~~无限试用这是目前博主主要推荐的方式！原理：就是清除注册表相关信息实现再次试用14天！该方式试用目前 Navicat Premium 大部分的版本。好处：不担心各种软件后门问题！ 缺点：每次启动软件都会提示试用时间，仅支持 Navicat Premium好嘞，下面就介绍一下如何重置试用！手动打开系统注册表找到以下位置 HKEY_CURRENT_USER\Software\Classes\CLSID\ {FCABAC0C-4447-F047-51F3-7E27276ECA6F} \Info提醒一下：不同系统红色ID 可能不一样哦~！直接将 Info 目录删除即可！脚本以下是 Python3 代码保存成 xx.py直接执行：python3 xx.pyimport winreg import os import time from collections import deque from typing import Any # root HKEY_CURRENT_USER = winreg.HKEY_CURRENT_USER # key path PREMIUM_PATH = r'Software\PremiumSoft' CLSID_PATH = r'Software\Classes\CLSID' def get_sub_keys(root: Any, reg_path: str) -> list: """This function will retrieve a list of sub-keys under the path of `root` + `reg_path`. Args: root(Any): Root registry. reg_path(str): The relative specific path under the root registry. Returns: The list of sub-keys. """ key_result = winreg.OpenKeyEx(root, reg_path) i: int = 0 sub_keys_list: list = list() while True: try: sub_keys = winreg.EnumKey(key_result, i) sub_keys_list.append(sub_keys) i += 1 except Exception as e: break return sub_keys_list def get_all_keys(root: Any, key_path: str) -> list: """Get the list of absolute path of all entries under the specified path through the deque. Args: root(Any): Root registry. key_path(str): The relative specific path under the root registry. Returns: A list of all entries under the keys. """ all_keys_list: list = list() qeque = deque() qeque.append(key_path) while len(qeque) != 0: sub_key_path = qeque.popleft() for item in get_sub_keys(root, sub_key_path): item_path = os.path.join(sub_key_path, item) if len(get_sub_keys(root, item_path)) != 0: qeque.append(item_path) all_keys_list.append(item_path) else: all_keys_list.append(item_path) return all_keys_list def main(): """The entry function to be executed. Returns: None """ clsid_all_keys_list = get_all_keys(HKEY_CURRENT_USER, CLSID_PATH) premium_all_keys_list = get_all_keys(HKEY_CURRENT_USER, PREMIUM_PATH) premium_sub_keys_list = [os.path.join(PREMIUM_PATH, item) for item in get_sub_keys(HKEY_CURRENT_USER, PREMIUM_PATH)] print(f"premium_sub_keys_list: {premium_sub_keys_list}") for clsid_item in clsid_all_keys_list: if "Info" in clsid_item: clsid_item_prefix = os.path.dirname(clsid_item) print(f"# Info item: {clsid_item}") winreg.DeleteKeyEx(HKEY_CURRENT_USER, clsid_item) winreg.DeleteKeyEx(HKEY_CURRENT_USER, clsid_item_prefix) # The outermost folder is not deleted. for premium_item in reversed(premium_all_keys_list): if "Servers" in premium_item: print(f"Tips: Servers => {premium_item} will not be deleted.") pass elif premium_item in premium_sub_keys_list: print(f"Tips: Servers => {premium_item} will not be deleted.") pass else: winreg.DeleteKeyEx(HKEY_CURRENT_USER, premium_item) if __name__ == "__main__": print("Start to delete registry...") main() print("Task done.", "Windows will closed after 5 seconds...", sep="\n") for i in range(5): time.sleep(1) print("*" * (i + 1))没有python 环境的可以直接下载下面的exe，直接运行即可！链接：https://url85.ctfile.com/f/21259585-530797466-57a016 （访问密码：9197）当然上面的Python太麻烦？可以直接利用bat脚本！更简单！将以下内容保存成xxx.bat 直接运行xxx.bat 即可！@echo off ​ echo Delete HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium\Registration[version and language] for /f %%i in ('"REG QUERY "HKEY_CURRENT_USER\Software\PremiumSoft\NavicatPremium" /s | findstr /L Registration"') do ( reg delete %%i /va /f ) echo. ​ echo Delete Info folder under HKEY_CURRENT_USER\Software\Classes\CLSID for /f %%i in ('"REG QUERY "HKEY_CURRENT_USER\Software\Classes\CLSID" /s | findstr /E Info"') do ( reg delete %%i /va /f ) echo. ​ echo Finish ​ pause项目：https://github.com/malaohu/reset-navicat-premium/blob/main/reset.bat手动执行比较麻烦可以利用 Windows 定时任务！参考：https://github.com/Abeautifulsnow/navicat-premium-crack/