已知问题和解决方案
有可能对用户产生重要影响的 Sentinel LDK 8.4 已知问题如下,按组件列出。
其他较不常见的问题可在这里找到。
本节包含如下内容:
>最终用户,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)以接收通知: |
Sentinel LDK-EMS
最终用户,Sentinel LDK Run-time Environment,授权管理器,以及客户工具
Sentinel LDK Envelope 和用于 Windows 平台的数据加密
常规
Java
参考编号 | 问题 |
---|---|
LDK-11195 |
保护 Java 应用程序时,Envelope 故障并显示消息“严重内部错误 (12)”。 解决方案:如果发生此错误,使用以下技术之一保护 Java 应用程序: >如果应用程序在 JAR/WAR 可执行文件中包含 JARs,在使用 Envelope 保护可执行文件时删除这些 JARs。您可在完成保护后将 JARs 添加到 JAR/WAR 可执行文件。 >仅使用您希望保护的类创建 JAR/WAR 可执行文件。应用保护后,您可在受保护的 JAR/WAR 可执行文件中添加类或 JARs,或任意其他依赖关系。 |
LDK-11418 |
对于使用 Envelpe 保护的 Java 7 或 8 应用程序,终端用户在启动受保护的应用程序时必须使用以下命令行语法: >Java7:指定 >Java8 及更高版本:指定 如果未设置合适的标记,则应用程序可能会在启动时触发 java.verifyerror。 |
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.CurrentCulture 和 CultureInfo.CurrentUICulture 保存在异步操作之间流动的线程的 ExecutionContext 中。因此,对 CultureInfo.CurrentCulture 和 CultureInfo.CurrentUICulture 属性的更改会反映在之后启动的异步任务中。 如果当前区域性或当前 UI 区域性与系统区域性不同,则当前区域性跨界线程并成为执行异步操作的线程池线程的当前区域性。 保护样本应用并使用“仅 Dot Net”保护类型实施上述行为时,应用即按预期表现。但是,如果使用“Dot Net 和 Windows Shell”或“仅 Windows Shell”,则线程使用系统区域性定义行为。 解决方案: 执行以下操作: 1.使用 .NET Framework 4.5. 2.使用
而不是
|
SM-25875 |
若是以下情况: 1..NET 应用使用 Envelope 提供保护。 2.保护类型包括 Windows Shell(有或无方法级别)。 3.应用尝试使用以下方法获取模块句柄:
返回的句柄可能不正确,并因此会生成错误。 解决方案:您可调用 Kernel32.dll 的 GetModuleHandle 系统 API 获取模块句柄。 例如:
|
SM-26578 |
如果使用 Windows Shell 保护的 .Net 应用程序将退出应用程序时的退出代码设置为 ExitEventArgs(如“e.ApplicationExitCode = 1”),则退出代码无法被外部进程检索到。 解决方案:调用 "Environment.Exit(1)" 退出进程。 |
Sentinel LDK Envelope 和用于 Linux 系统的数据加密
参考编号 | 问题 |
---|---|
SM-28403 |
若是以下情况: >Linux 应用程序受 Envelope 保护,有防止调试的保护功能。 >应用程序调用 wait(&status) 系统调用。这等于: 应用程序可能会挂起。 解决方法 1:调用特定子进程 pid 的 waitpid(pid>0)。 解决方法 2:禁用信封中的反调试功能。注:此解决方法显着降低了受保护应用程序的安全性。Thales 建议您在选择此解决方法之前咨询技术支持。 |
SM-69080 |
在以下情况下,受保护的应用程序可能无法正确地处理信号: >后台检查是启用的, >信号处理程序由应用程序创建的线程注册。 解决方案:执行以下操作之一: >禁用后台检查和防调试。(您可以通过指定以下命令行标记来完成此操作: >(首选解决方案)在主线程而不是线程函数中注册信号处理程序。线程函数是以下之一: •函数作为 start_routine 传递到 pthread_create •从 start_routine 调用的函数。 |
SM-114641 |
当运行具有函数 fork() 的封装应用程序,并且在二进制编译过程中启用 Intel Control Flow 时,会出现错误 “Segtion 故障(核心转储)”。 解决方法:以下解决方法可用于可执行文件和共享库(使用其中之一): >在编译中禁用英特尔控制流使用: >使用 -no-pie 编译应用程序(仅适用于可执行文件) >从终端,使用以下方式执行应用程序: >在代码中使用函数指针而不是直接调用 “fork”: pid_t (*fun_ptr)() = ⋔ id = fun_ptr(); |
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 下的受保护应用程序会受到一些性能影响。 将发布一个技术说明 ,描述此问题以及禁用这些增强以支持更高性能的选项。 |