已知问题和解决方案

有可能对用户产生重要影响的 Sentinel LDK 9.0 已知问题如下,按组件列出。

其他较不常见的问题可在这里找到。

本节包含如下内容:

>Sentinel LDK 安装和软件管理器

>Sentinel LDK-EMS

>最终用户,Sentinel LDK Run-time Environment,授权管理器,以及客户工具

>Sentinel LDK Envelope 和用于 Windows 平台的数据加密

>Sentinel LDK Envelope 和用于 Linux 系统的数据加密

>Sentinel LDK Envelope、数据加密和 Licensing API for macOS

 

Sentinel LDK 安装和软件管理器

参考编号 问题
SM-35287

从 Sentinel LDK v.7.3 到 v.7.8 升级到 Sentinel LDK v.7.10 时,Sentinel LDK-EMS 中客户联系人和渠道合作伙伴联系人的所有非英语区域设置都将转换为英语区域设置。

注:如果您的所有客户和渠道合作伙伴联系人都设置为使用英语区域设置,或者如果您没有升级 Sentinel LDK-EMS,您可以忽略此问题。

解决方案:此问题的一个解决方案请见这里

SM-109765

在 Windows 11 下,软件管理器(Sentinel Up)没有将来自 Sentinel LDK 的有关软件更新的通知传递给开发商。

解决方法:监控 Sentinel LDK 下载页面并查看更新何时发布。

您也可以订阅此页面(文章 KB0021845)以接收通知:

https://supportportal.gemalto.com/csm?id=kb_article_view&sys_kb_id=c2241c1d1bb41890f12064606e4bcb3e&sysparm_article=KB0021845

Sentinel LDK-EMS

参考编号 问题
SM-12832

当用户单击电子邮件中提供的链接(由 Sentinel LDK-EMS 发送)以显示计划报告时,当 DNS 服务器无法解析链接中存在的服务器主机名时,不会显示该报告。但会显示消息“无法显示此页面”。

解决方法:在用户机器上的 etc/host 文件中,添加一个包含 Sentinel LDK-EMS 机器的主机名和 IP 地址的条目。

SM-19045

在 Sentinel LDK 7.7 之前与渠道合作伙伴关联的客户在 Sentinel LDK-EMS 中对相关渠道合作伙伴用户不可见。但是,渠道合作伙伴用户将无法使用相同的电子邮件地址为现有客户创建新条目,因为 EMS 数据库中已有该电子邮件地址。在这种情况下,渠道合作伙伴用户将无法完成该客户的授权。

解决方法:如果渠道合作伙伴用户无法在 Sentinel LDK-EMS 中创建所需的客户,软件开发商应为客户处理授权的生产。

SM-108638

升级到最新版本的 Google Chrome 或 Microsoft Edge 版本 95 或更高版本后,如果您使用 HTTP 模式访问 LDK-EMS,与保护锁相关的功能将被阻止。这适用于开发商门户和客户门户。

解决方法:将Sentinel LDK-EMS 切换到 HTTPS 模式。

SM-52262 导入或更新一个主锁后,您必须通知所有 Sentinel LDK-EMS 用户注销再重新登录以获得最新的更改。
SM-68428

当您在 Sentinel LDK-EMS 中生成产品密钥授权时,如果未指定客户联系区域设置,客户将不会收到授权证书电子邮件。

解决方案:为客户指定区域。

SM-139221

生成重新打开的授权会导致以下错误:

"发生了内部错误。联系系统管理员寻求帮助。"

此问题在授权被重新打开后出现。

解决方法:如果授权已经有任何激活,请不要重新打开授权。如果要创建新的授权,可以复制授权。

最终用户,Sentinel LDK Run-time Environment,授权管理器,以及客户工具

参考编号 问题
 

Mac 系统不支持 Sentinel 远程更新系统(RUS 实用程序)。

解决方案:要获取指纹,请使用 Sentinel Admin Control Center。

SM-116811

在 Linux 平台上的现有版本上安装不同版本的 Sentinel LDK 运行环境(RTE)时,新安装的 hasplmd 守护程序通常会自动启动。但是,在以下情况下,hasplmd 守护进程不会自动启动:

>将 RTE 8.13 或更低版本升级到 RTE 8.15 或更高版本时

