SimHub 智能自适应激活器 v1.0.0 发布与使用指南
SimHub 是一款广泛应用于模拟赛车(如《神力科莎》、《F1》等)的仪表盘、外设及震动板控制软件。本文介绍的 SimHub Auto Activator 工具基于 Mono.Cecil 内存动态 IL 修改技术,实现了对最新版授权逻辑的自动化热补丁,原生支持 Base 基础版 与 Motion 动感版 功能。
软件下载
- 最新二进制发布包:SimHub_Auto_Activator_v1.0.0.zip
核心特性
- 动态内存热补丁:自动提取主程序清单嵌入资源中的原生
SimHub.Licensing.dll,在内存中完成 MSIL 指令修改后重新打包写回,完全避免了替换旧版 Mock DLL 带来的接口缺失与崩溃风险。 - 构造函数防护:安全清空
LicenceInfo类构造函数主体并注入基类System.Object默认构造函数调用,规避混淆保护下私有字段未初始化引发的NullReferenceException异常。 - 自适应寻路算法:优先通过 Windows 注册表
SOFTWARE\WOW6432Node\Microsoft\Windows\CurrentVersion\Uninstall\SimHub_is1获取安装路径,并集成了默认安装路径与运行目录的多级回退策略。 - 静默无感启动:基于 PowerShell 与 VBScript 混合驱动,仅在软件版本升级或时间戳变动时请求一次管理员提权(UAC)以刷新补丁和 NGEN 缓存,日常启动无任何弹窗打扰。
项目结构与文件说明
ReplaceResource/:基于 Mono.Cecil 实现 IL 注入与资源重封包的 C# 源代码项目。ReplaceResource.exe:编译就绪的 Release 可执行二进制工具。SimHubLauncher.ps1/SimHubLauncher.vbs:版本差异检测与静默热补丁启动器。activate_simhub.bat:自动化部署、注册表寻路与桌面快捷方式生成脚本。
依赖库说明
项目直接引入了 Mono.Cecil 官方套件,允许在无需 C# 源码的前提下在 MSIL 中间语言层面对 .NET 程序集进行反编译与二进制重构:
Mono.Cecil.dll:核心元数据读写库,负责解析程序集结构、指令集与写回磁盘。Mono.Cecil.Rocks.dll:扩展工具库,简化对泛型类型(如List<T>)的动态构造与方法体扩展。Mono.Cecil.Pdb.dll/Mono.Cecil.Mdb.dll:Windows PDB 与 Mono MDB 调试符号维护支持。
安装与使用步骤
- 下载
SimHub_Auto_Activator_v1.0.0.zip并解压至任意临时目录。 - 右键
activate_simhub.bat选择 “以管理员身份运行”。 - 脚本会自动读取注册表定位 SimHub 根目录、部署启动器并应用初次热补丁,同时在桌面创建
SimHub (Auto Activated)快捷方式。 - 日常启动:双击桌面上的
SimHub (Auto Activated)快捷方式即可启动。
实现原理
根据 ReplaceResource 模块的 C# 源码实现,核心热补丁流程分为以下四个阶段:
1. WoteverCommon.dll 签名校验劫持
工具使用 Mono.Cecil 扫描 WoteverCommon.AssemblyHelper 类,定位到 RSACryptoServiceProvider::VerifyData 公钥签名校验方法:
1 | |
将紧随其后的条件短跳转 Brtrue_S 劫持为无条件短跳转 Br_S,跳过底层强签名合法性校验。
2. 嵌入式 Licensing.dll 内存抽取与 MSIL 重构
SimHubWPF.exe 主程序将官方授权逻辑储存在名为 SimHubWPF.Resources.SimHub.Licensing.dll 的嵌入资源(EmbeddedResource)中。补丁工具在内存中对其进行提取与重构:
1 | |
重写 get_Features 和 get_FeaturesNames 返回同时包含 Base 与 Motion 授权的 List 集合,最后将修改后的字节数组重新封包为 EmbeddedResource 塞回主程序,并抹除对 SimHub.Licensing 的强签名依赖。
3. 主程序授权检测点劫持
在 SimHubWPF.exe 模块中动态注入恒真辅助静态方法 SimHubWPF.IgnoreMarker.GetTrue():
1 | |
随后遍历主程序全量类与方法,扫描对 GlobalLicenseManager 授权校验属性(如 get_HasBaseLicense)的 15 处 调用位置,统一替换为对 GetTrue() 的静态 call 指令。
4. NGEN 原生映像缓存清理
在 Windows 平台中,.NET CLR 运行时会优先优先加载全局 C:\Windows\assembly\NativeImages_* 缓存中的原生映像(NGEN)。为了防止运行时 bypass 物理修改后的二进制文件,补丁更新后会自动调用 ngen.exe 清理缓存:
1 | |
免责声明
本项目仅用于逆向工程与 .NET IL 字节码注入技术交流,请支持正版软件。