或者

>将 RTE 8.15 或更高版本降级到 RTE 8.13 或更低版本时

解决方法:安装所需版本的 RTE 后,执行以下任一操作:

>第二次安装所需版本的 RTE。执行第二次安装后,hasplmd 守护进程自动启动。

或者

>通过输入以下命令手动启动 hasplmd 守护进程:systemctl start hasplmd

SM-94994

若是以下情况:

>没有旧有驱动程序的 RTE 安装在新机器上。

>随后在机器上安装带有旧有驱动程序的 RTE。

需要具有旧有驱动程序的 RTE 的应用程序将无法成功运行。在使用旧有驱动程序安装 RTE 期间,不会生成警告或错误。

解决方法:使用管理控制中心,生成诊断报告,并联系Thales 技术支持。

SM-82475

若是以下情况:

>当 SL 锁的当前状态被解码时(使用 SL License Generation API),容器的状态在 Key ID 列中显示为 Secure Storage Id Mismatch

>锁包含可重新托管或可分离的产品,或者产品许可证类型为执行次数有效期

如果容器的 SSID(安全存储 ID)发生改变(例如,容器已损坏或被删除),则产品将被标记为已克隆且无法使用。在任何其他情况下,安全存储 ID 不匹配状态都不重要,可以忽略。

SM-76660

若是以下情况:

1.Windows 安装在带 Boot Camp 的 Mac 计算机上。

2.Windows 系统目录中安装了一个 SL 许可证。

安全存储 ID 可能会更改,并导致功能 ID 0 被标记为“克隆”。

解决方案:不要在 Windows 系统中安装 SL 许可证。让您的应用程序使用云许可证上的网络席位。

SM-70131

Sentinel LDKLicense Manager(进程 hasplms.exe)间歇性挂起并达到很高的 CPU 使用率(大约 1.9 GB)。

解决方案:使用最新的 API 库保护应用程序;如果最终用户的计算机上需要 RTE,请升级到最新的 RTE。

SM-59868 连接 libhasp_windows_bcc_vendorId.lib 的应用程序需要机器上要有 Sentinel LDK Run-time Environment。
SM-546

若是以下情况:

>使用 Visual Studio 2015 创建了一个受保护应用

>Visual Studio 中显式启用了 Control Flow Guard。

>应用静态或动态地与 Sentinel Licensing API 链接。

>未使用 External License Manager (hasp_rt.exe)。

>应用在 Windows 10 或 Windows 8.1 更新 (KB3000850) 下运行。(并非全部 Windows 8.1,仅最新的几个)

受保护的应用可能会出现故障。

解决方案:将 External License Manager (hasp_rt.exe) 加入受保护的应用。

LDK-14971

若在客户站点发生以下情况:

>一个机器已经运行了 7.51 版本运行环境。

>另一个机器使用比 7.51 版本旧的 Run-time Environment 版本。

>用户在两个机器之间反复迁移一个许可证。

>对这两个机器上的许可证实施了更新。

出现消息 HASP_REHOST_ALREADY_APPLIED 则可能 Rehost 操作失败。

解决方案:从软件厂商处给目标机器上的受保护应用程序获取一个新的 SL 许可证。在尝试进行任何额外的迁移操作之前,在两台机器上安装最新的运行环境。

LDK-12547

在 Linux 下,如果用户使用 Wine 和默认选项运行 Windows 64 位受保护的程序,Linux 可能会返回“检测到调试器”错误。

解决方案:当您使用 Envelope 保护应用程序时,请为该应用程序禁用用户调试检测。(请注意,禁用调试器检测会降低应用程序的整体安全性。)

LDK-10670

用户在计算机上连接了 Razer Abyssus 鼠标并安装 Razer 驱动程序后,如果将 Sentinel HL 锁连接到之前鼠标连接的 USB 端口,则计算机上的设备管理程序无法识别 Sentinel HL 锁。

该问题已报告给 Razer。

LDK-9044

若是以下情况:

Sentinel HL(无驱动配置)锁在 QEMU 模拟器 2.0.0 版和 Virtual Machine Manager 0.9.5 版中以默认模式连接到 USB 主控制器。

当锁断开连接时,锁会继续在 Admin 控制中心内显示为已连接的锁。(但是,锁断开连接后,锁上存在授权的受保护应用程序无法执行。)

解决方案:将 USB 控制器切换到 USB 2.0 模式。

LDK-8480

使用部分新 USB 芯片组时,用于将 Sentinel HL 锁固件更新到 3.25 版的 hasp_update() API call 将生成 HASP_BROKEN_SESSION 返回代码,即使固件已正确更新。(固件版本 4.x. 的 Sentinel HL 无驱动锁没有此问题。)

解决方案:安装最新的 Run-time Environment。第一次连接锁时,无需调用 call hasp_update(),授权管理器的自动固件更新功能即可自动更新锁的固件。

Sentinel LDK Envelope 和用于 Windows 平台的数据加密

常规

参考编号 问题
LDK-11727

未为 .NET 应用程序提供调试器检测。

解决方案:在应用程序代码中实施调试器检测机制,并使用 Envelope 保护调用这些功能的方法。

LDK-11191

在 Novell ZENworks Agent 下运行受保护的应用程序时,应用程序可能会生成“检测到调试器”并无法运行。这是因为为了监控各种事件,ZENworks Agent 会以调试器的方式连接到启动的应用程序。

LDK-6695

生成“检测到调试器”错误时,受保护的应用程序无法决定将哪个流程视为调试器。

LDK-8850

受保护的应用程序检测到已连接调试器时,应用程序可能会生成多个“检测到调试器”消息窗口。

SM-58676

若是以下情况:

1.在本地机器上安装 SL AdminMode 许可证。

2.运行 IObit Advanced SystemCare Ultimate 12 以清理和优化您的机器。

3.重启机器。

本地 SL AdminMode 许可证可能丢失或可能被识别为克隆许可证。这是 IObit 产品的问题。Thales 已经向 IObit 报告了这个问题,目前正在调查中。

解决方案:不要使用最新版本的 IObit 产品,或者在问题解决前不要使用 SL AdminMode 许可证。(您可使用 SL UserMode 许可证。)

SM-65381

在 Windows 下,如果受保护的文件夹中没有 hasp_rt.exe,则执行受 DFP 保护的 Python 应用程序有时会失败,并显示“Bad magic number”错误。

解决方案:确保受保护的文件夹中存在 hasp_rt.exe

Java

参考编号 问题
LDK-11195

保护 Java 应用程序时,Envelope 故障并显示消息“严重内部错误 (12)”。

解决方案:如果发生此错误,使用以下技术之一保护 Java 应用程序:

>如果应用程序在 JAR/WAR 可执行文件中包含 JARs,在使用 Envelope 保护可执行文件时删除这些 JARs。您可在完成保护后将 JARs 添加到 JAR/WAR 可执行文件。

>仅使用您希望保护的类创建 JAR/WAR 可执行文件。应用保护后,您可在受保护的 JAR/WAR 可执行文件中添加类或 JARs,或任意其他依赖关系。

SM-10890

若是以下情况:

>使用 Envelope 7.3 或更早版本创建了一个 Envelope 项目。

>该项目含有 Java 应用的设置。

>在 Java 应用的保护设置选项卡页面上,选择覆盖默认保护设置。

许可检查失败后允许宽限期复选框应是可以修改的。但是,该复选框无法修改。

解决方案:高级选项卡页面上,对 MESSAGE_OUTPUT_MODE 属性做任何更改,然后改回。这会强制 Envelope 载入内部数据结构,然后许可检查失败后允许宽限期复选框即可修改。

注意: Web 应用程序不支持此宽限期。

SM-10969

因为 Java 中的未知限制,如果某个背景检查线程成为非 EDT,则后台检查(中止/重试/忽略)对话框可能会不显示。Envelope 经过修改,使受保护应用中的受保护方法的错误对话框提示有高优先级。这样可以减少这个问题的发生,但未完全避免问题。

SM-98384 受保护的 WAR 无法在 WildFly Server 23 上成功运行。
SM-110174 在 Wine 下 Windows Envelope 中 64 位应用程序不支持对 Java 类级别保护和数据文件保护。

.NET

参考编号 问题
SM-554

对于以 .NET Framework 4.6 和更新版本为目标的应用,CultureInfo.CurrentCultureCultureInfo.CurrentUICulture 保存在异步操作之间流动的线程的 ExecutionContext 中。因此,对 CultureInfo.CurrentCultureCultureInfo.CurrentUICulture 属性的更改会反映在之后启动的异步任务中。

如果当前区域性或当前 UI 区域性与系统区域性不同,则当前区域性跨界线程并成为执行异步操作的线程池线程的当前区域性。

保护样本应用并使用“仅 Dot Net”保护类型实施上述行为时,应用即按预期表现。但是,如果使用“Dot Net 和 Windows Shell”或“仅 Windows Shell”,则线程使用系统区域性定义行为。

解决方案:

执行以下操作:

1.使用 .NET Framework 4.5.

2.使用

CultureInfo.DefaultThreadCurrentCulture = new CultureInfo(...)

而不是

Thread.CurrentThread.CurrentCulture = new CultureInfo(...)

SM-25875

若是以下情况:

1..NET 应用使用 Envelope 提供保护。

2.保护类型包括 Windows Shell(有或无方法级别)。

3.应用尝试使用以下方法获取模块句柄:

IntPtr hMod = Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0])

返回的句柄可能不正确,并因此会生成错误。

解决方案:您可调用 Kernel32.dll 的 GetModuleHandle 系统 API 获取模块句柄。

例如:

[DllImport("kernel32.dll", CallingConvention = CallingConvention.StdCall, CharSet = CharSet.Auto)] private static extern IntPtr GetModuleHandle(IntPtr lpModuleName); IntPtr hMod = GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName);

SM-26578

如果使用 Windows Shell 保护的 .Net 应用程序将退出应用程序时的退出代码设置为 ExitEventArgs(如“e.ApplicationExitCode = 1”),则退出代码无法被外部进程检索到。

解决方案:调用 "Environment.Exit(1)" 退出进程。

Sentinel LDK Envelope 和用于 Linux 系统的数据加密

参考编号 问题
SM-28403

若是以下情况:

>Linux 应用程序受 Envelope 保护,有防止调试的保护功能。

>应用程序调用 wait(&status) 系统调用。这等于:

waitpid(-1, &status, 0)

应用程序可能会挂起。

解决方法 1:调用特定子进程 pid 的 waitpid(pid>0)。

解决方法 2:禁用 Envelope 中的反调试功能。注:此解决方法显著降低了受保护应用程序的安全性。Thales 建议您在选择此解决方法之前咨询技术支持。

SM-69080

在以下情况下,受保护的应用程序可能无法正确地处理信号:

>后台检查是启用的,

>信号处理程序由应用程序创建的线程注册。

解决方案:执行以下操作之一:

>禁用后台检查和防调试。(您可以通过指定以下命令行标记来完成此操作:-b:0 --debug --memdump

>(首选解决方案)在主线程而不是线程函数中注册信号处理程序。线程函数是以下之一:

函数作为 start_routine 传递到 pthread_create

从 start_routine 调用的函数。

Sentinel LDK Envelope、数据加密和 Licensing API for macOS

参考编号 问题
LDK-11655

>在 Mac 机器上的 VMware Fusion 7.1.1 虚拟机上运行 Envelope 时,如果您将受保护的应用程序保存到一个 HGFS(主机客户机文件系统)卷中,则应用程序文件会损坏。

>当您使用 HGFS 共享上的 VMware Fusion 虚拟机运行受保护的应用程序时,如果应用程序需要写入访问,会生成“无法写入到文件”错误。

SM-57838

命令行 Envelope 工具 (envelope_darwin) 现在要求 Envelope.app(UI 集合)必须在相同文件夹中。要使用命令行工具,请将 Envelope.app 复制到含有命令行工具的文件夹中。

SM-57024 Apple 在 macOS 10.14 推出了夜间模式,但 Envelope GUI 目前尚不支持。为获得正确的用户体验,您应禁用夜间模式。
SM-51456

因为 Sentinel LDK 在 macOS 的一些可靠性增强,macOS 10.13 下的受保护应用程序会受到一些性能影响。

将发布一个技术说明 ,描述此问题以及禁用这些增强以支持更高性能的选项。