<?xml version="1.0" encoding="utf-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><title>YLong软件</title><link>https://www.ylongsoft.com/</link><description>网址打包APP, 全景KRPano可是化编辑器, IOS重签名加密工具</description><item><title>C#混淆选项选择指南：恒盾加密大师详解</title><link>https://www.ylongsoft.com/post/csharp-obfuscator-options-guide.html</link><description>&lt;p&gt;恒盾C#混淆加密大师提供了基本保护、垃圾代码注入、代码混淆和重命名等多类选项。这些功能面向不同的攻击场景：部分用于阻止调试和反编译工具；另一些增加反编译代码理解难度；还有直接改变类型、函数和字段的命名。&lt;/p&gt;
&lt;p&gt;实际选用时，无需不加区分地启用全部选项。更合理的做法是先理解每类功能的作用域，再根据项目类型（DLL、控制台程序、WinForms、WPF等）逐步启用，并在每次调整后完成启动和核心功能测试。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844596803_dc34a40c.png&quot; alt=&quot;界面&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://csharpobf.leapever.com/&quot;&gt;官方网址&lt;/a&gt;&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;h2&gt;四类混淆选项分别解决什么问题&lt;/h2&gt;
&lt;p&gt;软件中的选项可划分为四类：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;基本保护选项&lt;/strong&gt;：针对调试器、反编译工具、程序篡改和虚拟机运行环境进行防护。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;注入功能选项&lt;/strong&gt;：向程序集注入无用字段、指令、函数、类型或字符串，增加静态分析干扰。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;混淆功能选项&lt;/strong&gt;：改变代码、数据或程序集结构，使反编译结果更难还原。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;重命名选项&lt;/strong&gt;：修改Module、字段、函数、命名空间、参数、类型和Assembly等标识符。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这四类功能可以灵活组合：重命名负责降低代码可读性；字符串和流程类选项保护关键逻辑；基本保护针对常见分析工具和运行环境形成额外防线。&lt;/p&gt;
&lt;h2&gt;基本保护选项&lt;/h2&gt;
&lt;p&gt;基本保护主要面向调试、反编译、篡改和运行环境检测。部分功能在检测到特定行为时会终止程序，因此启用后需在目标用户真实环境中测试。&lt;/p&gt;
&lt;h3&gt;防调试、防DnSpy与防断点&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;防调试&lt;/strong&gt;：检测Visual Studio或其他调试工具附加行为，发现后自动退出。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防DnSpy&lt;/strong&gt;：针对DnSpy动态调试检测，发现后退出。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防断点&lt;/strong&gt;：检测程序运行中异常超长停顿，防止通过断点跟踪代码。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这三个选项与运行时分析相关，适合保护授权校验、关键算法和商业逻辑。由于性能较弱的设备或特殊环境可能影响检测效果，建议先在测试版启用，再覆盖不同配置设备验证。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844597452_41a148c9.png&quot; alt=&quot;防DnSpy处理效果&quot;&gt;&lt;/p&gt;
&lt;h3&gt;防ILDasm、防ILSpy与防de4dot&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;防ILDasm&lt;/strong&gt;：阻止系统ILDasm正常反编译处理后的DLL或EXE。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防ILSpy&lt;/strong&gt;：让处理后程序集无法被ILSpy正常解析。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;防de4dot&lt;/strong&gt;：干扰de4dot自动反混淆。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这组功能用于阻止常见静态分析和自动还原工具。可与重命名、流程混淆、字符串加密搭配，让分析者难以打开程序集，也难以理解已反编译代码。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844597835_360c19a7.png&quot; alt=&quot;防ILDasm处理效果&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844598040_1f85bf03.png&quot; alt=&quot;防de4dot处理效果&quot;&gt;&lt;/p&gt;
&lt;h3&gt;防篡改与加壳&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;防篡改（仅限EXE）&lt;/strong&gt;：校验EXE是否被修改，改动后无法运行。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加壳（仅限EXE）&lt;/strong&gt;：加密原生程序到外层EXE，避免静态反编译。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;仅适用于EXE。防篡改适合需保证文件完整性的桌面程序；加壳适合整体隐藏原始程序集。处理后需检查数字签名、杀毒兼容性及更新流程。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844598260_977664ab.png&quot; alt=&quot;EXE加壳处理效果&quot;&gt;&lt;/p&gt;
&lt;h3&gt;防虚拟机&lt;/h3&gt;
&lt;p&gt;防虚拟机检测程序是否运行在虚拟机中，检测到后停止运行。适合禁止虚拟机运行的应用，但不适合云桌面、虚拟化服务器、自动化测试或沙箱环境。启用前需确认用户部署环境，若正常客户可能使用VMware、Hyper-V等，建议谨慎。&lt;/p&gt;
&lt;h2&gt;注入功能选项&lt;/h2&gt;
&lt;p&gt;注入功能通过增加干扰内容，让反编译后程序集结构更复杂，而非替代关键代码加密。&lt;/p&gt;
&lt;h3&gt;垃圾域、垃圾函数与垃圾类型&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;垃圾域&lt;/strong&gt;：向类型中注入大量无用字段。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;垃圾函数&lt;/strong&gt;：注入不参与业务的函数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;垃圾类型&lt;/strong&gt;：注入额外类型。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些选项让反编译工具显示更多成员和类型，增加定位真实业务代码的难度。对体积敏感项目需比较处理前后文件大小和加载表现。&lt;/p&gt;
&lt;h3&gt;垃圾空指令与垃圾字符串&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;垃圾空指令&lt;/strong&gt;：在IL指令中注入无用指令，增加阅读难度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;垃圾字符串&lt;/strong&gt;：注入无用字符串，干扰基于字符串搜索的定位。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;垃圾空指令适合配合流程混淆；垃圾字符串干扰接口地址、提示文本或关键字检索。主要增加分析成本。&lt;/p&gt;
&lt;h2&gt;混淆功能选项&lt;/h2&gt;
&lt;p&gt;混淆功能处理程序集信息、代码流程、常量、调用关系等。一些选项影响较大，建议从常用选项开始逐步增加强度。&lt;/p&gt;
&lt;h3&gt;程序集与文件结构混淆&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;文件信息混淆&lt;/strong&gt;：修改程序内部名称、Assembly信息。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;文件时间混淆&lt;/strong&gt;：修改加密文件时间戳。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DOS头混淆&lt;/strong&gt;：修改EXE的DOS头，去除常见可识别字符串。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;混淆引用列表&lt;/strong&gt;：处理程序集引用列表，使依赖关系更模糊。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;加密资源文件&lt;/strong&gt;：加密程序集中的资源，防止直接查看。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;若程序依赖程序集名称、文件版本、反射、插件扫描或资源加载路径，需重点验证。加密资源文件还需测试图片、语言资源等能否正常读取。&lt;/p&gt;
&lt;h3&gt;流程与函数调用混淆&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;流程混淆&lt;/strong&gt;：打乱函数内部指令并增加跳转，使控制流程难以理解。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;函数调用混淆&lt;/strong&gt;：通过函数token调用目标函数，降低可读性。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;链式函数混淆&lt;/strong&gt;：将一次调用转为多层嵌套调用，增加分析难度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;异步混淆&lt;/strong&gt;：将部分代码转换为异步调用形式，使静态跟踪更困难。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;错误函数体混淆&lt;/strong&gt;：加入错误指令，干扰静态分析工具解析函数体。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;流程混淆是核心算法保护的首选。函数调用、链式和异步混淆进一步改变结构，适合不依赖特殊调用顺序的业务代码。对UI线程、启动入口、COM调用、反射调用等需逐项测试。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844598480_e7f65e34.png&quot; alt=&quot;流程混淆前后对比&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844598703_7d0947f6.png&quot; alt=&quot;函数调用混淆效果&quot;&gt;&lt;/p&gt;
&lt;h3&gt;字符串保护&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;字符串加密&lt;/strong&gt;：加密字符串，避免静态分析直接找到关键文本。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字符串拆分&lt;/strong&gt;：将完整字符串拆成多个组合，降低搜索效率。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;字符串隐藏&lt;/strong&gt;：加密后存放到原生函数，使反编译工具无法获取值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;字符串加密适合保护接口地址、协议字段、算法参数；拆分可干扰简单检索；隐藏强度更高，适合少量重要字符串。配置文件中的密码、令牌需用专门密钥管理方案。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844598917_70fe88f8.png&quot; alt=&quot;字符串加密效果&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844599129_9039d35a.png&quot; alt=&quot;字符串拆分效果&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844599333_fbc0f121.png&quot; alt=&quot;字符串隐藏效果&quot;&gt;&lt;/p&gt;
&lt;h3&gt;数字、布尔值与小数保护&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;布尔混淆&lt;/strong&gt;：将布尔值转为更难识别的基础类型表达。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数字混淆&lt;/strong&gt;：将整型数字转化为复杂运算，隐藏常量。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;数字隐藏&lt;/strong&gt;：将整型数字加密存放到原生函数。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;小数混淆&lt;/strong&gt;：加密代码中的小数，避免直接看到原始值。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合保护算法常量、状态标识、限制数值和业务参数。与流程混淆配合，静态分析难度更高。涉及浮点精度或高频计算的代码需重点验证。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844599550_be995e0e.png&quot; alt=&quot;数字混淆效果&quot;&gt;&lt;/p&gt;
&lt;h3&gt;函数体隐藏与原生化EXE&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;函数体隐藏&lt;/strong&gt;：加密函数体，使反编译工具无法查看内部代码。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;原生化EXE&lt;/strong&gt;：将EXE转为原生程序，C#反编译工具无法分析IL。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;适合保护核心实现。函数体隐藏可加强保护重要算法；原生化EXE从整体改变程序形态，仅适用于EXE。启用后需完整测试启动、异常处理、依赖加载等。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844599754_7b29091b.png&quot; alt=&quot;函数体隐藏效果&quot;&gt;&lt;/p&gt;
&lt;h2&gt;重命名选项&lt;/h2&gt;
&lt;p&gt;重命名是C#混淆中最直观的保护，将具有业务含义的标识符替换为难以理解的新名称，移除语义。&lt;/p&gt;
&lt;h3&gt;重命名模式怎么选&lt;/h3&gt;
&lt;p&gt;软件提供五种模式：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;字母数字模式&lt;/strong&gt;：字母数字组合，适合常规项目。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UUID模式&lt;/strong&gt;：长名称，增加阅读和检索难度。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;特殊字符模式&lt;/strong&gt;：使用特殊字符，适合更高阅读干扰。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Base64模式&lt;/strong&gt;：Base64风格字符串。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;英文单词模式&lt;/strong&gt;：英文单词替换，表面可读但失去真实含义。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不同模式影响外观，不改变勾选对象。日常可从字母数字模式开始；若外部工具或日志系统对字符有限制，避免使用特殊字符模式。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844599997_802d3c4b.png&quot; alt=&quot;字母数字重命名模式&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844600232_0a9be64e.png&quot; alt=&quot;UUID重命名模式&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844600437_f99ee60b.png&quot; alt=&quot;特殊字符重命名模式&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844600642_c39f068d.png&quot; alt=&quot;Base64重命名模式&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785844600846_bc4a0eca.png&quot; alt=&quot;英文单词重命名模式&quot;&gt;&lt;/p&gt;
&lt;h3&gt;可以重命名哪些对象&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Module重命名&lt;/strong&gt;：修改全局Module名称。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;域重命名&lt;/strong&gt;：修改类中字段名称。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;函数重命名&lt;/strong&gt;：修改方法名称。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;命名空间重命名&lt;/strong&gt;：修改类型所在命名空间。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;参数重命名&lt;/strong&gt;：修改函数参数名称。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;类型重命名&lt;/strong&gt;：修改类、结构体等类型名称。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Assembly重命名&lt;/strong&gt;：修改程序集名称。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;普通内部代码可优先启用字段、函数、参数和类型重命名。涉及反射、依赖注入、序列化、XAML等时，名称可能是运行时契约，需先确认。Assembly重命名影响依赖程序集、插件加载等，处理多个DLL时需验证引用解析。&lt;/p&gt;
&lt;h2&gt;不同项目可以怎样组合&lt;/h2&gt;
&lt;h3&gt;普通桌面程序&lt;/h3&gt;
&lt;p&gt;先启用函数、字段、参数和类型重命名，加入字符串加密、数字混淆和流程混淆。确认功能正常后，再根据需要增加防调试、防ILSpy、防DnSpy或加壳。&lt;/p&gt;
&lt;h3&gt;供第三方调用的类库&lt;/h3&gt;
&lt;p&gt;优先保护内部类型和实现。公开API、反射入口、序列化模型需谨慎重命名，否则可能导致调用方无法找到成员。字符串加密、流程混淆和函数体隐藏可保护不对外暴露的核心逻辑。&lt;/p&gt;
&lt;h3&gt;包含重要算法的EXE&lt;/h3&gt;
&lt;p&gt;组合流程混淆、字符串隐藏、数字隐藏、函数调用混淆和函数体隐藏。完成兼容性测试后，考虑加壳、防篡改或原生化EXE。高强度选项应逐项增加并保留测试结果。&lt;/p&gt;
&lt;h2&gt;推荐的启用和测试顺序&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;保留原始DLL或EXE，准备覆盖核心功能的测试用例。&lt;/li&gt;
&lt;li&gt;先启用字段、函数、参数和类型重命名，验证程序启动及运行。&lt;/li&gt;
&lt;li&gt;加入字符串加密、数字混淆和流程混淆，检查核心业务结果和性能。&lt;/li&gt;
&lt;li&gt;按需启用垃圾代码注入和反编译工具防护。&lt;/li&gt;
&lt;li&gt;最后测试函数体隐藏、加壳、原生化EXE等大范围选项。&lt;/li&gt;
&lt;li&gt;每增加一组功能都重新测试启动、登录、配置读写、网络请求等。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;若出现异常，可回退到上一个可用组合再逐个启用。&lt;/p&gt;
&lt;h2&gt;使用时需要注意什么&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;保护强度越高并不代表越适合所有项目，稳定运行是前提。&lt;/li&gt;
&lt;li&gt;依赖反射、序列化、XAML、插件机制等项目，需重点测试重命名兼容性。&lt;/li&gt;
&lt;li&gt;防篡改、加壳和原生化EXE仅限EXE，不能用于DLL。&lt;/li&gt;
&lt;li&gt;防虚拟机可能影响云桌面、虚拟化服务器中的正常用户。&lt;/li&gt;
&lt;li&gt;处理后文件应在目标操作系统、架构和性能配置上验证。&lt;/li&gt;
&lt;li&gt;混淆用于提高逆向成本，不能替代权限控制、签名校验、密钥管理和服务端安全。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;恒盾C#混淆加密大师各类选项承担不同作用：基本保护应对调试和反编译工具；注入功能增加干扰；混淆功能隐藏代码流程和关键数据；重命名移除业务语义。&lt;/p&gt;
&lt;p&gt;对多数项目，可从重命名、字符串加密、数字混淆和流程混淆开始，再根据程序类型增加防调试、工具防护、函数体隐藏、加壳或原生化EXE。逐步启用、逐步测试，在保护强度和兼容性之间取得平衡。&lt;/p&gt;
</description><pubDate>Tue, 04 Aug 2026 19:56:39 +0800</pubDate></item><item><title>C#混淆随机种子的作用与使用教程</title><link>https://www.ylongsoft.com/post/csharp-obfuscator-random-seed-guide-zblog-ylongsoft.html</link><description>&lt;p&gt;在混淆 C# 应用时，很多开发者会发现，即使输入文件和配置一模一样，每次生成的结果也可能不同。这是因为恒盾C#混淆加密大师默认引入了随机性，避免每次构建都产生完全相同的结果。但在某些场景下——比如排查问题、做回归测试、或者对接 CI/CD 流程——我们反而希望结果是可复现的，以便对比和定位。&lt;/p&gt;
&lt;p&gt;这时，随机种子就派上用场了。它本质上是一个控制混淆过程随机行为的开关。填上一个固定的值后，对于同一个 EXE 或 DLL，在配置完全一致的情况下，每次处理都会得到相同的结果；如果不填，软件就会自动随机处理，保持构建之间的差异。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/08/1785763880134_c7a11028.png&quot; alt=&quot;恒盾C#混淆加密大师随机种子配置&quot;&gt;&lt;/p&gt;
&lt;h2&gt;随机种子有什么作用&lt;/h2&gt;
&lt;p&gt;随机种子让开发者可以在“可复现的结果”和“每次结果随机”之间灵活选择。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;填写固定种子&lt;/strong&gt;：适用于重复构建、对比结果、排查问题，或者需要保持发布流程一致。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;留空不填&lt;/strong&gt;：软件自动随机，适用于希望不同构建产生不同混淆结果的日常发布。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;需要特别注意：随机种子不会改变你启用了哪些保护功能，也不会替代字符串加密、流程混淆或重命名。它只影响结果是否容易复现。&lt;/p&gt;
&lt;h2&gt;哪些场景适合设置固定种子&lt;/h2&gt;
&lt;h3&gt;1. 排查混淆后的运行问题&lt;/h3&gt;
&lt;p&gt;如果程序在混淆后出现异常，保留输入文件、配置和随机种子，重新处理一次。固定种子能减少重复测试时的结果差异，让问题更容易定位。&lt;/p&gt;
&lt;h3&gt;2. 进行版本回归测试&lt;/h3&gt;
&lt;p&gt;在同一个版本上反复验证启动、登录、授权、读写等核心功能时，固定种子可以提供更稳定的测试条件，方便对比不同保护选项的效果。&lt;/p&gt;
&lt;h3&gt;3. 接入自动化构建和 CI/CD&lt;/h3&gt;
&lt;p&gt;将混淆步骤集成到构建脚本或持续集成流水线中后，为项目指定固定种子，可以让开发机、构建机和流水线使用相同的条件，便于复现和排错。&lt;/p&gt;
&lt;h3&gt;4. 团队共享混淆配置&lt;/h3&gt;
&lt;p&gt;多人维护同一个项目时，把随机种子和其他选项一起保存到配置文件里，团队成员加载统一配置后，就能减少因随机结果带来的额外沟通成本。&lt;/p&gt;
&lt;h3&gt;5. 保存可复现的发布记录&lt;/h3&gt;
&lt;p&gt;对于重要版本，把当次使用的输入文件、配置、软件版本和种子一起归档。以后要回溯或者重新生成该版本时，可以直接恢复当时的条件。&lt;/p&gt;
&lt;h2&gt;如何使用随机种子&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;打开恒盾C#混淆加密大师，选择需要处理的 DLL 或 EXE。&lt;/li&gt;
&lt;li&gt;根据项目需求，勾选代码保护、代码混淆和重命名等选项。&lt;/li&gt;
&lt;li&gt;在主界面下方找到“随机种子”输入框。&lt;/li&gt;
&lt;li&gt;输入便于识别的字母或数字，例如项目名称与版本号的组合。&lt;/li&gt;
&lt;li&gt;选择输出路径，点击“开始处理”。&lt;/li&gt;
&lt;li&gt;如果需要保留当前设置，点击“保存配置”。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;随机种子支持字母和数字。建议使用团队容易识别、能长期保存的内容，例如：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;MyProduct150
Release202608
ClientA2026
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如果不需要复现结果，保持输入框为空即可。&lt;/p&gt;
&lt;h2&gt;固定种子与留空随机应该怎么选&lt;/h2&gt;
&lt;p&gt;如果当前工作重点是测试、排错、回归或自动化构建，建议设置固定种子。这样多次处理的结果更容易比较，也便于其他开发者复现。&lt;/p&gt;
&lt;p&gt;如果重点是正式发布，并且希望不同批次的混淆结果保持差异，可以留空或者每个版本使用不同的种子。&lt;/p&gt;
&lt;p&gt;一个常见的策略是：测试阶段固定使用项目级种子，正式发布时按版本换用不同的种子。这样既方便日常验证，也能让不同版本之间保持足够的差异。&lt;/p&gt;
&lt;h2&gt;使用时需要注意什么&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;相同种子需要搭配相同的输入文件和配置，才能得到一致的结果。&lt;/li&gt;
&lt;li&gt;输入程序、保护选项或软件版本变化后，结果也可能跟着变。&lt;/li&gt;
&lt;li&gt;随机种子不是密码，不要在里面填写账号、密码等敏感信息。&lt;/li&gt;
&lt;li&gt;换随机种子不等于提高保护强度，实际效果取决于你启用的混淆和加密功能。&lt;/li&gt;
&lt;li&gt;需要复现正式版本时，记得同时保存输入文件、配置、版本号和种子。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;恒盾C#混淆加密大师的随机种子功能，让开发者可以根据实际需求决定混淆结果的稳定性。在排查问题、回归测试、团队协作和 CI/CD 场景中，固定种子可以大幅简化构建管理；而在需要不同版本保持差异的正式发布中，则可以留空或更换种子。合理使用这个配置项，可以让 C# 代码混淆的流程更加清晰、可控，也更适合长期的维护和自动化发布。&lt;/p&gt;
</description><pubDate>Mon, 03 Aug 2026 21:31:19 +0800</pubDate></item><item><title>在.NET项目集成混淆加密：自动化保护DLL和EXE</title><link>https://www.ylongsoft.com/post/integrate-obfuscator-cli-into-dotnet-build-ylongsoft.html</link><description>&lt;p&gt;为了保护C#程序, 在.NET项目交付DLL或EXE之前，通常需要先编译，再手动打开混淆工具、选择程序集、加载配置并导出结果。对于经常发布的项目，这套操作不仅重复，还容易漏选文件或使用错误配置。&lt;/p&gt;
&lt;p&gt;更稳定的方式是把&lt;a href=&quot;https://csharpobf.leapever.com/&quot;&gt;恒盾C#混淆加密大师&lt;/a&gt;的CLI接入MSBuild：Release构建完成后自动获取当前项目的真实输出路径，调用CLI生成保护版本。由于Visual Studio、Rider、&lt;code&gt;dotnet build&lt;/code&gt;和多数CI平台最终都会调用MSBuild，因此只需在项目文件中维护一套规则。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1785063360170_0823c148.png&quot; alt=&quot;C#混淆加密大师1.5.0截图&quot;&gt;&lt;/p&gt;
&lt;!-- truncate --&gt;
&lt;h2&gt;集成后的构建流程&lt;/h2&gt;
&lt;p&gt;本文实现的流程如下：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;正常编译.NET项目，不修改原始构建产物。&lt;/li&gt;
&lt;li&gt;仅在Release配置且已经配置CLI路径时执行混淆。&lt;/li&gt;
&lt;li&gt;将&lt;code&gt;.deps.json&lt;/code&gt;、&lt;code&gt;.runtimeconfig.json&lt;/code&gt;和依赖DLL复制到&lt;code&gt;protected&lt;/code&gt;目录。&lt;/li&gt;
&lt;li&gt;使用&lt;code&gt;--input&lt;/code&gt;和&lt;code&gt;--output&lt;/code&gt;覆盖配置文件中的路径，由CLI生成受保护的主程序集。&lt;/li&gt;
&lt;li&gt;CLI返回非零退出码或未生成目标文件时让构建失败，避免误发布未保护的程序。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;最终目录类似下面这样：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;bin/Release/net8.0/
├─ DotNetObfuscationSample.dll          # 原始构建产物
├─ DotNetObfuscationSample.deps.json
├─ DotNetObfuscationSample.runtimeconfig.json
└─ protected/
   ├─ DotNetObfuscationSample.dll       # 已混淆的主程序集
   ├─ DotNetObfuscationSample.deps.json
   └─ DotNetObfuscationSample.runtimeconfig.json
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;原始目录可继续用于调试和问题定位，发布时只取&lt;code&gt;protected&lt;/code&gt;目录即可。&lt;/p&gt;
&lt;h2&gt;第一步：准备CLI和混淆配置&lt;/h2&gt;
&lt;p&gt;安装恒盾C#混淆加密大师后，在安装目录中找到&lt;code&gt;CLI.exe&lt;/code&gt;。然后在图形界面中配置需要启用的保护功能，通过“文件 &amp;gt; 导出配置”得到&lt;code&gt;obfuscation.csop&lt;/code&gt;，并把它放在&lt;code&gt;.csproj&lt;/code&gt;同一目录。配置文件中的&lt;code&gt;ModulePath&lt;/code&gt;和&lt;code&gt;OutputPath&lt;/code&gt;可以保留示例值，因为构建时会通过CLI参数覆盖：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-jsonc&quot;&gt;&lt;code class=&quot;language-jsonc&quot;&gt;{
    &amp;quot;ModulePath&amp;quot;: &amp;quot;bin/Release/net8.0/MyApp.dll&amp;quot;,
    &amp;quot;OutputPath&amp;quot;: &amp;quot;bin/Release/net8.0/protected/MyApp.dll&amp;quot;,
    &amp;quot;AntiILDasm&amp;quot;: true,
    &amp;quot;StringConfusor&amp;quot;: true,
    &amp;quot;IntConfusor&amp;quot;: true,
    &amp;quot;FieldRename&amp;quot;: true,
    &amp;quot;MethodRename&amp;quot;: true,
    &amp;quot;ParamRename&amp;quot;: true,
    &amp;quot;TypeRename&amp;quot;: true,
    &amp;quot;RenameMode&amp;quot;: 1,
    &amp;quot;Seed&amp;quot;: &amp;quot;my-project-release&amp;quot;,
}
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;实际使用时建议保留软件导出的完整配置，不要只复制上面的精简片段。可先启用少量保护选项，验证程序正常启动和主要功能后，再逐步增加保护强度。&lt;/p&gt;
&lt;h2&gt;第二步：在项目文件中加入MSBuild目标&lt;/h2&gt;
&lt;p&gt;打开需要保护的&lt;code&gt;.csproj&lt;/code&gt;，在&lt;code&gt;&amp;lt;/Project&amp;gt;&lt;/code&gt;之前加入下面的内容：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-xml&quot;&gt;&lt;code class=&quot;language-xml&quot;&gt;&amp;lt;PropertyGroup&amp;gt;
  &amp;lt;ObfuscatorCliPath Condition=&amp;quot;'$(ObfuscatorCliPath)' == ''&amp;quot;&amp;gt;$(OBFUSCATOR_CLI_PATH)&amp;lt;/ObfuscatorCliPath&amp;gt;
  &amp;lt;RunObfuscator Condition=&amp;quot;'$(RunObfuscator)' == '' and '$(Configuration)' == 'Release' and '$(ObfuscatorCliPath)' != ''&amp;quot;&amp;gt;true&amp;lt;/RunObfuscator&amp;gt;
  &amp;lt;RunObfuscator Condition=&amp;quot;'$(RunObfuscator)' == ''&amp;quot;&amp;gt;false&amp;lt;/RunObfuscator&amp;gt;
  &amp;lt;ObfuscatorConfigPath&amp;gt;$(MSBuildProjectDirectory)\obfuscation.csop&amp;lt;/ObfuscatorConfigPath&amp;gt;
&amp;lt;/PropertyGroup&amp;gt;

&amp;lt;Target Name=&amp;quot;ObfuscateReleaseOutput&amp;quot;
        AfterTargets=&amp;quot;Build&amp;quot;
        Condition=&amp;quot;'$(Configuration)' == 'Release' and '$(RunObfuscator)' == 'true'&amp;quot;&amp;gt;
  &amp;lt;PropertyGroup&amp;gt;
    &amp;lt;ObfuscatedOutputDir Condition=&amp;quot;'$(ObfuscatedOutputDir)' == ''&amp;quot;&amp;gt;$(TargetDir)protected\&amp;lt;/ObfuscatedOutputDir&amp;gt;
    &amp;lt;ObfuscatedOutputPath Condition=&amp;quot;'$(ObfuscatedOutputPath)' == ''&amp;quot;&amp;gt;$(ObfuscatedOutputDir)$(TargetFileName)&amp;lt;/ObfuscatedOutputPath&amp;gt;
  &amp;lt;/PropertyGroup&amp;gt;

  &amp;lt;Error Condition=&amp;quot;'$(ObfuscatorCliPath)' == ''&amp;quot;
         Text=&amp;quot;RunObfuscator=true, but ObfuscatorCliPath or OBFUSCATOR_CLI_PATH is not configured.&amp;quot; /&amp;gt;
  &amp;lt;Error Condition=&amp;quot;!Exists('$(ObfuscatorCliPath)')&amp;quot;
         Text=&amp;quot;Obfuscator CLI was not found: $(ObfuscatorCliPath)&amp;quot; /&amp;gt;
  &amp;lt;Error Condition=&amp;quot;!Exists('$(ObfuscatorConfigPath)')&amp;quot;
         Text=&amp;quot;Obfuscator config was not found: $(ObfuscatorConfigPath)&amp;quot; /&amp;gt;

  &amp;lt;RemoveDir Directories=&amp;quot;$(ObfuscatedOutputDir)&amp;quot; /&amp;gt;
  &amp;lt;MakeDir Directories=&amp;quot;$(ObfuscatedOutputDir)&amp;quot; /&amp;gt;
  &amp;lt;ItemGroup&amp;gt;
    &amp;lt;ObfuscatorCompanionFile Include=&amp;quot;$(TargetDir)**\*&amp;quot;
                                                                                                   Exclude=&amp;quot;$(ObfuscatedOutputDir)**\*;$(TargetPath)&amp;quot; /&amp;gt;
  &amp;lt;/ItemGroup&amp;gt;
  &amp;lt;Copy SourceFiles=&amp;quot;@(ObfuscatorCompanionFile)&amp;quot;
        DestinationFiles=&amp;quot;@(ObfuscatorCompanionFile-&amp;gt;'$(ObfuscatedOutputDir)%(RecursiveDir)%(Filename)%(Extension)')&amp;quot;
        SkipUnchangedFiles=&amp;quot;true&amp;quot; /&amp;gt;

  &amp;lt;Message Importance=&amp;quot;high&amp;quot; Text=&amp;quot;Obfuscating $(TargetPath)&amp;quot; /&amp;gt;
  &amp;lt;Exec Command=&amp;quot;&amp;amp;quot;$(ObfuscatorCliPath)&amp;amp;quot; obf --config &amp;amp;quot;$(ObfuscatorConfigPath)&amp;amp;quot; --input &amp;amp;quot;$(TargetPath)&amp;amp;quot; --output &amp;amp;quot;$(ObfuscatedOutputPath)&amp;amp;quot;&amp;quot; /&amp;gt;
  &amp;lt;Error Condition=&amp;quot;!Exists('$(ObfuscatedOutputPath)')&amp;quot;
         Text=&amp;quot;Obfuscator did not create the expected output: $(ObfuscatedOutputPath)&amp;quot; /&amp;gt;
  &amp;lt;Message Importance=&amp;quot;high&amp;quot; Text=&amp;quot;Protected output: $(ObfuscatedOutputDir)&amp;quot; /&amp;gt;
&amp;lt;/Target&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;这里使用的都是MSBuild内置属性，因此不需要硬编码项目名称或目标框架：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;$(MSBuildProjectDirectory)&lt;/code&gt;是当前项目目录。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$(TargetPath)&lt;/code&gt;是本次构建产生的主程序集完整路径。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;$(TargetFileName)&lt;/code&gt;会自动适配不同项目名称。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AfterTargets=&amp;quot;Build&amp;quot;&lt;/code&gt;确保只有编译成功后才执行CLI。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;Exec&lt;/code&gt;检查CLI退出码，随后的&lt;code&gt;Error&lt;/code&gt;还会确认目标文件确实已经生成。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;复制主程序集以外的完整输出内容，再由CLI生成受保护的主程序集，是为了保留程序运行需要的配置和依赖文件。不要只把混淆后的DLL单独交付。排除原始主程序集也能确保后续文件检查不会把未经保护的副本误判为成功结果。&lt;/p&gt;
&lt;h2&gt;第三步：配置CLI路径&lt;/h2&gt;
&lt;p&gt;不建议把个人电脑上的绝对安装路径写入&lt;code&gt;.csproj&lt;/code&gt;。可以使用环境变量，让不同开发机和CI环境使用各自的CLI位置。&lt;/p&gt;
&lt;p&gt;在PowerShell中为当前终端设置：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;$env:OBFUSCATOR_CLI_PATH = 'C:\Tools\CSharpObfuscator\CLI.exe'
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;如需永久写入当前Windows用户的环境变量：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;[Environment]::SetEnvironmentVariable(
    'OBFUSCATOR_CLI_PATH',
    'C:\Tools\CSharpObfuscator\CLI.exe',
    'User'
)
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;永久设置后需要重新打开Visual Studio、Rider或终端。也可以在单次构建中直接传入路径：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;dotnet build -c Release -p:ObfuscatorCliPath='C:\Tools\CSharpObfuscator\CLI.exe'
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;第四步：执行Release构建&lt;/h2&gt;
&lt;p&gt;在命令行中执行：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;dotnet build -c Release
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;在Visual Studio中将解决方案配置切换为&lt;code&gt;Release&lt;/code&gt;后执行“生成解决方案”，或者在Rider中构建Release配置，都会触发同一个MSBuild目标。Debug构建默认不会执行混淆。&lt;/p&gt;
&lt;p&gt;如需临时跳过混淆，可以显式关闭开关：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;dotnet build -c Release -p:RunObfuscator=false
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;构建日志中出现下面两行，表示集成目标已执行：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;Obfuscating ...\bin\Release\net8.0\MyApp.dll
Protected output: ...\bin\Release\net8.0\protected\
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;在CI中使用&lt;/h2&gt;
&lt;p&gt;CI使用的仍然是相同命令，只需提前安装并注册CLI，再通过环境变量或MSBuild属性传入路径：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;$env:OBFUSCATOR_CLI_PATH = &amp;quot;$env:OBFUSCATOR_HOME\CLI.exe&amp;quot;
dotnet restore
dotnet build -c Release --no-restore
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;建议把&lt;code&gt;protected&lt;/code&gt;目录作为发布制品，并在上传前增加一个文件存在性检查：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-powershell&quot;&gt;&lt;code class=&quot;language-powershell&quot;&gt;$protectedFile = '.\bin\Release\net8.0\protected\MyApp.dll'
if (-not (Test-Path $protectedFile)) {
    throw &amp;quot;未生成混淆后的程序集: $protectedFile&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;&lt;h2&gt;WPF、WinForms、&lt;a href=&quot;http://xn--ASP-8i4ek27bpw7b.NET&quot;&gt;类库和ASP.NET&lt;/a&gt; Core项目&lt;/h2&gt;
&lt;p&gt;这套写法不依赖控制台项目：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WPF和WinForms项目的&lt;code&gt;$(TargetPath)&lt;/code&gt;会指向其主程序集。&lt;/li&gt;
&lt;li&gt;类库项目可以直接保护生成的DLL。&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;http://ASP.NET&quot;&gt;ASP.NET&lt;/a&gt; Core项目应在完整发布目录中保留依赖、配置文件和静态资源，仅替换需要保护的业务程序集。&lt;/li&gt;
&lt;li&gt;一个解决方案包含多个项目时，只在真正需要保护的项目中加入目标，或者把公共目标提取到单独的&lt;code&gt;.targets&lt;/code&gt;文件后按条件导入。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;使用反射、依赖注入扫描、JSON序列化、XAML绑定、插件加载或P/Invoke时，重命名可能影响运行。应通过忽略列表保留外部依赖的名称，并对启动、登录、核心业务、配置加载和自动更新等流程进行回归测试。&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;dotnet publish&lt;/code&gt;和单文件发布注意事项&lt;/h2&gt;
&lt;p&gt;本文示例挂接在&lt;code&gt;Build&lt;/code&gt;目标之后，适合普通DLL、EXE构建。执行&lt;code&gt;dotnet publish&lt;/code&gt;时，发布过程还会在&lt;code&gt;publish&lt;/code&gt;目录重新整理文件，因此不要直接把未经检查的&lt;code&gt;publish&lt;/code&gt;目录当成混淆结果。&lt;/p&gt;
&lt;p&gt;常规发布可先执行&lt;code&gt;dotnet publish -c Release&lt;/code&gt;，再用CLI的&lt;code&gt;--input&lt;/code&gt;和&lt;code&gt;--output&lt;/code&gt;处理发布目录中的主程序集。启用&lt;code&gt;PublishSingleFile&lt;/code&gt;时，应将发布得到的单文件EXE作为CLI输入，而不是构建阶段的DLL。建议为单文件项目单独建立发布后目标，并验证解包、混淆、重构后的程序能够在干净环境启动。&lt;/p&gt;
&lt;h2&gt;完整示例代码&lt;/h2&gt;
&lt;p&gt;可以访问GitHub获取完整项目代码: &lt;a href=&quot;https://github.com/leapever/csharp-obfuscator-cli-integration&quot;&gt;https://github.com/leapever/csharp-obfuscator-cli-integration&lt;/a&gt;&lt;/p&gt;
</description><pubDate>Sun, 26 Jul 2026 18:56:01 +0800</pubDate></item><item><title>恒盾C#混淆加密大师1.5.0：EXE保护升级与.NET 10兼容</title><link>https://www.ylongsoft.com/post/hengdun-obfuscator-1-5-0-protection-upgrade.html</link><description>&lt;p&gt;恒盾C#混淆加密大师 1.5.0 版本现已发布。本次更新聚焦于保护效果、运行兼容性和处理效率，增强了原生化EXE保护能力，适配最新的 .NET 10，并对多项常用混淆功能进行了集中优化。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1784961803611_43d5594f.png&quot; alt=&quot;C#混淆加密大师1.5.0截图&quot;/&gt;&lt;/p&gt;&lt;h2&gt;下载最新版本&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://csharpobf.leapever.com&quot;&gt;点击进入下载页面&lt;/a&gt;&lt;/p&gt;&lt;p&gt;对于需要保护 C# DLL、EXE、WPF、WinForms、控制台程序以及其他 .NET 应用的开发者来说，1.5.0 是一次以稳定性和实用性为重点的升级。无论是单独启用某项保护，还是组合使用多项混淆功能，新版本都能更好地适应复杂项目和实际发布环境。&lt;/p&gt;&lt;h2&gt;1.5.0 版本重点更新&lt;/h2&gt;&lt;h3&gt;1. 增强原生化EXE保护效果&lt;/h3&gt;&lt;p&gt;1.5.0 进一步增强了原生化EXE的保护效果，可以提高程序被分析和还原的难度，为需要重点保护的 Windows EXE 程序提供更强的安全保障。&lt;/p&gt;&lt;p&gt;这项更新适合用于商业桌面软件、企业内部工具、授权客户端以及包含重要业务逻辑的应用程序。通过升级后的原生化EXE功能，开发者可以在保持程序正常交付和运行的同时，进一步加强对核心代码和软件成果的保护。&lt;/p&gt;&lt;h3&gt;2. 更新混淆内核，适配最新.NET 10&lt;/h3&gt;&lt;p&gt;随着 .NET 平台持续更新，混淆工具也需要及时适配新的程序格式和开发环境。1.5.0 更新了混淆内核，现已适配最新的 .NET 10，为使用新版本 .NET 构建项目的开发者提供支持。&lt;/p&gt;&lt;p&gt;对于计划升级到 .NET 10，或已经开始使用 .NET 10 开发和发布程序的团队，新版本可以更顺畅地接入现有保护流程。同时，原有 .NET 项目仍可继续使用，便于开发者在不同版本的项目之间保持统一的混淆加密方案。&lt;/p&gt;&lt;h3&gt;3. 提升防篡改功能的兼容性&lt;/h3&gt;&lt;p&gt;防篡改功能可以帮助开发者降低程序文件被修改后继续运行的风险。1.5.0 提升了该功能的兼容性，使其在更多EXE程序以及多种保护功能组合使用时表现得更加稳定。&lt;/p&gt;&lt;p&gt;对于同时启用函数体隐藏、资源文件混淆或其他保护选项的项目，这项改进可以减少功能之间相互影响的情况，让开发者更方便地根据项目需求组合不同的保护能力。&lt;/p&gt;&lt;h3&gt;4. 提升资源文件混淆的兼容性&lt;/h3&gt;&lt;p&gt;.NET 程序经常会包含界面资源、文本资源、配置资源以及其他随程序集发布的内容。1.5.0 提升了资源文件混淆的兼容性，使资源保护功能能够适应更多类型的项目。&lt;/p&gt;&lt;p&gt;这项更新对于资源使用较多的 WPF、WinForms 和桌面应用尤其有价值。开发者可以继续保护程序中的资源内容，同时降低混淆后出现资源读取异常或程序运行异常的概率。&lt;/p&gt;&lt;h3&gt;5. 提升隐藏函数体的兼容性&lt;/h3&gt;&lt;p&gt;隐藏函数体是保护关键业务逻辑的重要功能之一。1.5.0 对该功能进行了兼容性优化，使其能够更稳定地应用于包含复杂调用关系和多种程序结构的项目。&lt;/p&gt;&lt;p&gt;如果程序中包含授权验证、业务规则、数据处理或其他不希望被直接查看的关键逻辑，可以使用隐藏函数体功能提高分析难度。新版本让这项保护能力在实际项目中更易于使用，也更适合与其他混淆选项配合启用。&lt;/p&gt;&lt;h3&gt;6. 提升隐藏字符串和数字的兼容性&lt;/h3&gt;&lt;p&gt;程序中的字符串和数字常常包含接口地址、业务参数、授权信息、状态标识或其他敏感内容。1.5.0 提升了隐藏字符串和数字功能的兼容性，使其可以覆盖更多使用场景，并改善与其他保护功能同时启用时的稳定性。&lt;/p&gt;&lt;p&gt;对于敏感常量较多，或希望减少程序静态信息暴露的项目，这项更新可以提供更完整的保护体验。开发者无需改变原有业务代码，即可继续通过统一配置保护相关内容。&lt;/p&gt;&lt;h3&gt;7. 优化核心混淆速度&lt;/h3&gt;&lt;p&gt;除了保护效果和兼容性提升之外，1.5.0 还优化了核心混淆速度。对于程序集较多、项目体积较大或需要频繁执行混淆的开发者，新版本可以缩短等待时间，提高日常构建和发布效率。&lt;/p&gt;&lt;p&gt;这项优化也更适合自动化构建、持续集成和批量处理场景。团队可以将混淆步骤继续保留在现有发布流程中，同时获得更流畅的处理体验。&lt;/p&gt;&lt;h2&gt;多项保护功能配合使用更加稳定&lt;/h2&gt;&lt;p&gt;真实项目通常不会只使用单一保护功能，而是会根据程序特点组合启用原生化EXE、防篡改、资源文件混淆、隐藏函数体以及隐藏字符串和数字等功能。&lt;/p&gt;&lt;p&gt;1.5.0 对这些常用能力进行了整体兼容性提升，重点改善多项功能同时启用时的稳定性。对于结构复杂、资源较多或保护要求较高的项目，新版本能够减少反复调整配置的成本，让混淆加密流程更容易融入日常开发和发布工作。&lt;/p&gt;&lt;h2&gt;这次更新适合哪些用户&lt;/h2&gt;&lt;p&gt;如果你有以下需求，建议升级到 1.5.0：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;需要增强 Windows EXE 程序的原生化保护效果&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;正在使用或准备升级到 .NET 10&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;需要对 C# DLL 或 EXE 进行混淆加密&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;需要组合使用防篡改、资源文件混淆和函数体隐藏等功能&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;需要保护程序中的字符串、数字和关键业务逻辑&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;需要提升大型项目或自动化发布流程中的混淆处理效率&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;总结&lt;/h2&gt;&lt;p&gt;恒盾C#混淆加密大师 1.5.0 是一次围绕保护强度、平台适配、功能兼容性和处理效率展开的重要更新。新版本不仅增强了原生化EXE保护效果并适配最新的 .NET 10，还集中提升了防篡改、资源文件混淆、隐藏函数体、隐藏字符串和数字等核心功能的稳定性。&lt;/p&gt;&lt;p&gt;对于需要在真实项目中长期使用 C# 混淆、DLL加密和EXE保护的开发者来说，1.5.0 能够提供更完整、更稳定且更高效的代码保护体验。&lt;/p&gt;</description><pubDate>Sat, 25 Jul 2026 14:43:23 +0800</pubDate></item><item><title>EXE加密原生内核使用指南：无需系统环境即可运行</title><link>https://www.ylongsoft.com/post/exe-encryptor-native-kernel-guide.html</link><description>&lt;h1&gt;EXE加密原生内核使用指南：无需系统环境即可运行&lt;/h1&gt;&lt;p&gt;使用EXE一机一码打包加密大师时，软件默认使用普通内核进行打包，可以满足绝大多数电脑的运行需求。但少数电脑由于系统版本较旧、经过精简、处于内网隔离环境，或安装了较为严格的安全防护软件，打包后的程序可能出现双击没有反应、启动后立即关闭或运行异常的情况。遇到这类问题时，可以尝试切换为&lt;strong&gt;原生内核&lt;/strong&gt;重新打包。如果你不了解EXE一机一码打包加密大师, 可以访问官网查看具体介绍和说明.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://exeenc.leapever.com/&quot;&gt;点击进入EXE一机一码打包加密大师官网&lt;/a&gt;&lt;/p&gt;&lt;h2&gt;什么是原生内核&lt;/h2&gt;&lt;p&gt;在&lt;strong&gt;快速打包&lt;/strong&gt;页面的设置区域中，“加密壳”一项提供两种内核可选：&lt;strong&gt;普通内核&lt;/strong&gt;和&lt;strong&gt;原生内核&lt;/strong&gt;。普通内核是默认选项，需要一定的系统环境支持，适合绝大多数Windows电脑；原生内核则不依赖额外的系统环境，程序可以直接运行，通用性更好，尤其适合运行环境比较特殊的电脑。&lt;/p&gt;&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1783858465053_0af29b25.png&quot; alt=&quot;原生内核&quot;/&gt;&lt;/p&gt;&lt;p&gt;两种内核只是加密壳的运行载体不同，不会影响你选择的一机一码、静态密码或网络验证等授权方式，也不会改变激活码的计算方式。切换内核后原有的授权设置可以继续沿用，如果已经生成过激活码，建议切换内核后重新打包并在目标电脑上测试。&lt;/p&gt;&lt;h2&gt;适用场景&lt;/h2&gt;&lt;p&gt;以下情况可以优先考虑切换到原生内核重新打包：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;打包后的程序在部分电脑上双击没有反应、启动后一闪而过，或者提示缺少组件。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;目标电脑系统版本较旧（例如仍在使用Windows 7）、是精简版系统镜像，或者是刚安装不久、组件不全的系统。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;软件需要部署在完全离线、无法连接网络更新系统组件的电脑上。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;目标电脑处于企业内网、政府机关等环境，安装策略较为严格，无法自由安装额外的系统组件。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;已经尝试过兼容模式，问题依然存在，希望进一步提高打包程序的通用性。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1783858465698_7245898c.png&quot; alt=&quot;打包问题&quot;/&gt;&lt;/p&gt;&lt;p&gt;如果打包后的程序在普通内核下已经可以正常运行，无需切换，保持默认设置即可。&lt;/p&gt;&lt;h2&gt;使用方法&lt;/h2&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;打开EXE一机一码打包加密大师，进入&lt;strong&gt;快速打包&lt;/strong&gt;页面。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;按照正常流程选择需要打包的EXE文件，设置软件名称、加密模式等选项。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;在设置区域的“加密壳”一项中，选择&lt;strong&gt;原生内核&lt;/strong&gt;（默认使用的是普通内核）。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;点击“打包”按钮生成加密程序。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;将生成的程序复制到目标电脑上测试运行效果，确认可以正常启动和使用。&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;h2&gt;使用建议&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;建议先使用默认的普通内核打包测试，只有在目标电脑上出现无法启动、运行异常等问题时，再切换为原生内核重新打包。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;原生内核和兼容模式可以配合使用：如果单独切换原生内核后问题仍未解决，可以同时勾选兼容模式一起测试。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;每次调整内核或其他打包设置后，建议在实际使用的电脑上重新测试一遍，确认无误后再正式对外分发。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><pubDate>Sun, 12 Jul 2026 20:14:25 +0800</pubDate></item><item><title>EXE一机一码加密后无法运行？兼容模式使用指南</title><link>https://www.ylongsoft.com/post/exe-encryptor-compatible-mode-guide-ylongsoft.html</link><description>&lt;h1&gt;EXE一机一码加密后无法运行？兼容模式使用指南&lt;/h1&gt;
&lt;p&gt;使用EXE一机一码打包加密大师后，如果原始EXE可以正常运行，但打包生成的程序出现点击后没有反应、启动后立即关闭、启动时报错或部分功能异常。此类情况通常与原软件自身的运行方式有关，并不一定是加密方式或授权设置有问题, 本文主要介绍如何解决一些常见的兼容性问题。如果你不了解EXE一机一码打包加密大师, 可以访问官网查看具体介绍和说明.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://exeenc.leapever.com/&quot;&gt;点击进入EXE一机一码打包加密大师官网&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;解决方案详解&lt;/h2&gt;
&lt;p&gt;在普通模式打包时，软件会使用常规方案进行打包，进行高强度加密，适合绝大多数EXE程序。如果打包后的程序可以正常启动和使用，保持默认设置即可。&lt;/p&gt;
&lt;p&gt;而部分EXE程序带有自身完整性校验、特殊的启动流程，或者需要与其他程序文件紧密配合；一些使用较老或较少见开发环境制作的软件，也可能对打包后的运行方式比较敏感。遇到这些情况时，开启&lt;strong&gt;兼容模式&lt;/strong&gt;通常可以提高打包后程序的适应性，改善无法启动、意外退出或功能运行异常等问题。&lt;/p&gt;
&lt;p&gt;使用时，在&lt;strong&gt;快速打包&lt;/strong&gt;页面的设置区域找到&lt;strong&gt;兼容模式&lt;/strong&gt;，勾选“使用兼容加密模式”，然后重新打包并测试生成的程序。开启兼容模式不会改变您选择的一机一码、静态密码或网络验证方式，也不需要修改原始EXE。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1783773174082_69b0f0ed.png&quot; alt=&quot;兼容模式按钮&quot;&gt;&lt;/p&gt;
&lt;p&gt;建议先使用默认模式打包；如果默认模式运行正常，就继续使用默认方案。如果默认模式生成的程序无法正常运行，再开启兼容模式重新打包，并在实际使用的电脑上测试。兼容模式主要用于解决原始EXE本身可以运行、加密后才出现异常的情况；如果原始EXE也无法运行，则需要先检查原程序自身的运行条件。&lt;/p&gt;
</description><pubDate>Sat, 11 Jul 2026 20:32:54 +0800</pubDate></item><item><title>多实例共享进程：HTML打包EXE多开加速与状态共享</title><link>https://www.ylongsoft.com/post/html2exe-multi-instance-shared-process-zblog-ylongsoft.html</link><description>&lt;p&gt;在一些网页应用打包成EXE后，用户可能会习惯同时打开多个窗口。例如后台系统需要一边查看订单列表，一边打开客户详情；运营工具需要同时对比多个页面；或者同一个网站需要频繁打开多个独立窗口。&lt;/p&gt;&lt;p&gt;如果每次双击EXE都完整启动一个新的程序实例，第二个、第三个窗口有时会明显变慢，甚至出现短暂白屏。&lt;strong&gt;多实例共享进程&lt;/strong&gt;就是为这类场景准备的功能：在同一个EXE已经运行时，再次打开它，可以更快显示新窗口，并共享同一套登录状态。&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://api.leapever.com/packerv2/download&quot;&gt;立即下载最新版本&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://leapever.com/intro/html2exe/&quot;&gt;HTML打包EXE工具官网&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;多实例共享进程是什么？&lt;/h2&gt;&lt;p&gt;简单来说，它可以让同一个EXE在多次打开时表现得更像一个完整的多窗口应用：&lt;/p&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;第一次打开 EXE：正常启动程序&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;程序已经运行时再次打开同一个 EXE：快速打开一个新窗口&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;新窗口与已有窗口共享登录状态、Cookie、本地存储等数据&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;用户可以同时使用多个窗口，而不必等待每次都完整启动&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;注意：这不是“单例模式”。单例模式的目标是&lt;strong&gt;只允许一个窗口存在&lt;/strong&gt;，再次打开时只会回到已有窗口；多实例共享进程的目标是&lt;strong&gt;允许多个窗口存在&lt;/strong&gt;，只是让后续窗口打开得更快、更稳定。&lt;/p&gt;&lt;h2&gt;这个功能能解决什么问题？&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;后续窗口打开更快&lt;/strong&gt;：对于内容较重的网站，完整启动新实例可能需要较长时间。开启后，在已有窗口运行下再次打开EXE，通常能更快显示新窗口。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;减少白屏等待&lt;/strong&gt;：第二个窗口常出现的几秒钟白屏，通过此功能可显著缩短。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;多窗口共享登录状态&lt;/strong&gt;：用户在第一个窗口登录后，再开新窗口无需重新登录，Cookie和本地数据保持一致。&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;strong&gt;更适合多窗口办公&lt;/strong&gt;：例如一个窗口查看列表，另一个查看详情，并排对照处理。&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;什么时候推荐开启？&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;用户经常重复双击同一个EXE打开多个窗口&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;需要同时查看多个页面或多个业务对象&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;第二个窗口打开时有明显白屏或等待&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;应用需要保持统一登录状态&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;应用是后台系统、业务系统、管理系统等&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;什么时候不建议开启？&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;希望每次EXE都是完全独立的数据环境&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;需要同时登录多个不同账号进行测试&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;已开启隐身模式或禁用缓存&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;目标为“只能打开一个窗口”，请使用单例模式&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2&gt;如何开启多实例共享进程&lt;/h2&gt;&lt;ol class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;打开 HTML打包EXE 工具&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;进入&lt;strong&gt;高级设置&lt;/strong&gt;页面&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;勾选&lt;strong&gt;多实例共享进程&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;正常点击&lt;strong&gt;打包&lt;/strong&gt;生成 EXE&lt;/p&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1783429980476_081270ce.png&quot; alt=&quot;多实例共享进程&quot;/&gt;&lt;/p&gt;&lt;h2&gt;与单例模式的区别&lt;/h2&gt;&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th&gt;功能&lt;/th&gt;&lt;th&gt;单例模式&lt;/th&gt;&lt;th&gt;多实例共享进程&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;是否允许多个窗口&lt;/td&gt;&lt;td&gt;不允许&lt;/td&gt;&lt;td&gt;允许&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;再次双击EXE&lt;/td&gt;&lt;td&gt;回到已有窗口&lt;/td&gt;&lt;td&gt;打开新窗口&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;是否共享登录状态&lt;/td&gt;&lt;td&gt;共享&lt;/td&gt;&lt;td&gt;共享&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;适合场景&lt;/td&gt;&lt;td&gt;单窗口应用&lt;/td&gt;&lt;td&gt;多页面业务系统&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;h2&gt;常见问题&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;开启后是否每个窗口都能共享登录状态？&lt;/strong&gt;通常可以，只要网站使用常见的Cookie、本地存储方式。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;可以用来同时登录多个账号吗？&lt;/strong&gt;不推荐。如需多账号登录，请使用默认多实例方式或不同软件ID打包。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;为什么需要填写软件ID？&lt;/strong&gt;用于区分不同的打包应用，避免数据影响。&lt;/p&gt;&lt;p&gt;&lt;strong&gt;和隐身模式/禁用缓存能一起用吗？&lt;/strong&gt;不建议，目标相反。&lt;/p&gt;&lt;h2&gt;总结&lt;/h2&gt;&lt;p&gt;多实例共享进程适合需要频繁打开多个同一EXE窗口的应用，让后续窗口打开更快，减少白屏，共享登录状态。建议在打包时根据需求启用。&lt;/p&gt;&lt;h2&gt;相关阅读&lt;/h2&gt;&lt;ul class=&quot; list-paddingleft-2&quot;&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://leapever.com/tutorial/html2exe-window-mode-guide&quot;&gt;HTML打包EXE工具四种弹窗方式图文详解&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://leapever.com/tutorial/html2exe-tab-mode-guide&quot;&gt;HTML打包EXE工具标签页模式详解&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;li&gt;&lt;p&gt;&lt;a href=&quot;https://leapever.com/tutorial/html-pack-exe-function-introduction&quot;&gt;HTML打包EXE工具功能介绍&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;&lt;/ul&gt;</description><pubDate>Tue, 07 Jul 2026 21:12:59 +0800</pubDate></item><item><title>免费绿色JS混淆加密工具 - 离线版本分享</title><link>https://www.ylongsoft.com/post/js-obf-offline-version.html</link><description>&lt;section style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; text-align: justify; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span leaf=&quot;&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; max-width: 100%; visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;近期有不少朋友询问JS加密相关的问题, 在使用HTML一键打包工具的过程中, 希望通过JS混淆加密, 提升保护强度.&lt;/span&gt;&lt;/section&gt;&lt;p style=&quot;margin: 0px 0px 1em; padding: 0px; font-size: 16px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; color: rgb(51, 51, 51); font-family: Penrose, &amp;quot;PingFang SC&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, Tahoma, Arial, &amp;quot;Lantinghei SC&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, simsun, sans-serif; white-space: normal; background-color: rgb(255, 255, 255);&quot;&gt;&lt;br/&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; text-align: justify; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span leaf=&quot;&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; max-width: 100%; visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;其实HTML一键打包工具已经内置了加密功能, 无需JS混淆也可以很好的保护打包的JS/HTML/XML/JSON等文本资源, 详细可以参考之前的文章:&lt;/span&gt;&lt;/section&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;a href=&quot;https://www.h5pack.com/post/html2apk-file-encryption-guide-h5pack.html&quot; style=&quot;-webkit-tap-highlight-color: rgba(255, 255, 255, 0); margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(25, 131, 251); text-decoration: none; transition: background-color 0.15s linear, color 0.15s linear;&quot;&gt;HTML打包APK文件加密功能完整指南&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;a href=&quot;https://www.h5pack.com/post/html-exe-data-encryption.html&quot; style=&quot;-webkit-tap-highlight-color: rgba(255, 255, 255, 0); margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(25, 131, 251); text-decoration: none; transition: background-color 0.15s linear, color 0.15s linear;&quot;&gt;HTML 打包 EXE 工具数据加密功能详解&lt;/a&gt;&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;免费JS混淆工具下载地址&lt;/p&gt;&lt;p style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; text-align: justify; position: relative; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;a href=&quot;https://api.leapever.com/tools/downloadjsenc&quot; target=&quot;_blank&quot; style=&quot;-webkit-tap-highlight-color: rgba(255, 255, 255, 0); margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; color: rgb(25, 131, 251); text-decoration: none; transition: background-color 0.15s linear, color 0.15s linear;&quot;&gt;点击进入下载地址&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;section style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; text-align: justify; background-color: rgb(255, 255, 255); visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span leaf=&quot;&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; max-width: 100%; visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;不过考虑到有些朋友还是担心自己的劳动成果被别人看到, 这里再分享一款绿色免费可以离线使用的JS混淆加密工具, 这款软件我们团队也在使用, 适合一些快速加密的场景, 强度虽然不是特别高, 但强在兼容性非常好, 我们团队测试使用基本混淆后不影响任何功能, 在普通个人用户使用场景中已经足够了, 并且该混淆工具可以配合HTML一键打包EXE工具一起使用:&lt;/span&gt;&lt;/section&gt;&lt;section nodeleaf=&quot;&quot; style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; background-color: rgb(255, 255, 255); text-align: center; visibility: visible; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img class=&quot;rich_pages wxw-img&quot; data-aistatus=&quot;1&quot; data-imgfileid=&quot;100001385&quot; data-s=&quot;300,640&quot; data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/jD2qz4iaMwWiaNaoxicBWTRasmHYNXsQjDk2DBXme0k3KS1478aNMbjuVNUgdmGrWXktrf6BhBoICjcuQYXiaMEmbXuAb5q5EY61DA0A5u9oRAw/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=0&quot; data-type=&quot;png&quot; type=&quot;block&quot; data-original-style=&quot;null&quot; data-index=&quot;3&quot; data-ratio=&quot;0.6254886630179828&quot; data-w=&quot;2558&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/jD2qz4iaMwWiaNaoxicBWTRasmHYNXsQjDk2DBXme0k3KS1478aNMbjuVNUgdmGrWXktrf6BhBoICjcuQYXiaMEmbXuAb5q5EY61DA0A5u9oRAw/640?wx_fmt=png&amp;from=appmsg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=0&quot; data-original=&quot;https://mmbiz.qpic.cn/mmbiz_png/jD2qz4iaMwWiaNaoxicBWTRasmHYNXsQjDk2DBXme0k3KS1478aNMbjuVNUgdmGrWXktrf6BhBoICjcuQYXiaMEmbXuAb5q5EY61DA0A5u9oRAw/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=0&quot; _width=&quot;677px&quot; alt=&quot;图片&quot; data-report-img-idx=&quot;0&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; border: 0px; vertical-align: bottom; max-width: 100%; transform: translateZ(0px); transition: transform 0.2s; outline: 0px; display: inline; height: auto !important; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible !important; width: 676.992px !important;&quot;/&gt;&lt;/section&gt;&lt;section nodeleaf=&quot;&quot; style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; background-color: rgb(255, 255, 255); text-align: center; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;img class=&quot;rich_pages wxw-img&quot; data-aistatus=&quot;1&quot; data-imgfileid=&quot;100001386&quot; data-s=&quot;300,640&quot; data-src=&quot;https://mmbiz.qpic.cn/mmbiz_png/jD2qz4iaMwWhVsLEkLEJ6s5mInIibnJIPfB5r1JKIUZRia9pd7HErThHjC8mP6KwNskSmxLVnJwE2Z4cl1KEJ26MT4vnMUDrpgADnS52oiaVqxc/640?wx_fmt=png&amp;amp;from=appmsg#imgIndex=1&quot; data-type=&quot;png&quot; type=&quot;block&quot; data-original-style=&quot;null&quot; data-index=&quot;4&quot; data-ratio=&quot;0.6254886630179828&quot; data-w=&quot;2558&quot; src=&quot;https://mmbiz.qpic.cn/mmbiz_png/jD2qz4iaMwWhVsLEkLEJ6s5mInIibnJIPfB5r1JKIUZRia9pd7HErThHjC8mP6KwNskSmxLVnJwE2Z4cl1KEJ26MT4vnMUDrpgADnS52oiaVqxc/640?wx_fmt=png&amp;from=appmsg&amp;tp=webp&amp;wxfrom=5&amp;wx_lazy=1#imgIndex=1&quot; data-original=&quot;https://mmbiz.qpic.cn/mmbiz_png/jD2qz4iaMwWhVsLEkLEJ6s5mInIibnJIPfB5r1JKIUZRia9pd7HErThHjC8mP6KwNskSmxLVnJwE2Z4cl1KEJ26MT4vnMUDrpgADnS52oiaVqxc/640?wx_fmt=png&amp;amp;from=appmsg&amp;amp;tp=webp&amp;amp;wxfrom=5&amp;amp;wx_lazy=1#imgIndex=1&quot; _width=&quot;677px&quot; alt=&quot;图片&quot; data-report-img-idx=&quot;1&quot; data-fail=&quot;0&quot; style=&quot;-webkit-tap-highlight-color: rgba(0, 0, 0, 0); margin: 0px; padding: 0px; border: 0px; vertical-align: bottom; max-width: 100%; transform: translateZ(0px); transition: transform 0.2s; outline: 0px; display: inline; height: auto !important; box-sizing: border-box !important; overflow-wrap: break-word !important; visibility: visible !important; width: 676.992px !important;&quot;/&gt;&lt;/section&gt;&lt;section style=&quot;margin: 0px 0px 24px; padding: 0px; font-size: 17px; border: 0px; vertical-align: baseline; white-space: normal; -webkit-tap-highlight-color: rgba(0, 0, 0, 0); outline: 0px; max-width: 100%; color: rgba(0, 0, 0, 0.9); font-family: &amp;quot;PingFang SC NEW&amp;quot;, system-ui, -apple-system, BlinkMacSystemFont, &amp;quot;Helvetica Neue&amp;quot;, &amp;quot;Hiragino Sans GB&amp;quot;, &amp;quot;Microsoft YaHei UI&amp;quot;, &amp;quot;Microsoft YaHei&amp;quot;, Arial, sans-serif; letter-spacing: 0.544px; text-align: justify; background-color: rgb(255, 255, 255); box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;&lt;span leaf=&quot;&quot; style=&quot;margin: 0px; padding: 0px; border: 0px; vertical-align: baseline; outline: 0px; max-width: 100%; box-sizing: border-box !important; overflow-wrap: break-word !important;&quot;&gt;本款工具是基于开源的JS混淆技术专门做了离线化适配的, 不需要联网, 也没有任何文件大小和数目限制, 所有运行都在自己电脑本地处理, 无需担心数据泄露等问题&lt;/span&gt;&lt;/section&gt;&lt;/p&gt;&lt;p&gt;&lt;br/&gt;&lt;/p&gt;</description><pubDate>Mon, 06 Jul 2026 21:00:07 +0800</pubDate></item><item><title>HTML2APK：本地文件加密功能详解</title><link>https://www.ylongsoft.com/post/html2apk-local-file-encryption-guide-ylongsoft.html</link><description>&lt;p&gt;HTML一键打包APK工具近期新增了本地文件加密功能，打包&lt;strong&gt;本地HTML项目&lt;/strong&gt;时，可以设置&lt;strong&gt;本地文件加密Key&lt;/strong&gt;。填写Key后，工具会对项目中的HTML、JS、CSS、JSON、XML等文本文件进行加密，保护代码和资源。&lt;/p&gt;
&lt;h2&gt;下载最新版本&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://api.leapever.com/apkpacker/download&quot;&gt;下载HTML一键打包APK工具&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://leapever.com/intro/apk-packer&quot;&gt;官方主页&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://leapever.com/intro/apk-packer/docs/intro&quot;&gt;完整使用文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;功能适用场景&lt;/h2&gt;
&lt;p&gt;本功能适合保护离线HTML项目，例如：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VR全景项目的脚本和配置&lt;/li&gt;
&lt;li&gt;RPG Maker MV/MZ游戏的逻辑文件&lt;/li&gt;
&lt;li&gt;离线课件、培训资料、产品展示&lt;/li&gt;
&lt;li&gt;企业内部本地HTML应用&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;开启加密后，APK中的文本资源不会以明文存放，起到保护作用。&lt;/p&gt;
&lt;h2&gt;配置位置&lt;/h2&gt;
&lt;p&gt;在打包工具的&lt;strong&gt;快速打包&lt;/strong&gt;页面，找到&lt;strong&gt;本地文件加密Key&lt;/strong&gt;输入框。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1783252786797_27771ebd.png&quot; alt=&quot;本地文件加密Key配置位置&quot;&gt;&lt;/p&gt;
&lt;h2&gt;操作步骤&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;在&lt;strong&gt;网址或本地HTML文件路径&lt;/strong&gt;中选择本地HTML主文件。&lt;/li&gt;
&lt;li&gt;设置APP名称、版本号、包名等常规参数。&lt;/li&gt;
&lt;li&gt;在&lt;strong&gt;本地文件加密Key&lt;/strong&gt;中填写自定义内容，如 &lt;code&gt;mykey123&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;点击开始打包，生成APK。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;填写Key即启用加密。加密后，APK内部文件显示为乱码。&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/07/1783252787195_df654d85.png&quot; alt=&quot;乱码文件&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Key填写的影响&lt;/h2&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;操作&lt;/th&gt;
&lt;th&gt;结果&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;不填&lt;/td&gt;
&lt;td&gt;不加密，普通打包&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;填写任意内容&lt;/td&gt;
&lt;td&gt;加密，如 &lt;code&gt;abc123&lt;/code&gt;、&lt;code&gt;myapp2026&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2&gt;加密的文件类型&lt;/h2&gt;
&lt;p&gt;文本类资源：HTML、JS、CSS、JSON、XML、TXT、CSV。&lt;/p&gt;
&lt;p&gt;二进制文件（图片、音频、视频、字体）不加密，以保持APK性能。&lt;/p&gt;
&lt;h2&gt;适用范围&lt;/h2&gt;
&lt;p&gt;若项目地址以 &lt;code&gt;http&lt;/code&gt; 或 &lt;code&gt;https&lt;/code&gt; 开头，表示远程网页，本地加密不生效。&lt;/p&gt;
&lt;h2&gt;使用建议&lt;/h2&gt;
&lt;p&gt;适合包含大量核心脚本、不希望源码被轻易查看的离线项目。临时测试可不填Key。&lt;/p&gt;
&lt;h2&gt;常见问题&lt;/h2&gt;
&lt;h3&gt;运行受影响吗？&lt;/h3&gt;
&lt;p&gt;不会。APP自动读取加密文件，用户无感。&lt;/p&gt;
&lt;h3&gt;忘记Key怎么办？&lt;/h3&gt;
&lt;p&gt;不影响已打包APK的运行。重新打包需要填写Key。&lt;/p&gt;
&lt;h2&gt;相关阅读&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://leapever.com/tutorial/apk-packer-no-verify-version-launch&quot;&gt;免认证版本介绍&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://leapever.com/tutorial/html-apk-file-download&quot;&gt;文件下载功能详解&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://leapever.com/tutorial/html2apk-package-name-guide&quot;&gt;安装覆盖问题解析&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://leapever.com/intro/apk-packer/docs/intro&quot;&gt;完整使用文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Sun, 05 Jul 2026 19:59:46 +0800</pubDate></item><item><title>解决HTML打包EXE后桌面图标不显示新图标</title><link>https://www.ylongsoft.com/post/html2exe-icon-cache-update-solution.html</link><description>&lt;p&gt;使用HTML打包EXE工具制作Windows桌面程序时，很多用户都会设置一个自定义图标：例如公司Logo、产品图标、课程封面图标，或者KRPano全景项目的品牌图标。打包参数已经填好，图标文件也选择正确，生成的EXE文件属性里看起来也没问题，但放到桌面上以后，显示的却还是Windows默认图标，或者仍然是上一次打包留下来的旧图标。&lt;/p&gt;
&lt;p&gt;这种情况看起来像是“图标没有打包进去”，但实际原因往往不是打包失败，而是Windows桌面图标缓存没有及时更新。本文就介绍这个问题的常见场景、原因分析、排查方法，以及如何在HTML打包EXE工具中通过“刷新桌面图标缓存”功能快速解决。&lt;/p&gt;
&lt;h2&gt;常见现象&lt;/h2&gt;
&lt;p&gt;在HTML项目打包为EXE之后，图标异常通常有几种表现：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;打包时已经选择了 &lt;code&gt;.ico&lt;/code&gt; 图标，但桌面上仍然显示默认白色程序图标。&lt;/li&gt;
&lt;li&gt;第一次打包显示正常，第二次更换图标后，桌面快捷方式仍显示旧图标。&lt;/li&gt;
&lt;li&gt;安装包重新安装后，开始菜单或桌面快捷方式图标没有变化。&lt;/li&gt;
&lt;li&gt;同一个EXE文件复制到不同文件夹后，有的地方图标正常，有的地方仍然显示异常。&lt;/li&gt;
&lt;li&gt;文件属性、任务栏、资源管理器预览中的图标表现不一致。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;如果你确认图标文件路径正确，图标格式也没有问题，那么这些现象大概率和Windows图标缓存有关。&lt;/p&gt;
&lt;h2&gt;为什么会出现图标不更新？&lt;/h2&gt;
&lt;p&gt;Windows为了提高资源管理器、桌面和开始菜单的显示速度，会把应用程序图标、快捷方式图标等信息缓存起来。这样每次打开文件夹或显示桌面时，系统不需要重新从EXE文件里读取图标资源，而是直接使用缓存结果。&lt;/p&gt;
&lt;p&gt;这套机制在日常使用中可以提升性能，但在频繁打包、测试、覆盖安装程序时，就容易造成一个问题：&lt;strong&gt;文件已经更新了，图标缓存却还没有更新&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;对HTML打包EXE这类工具来说，开发和测试阶段经常会出现下面的操作：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用同一个输出文件名反复打包。&lt;/li&gt;
&lt;li&gt;多次更换程序图标。&lt;/li&gt;
&lt;li&gt;反复安装、卸载、覆盖安装测试版。&lt;/li&gt;
&lt;li&gt;桌面快捷方式名称相同，但指向的程序内容已经改变。&lt;/li&gt;
&lt;li&gt;在同一台电脑上测试多个版本的EXE。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些操作都会增加Windows继续使用旧图标缓存的概率。于是用户看到的结果就是：明明新图标已经写入EXE，桌面显示却没有立刻变。&lt;/p&gt;
&lt;h2&gt;先确认不是图标文件本身的问题&lt;/h2&gt;
&lt;p&gt;在刷新缓存之前，可以先做几个简单检查，避免把配置问题误判为缓存问题。&lt;/p&gt;
&lt;h3&gt;1. 确认图标格式正确&lt;/h3&gt;
&lt;p&gt;Windows程序图标建议使用 &lt;code&gt;.ico&lt;/code&gt; 文件，而不是直接使用 &lt;code&gt;.png&lt;/code&gt;、&lt;code&gt;.jpg&lt;/code&gt; 或其他图片格式。一个合格的ICO文件通常会包含多个尺寸，例如 &lt;code&gt;16x16&lt;/code&gt;、&lt;code&gt;32x32&lt;/code&gt;、&lt;code&gt;48x48&lt;/code&gt;、&lt;code&gt;256x256&lt;/code&gt;，这样在桌面、任务栏、资源管理器不同位置都能正常显示。&lt;/p&gt;
&lt;p&gt;如果ICO文件本身只有一个很小的尺寸，或者由图片强行改后缀得到，可能导致显示模糊、显示异常，甚至无法被正确识别。&lt;/p&gt;
&lt;h3&gt;2. 确认打包时选择的是最新图标&lt;/h3&gt;
&lt;p&gt;如果项目目录里有多个相似图标，例如：&lt;/p&gt;
&lt;pre class=&quot;prism-highlight prism-language-text&quot;&gt;&lt;code class=&quot;language-text&quot;&gt;app.ico
app-new.ico
logo.ico
logo-final.ico
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;建议在打包工具中重新选择一次图标文件，确认路径指向的就是当前要使用的ICO文件。尤其是在不同电脑之间迁移项目时，原来的本地路径可能已经失效。&lt;/p&gt;
&lt;h3&gt;3. 换一个文件名测试&lt;/h3&gt;
&lt;p&gt;如果你一直用同一个文件名反复输出，例如 &lt;code&gt;myapp.exe&lt;/code&gt;，可以临时换成 &lt;code&gt;myapp-test-icon.exe&lt;/code&gt; 再打包一次。如果新文件名下图标显示正常，而旧文件名仍显示旧图标，那么基本可以判断是系统缓存导致的。&lt;/p&gt;
&lt;h2&gt;如何刷新Windows桌面图标缓存？&lt;/h2&gt;
&lt;p&gt;传统做法通常是手动重启资源管理器，或者删除系统图标缓存文件后重启Windows。常见方法包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;在任务管理器中重启“Windows资源管理器”。&lt;/li&gt;
&lt;li&gt;通过命令行结束并重新启动 &lt;code&gt;explorer.exe&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;删除IconCache相关缓存文件后重新登录系统。&lt;/li&gt;
&lt;li&gt;直接重启电脑。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;这些方法都能在一定程度上刷新图标，但对普通用户来说不够直观。尤其是在频繁测试打包效果时，每次手动打开任务管理器或重启电脑都比较麻烦。&lt;/p&gt;
&lt;h2&gt;在HTML打包EXE工具中一键刷新桌面图标缓存&lt;/h2&gt;
&lt;p&gt;HTML打包EXE工具已经内置了刷新桌面图标缓存功能。如果你遇到设置图标后桌面仍显示默认图标、旧图标的问题，可以在工具顶部菜单中点击 &lt;code&gt;文件 -&amp;gt; 刷新桌面图标缓存&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://www.ylongsoft.com/zb_users/upload/2026/06/1782305650159_f820d5b5.png&quot; alt=&quot;refresh-icon&quot;&gt;&lt;/p&gt;
&lt;p&gt;点击后，工具会提示确认操作。确认后会刷新Windows桌面图标显示状态，让系统重新加载桌面和快捷方式图标。刷新完成后，再查看桌面快捷方式或重新复制生成的EXE文件，通常就能看到新的图标。&lt;/p&gt;
&lt;p&gt;这个功能适合下面几类场景：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;HTML打包EXE后图标显示为默认图标。&lt;/li&gt;
&lt;li&gt;更换图标重新打包后，桌面仍然显示旧图标。&lt;/li&gt;
&lt;li&gt;安装版EXE重新安装后，桌面快捷方式图标没有更新。&lt;/li&gt;
&lt;li&gt;给客户演示前，需要确认桌面图标已经刷新到最新状态。&lt;/li&gt;
&lt;li&gt;同一台电脑上连续测试多个打包版本，图标显示混乱。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;刷新后仍不正常怎么办？&lt;/h2&gt;
&lt;p&gt;如果刷新桌面图标缓存后，图标仍然没有恢复，可以继续检查下面几项。&lt;/p&gt;
&lt;h3&gt;1. 删除旧快捷方式后重新创建&lt;/h3&gt;
&lt;p&gt;有时桌面快捷方式本身也会保留旧的显示信息。可以删除旧快捷方式，再从最新生成的EXE或安装目录重新创建快捷方式。&lt;/p&gt;
&lt;h3&gt;2. 改变输出文件名&lt;/h3&gt;
&lt;p&gt;Windows对同一路径、同一文件名的图标缓存更容易复用旧结果。测试阶段如果频繁更换图标，可以临时改变输出文件名或安装目录名，帮助判断是否仍是缓存问题。&lt;/p&gt;
&lt;h3&gt;3. 检查安装包配置&lt;/h3&gt;
&lt;p&gt;如果你打包的是安装版EXE，请检查安装目录、桌面快捷方式名称和程序文件名是否符合预期。不同版本使用相同安装目录时，系统更容易沿用已有快捷方式和缓存。&lt;/p&gt;
&lt;h3&gt;4. 重新生成ICO文件&lt;/h3&gt;
&lt;p&gt;如果多个位置都无法正常显示图标，建议重新生成一个标准ICO文件，再重新打包测试。推荐使用包含多尺寸的ICO，不要只放单一尺寸图片。&lt;/p&gt;
&lt;h2&gt;总结&lt;/h2&gt;
&lt;p&gt;HTML打包EXE设置图标后仍显示默认图标，不一定是图标没有写入EXE，也不一定是打包工具没有生效。很多时候，真正的原因是Windows为了提升显示速度而复用了旧的桌面图标缓存。&lt;/p&gt;
&lt;p&gt;排查这类问题时，可以按顺序确认图标格式、图标路径、输出文件名和安装包配置。如果确认配置没有问题，再通过HTML打包EXE工具中的 &lt;strong&gt;文件 -&amp;gt; 刷新桌面图标缓存&lt;/strong&gt; 功能刷新系统图标显示，就能解决大多数“新图标不显示”“旧图标不更新”“桌面显示默认图标”的问题。&lt;/p&gt;
&lt;p&gt;对于经常制作HTML桌面程序、KRPano全景EXE、WebGL离线程序、课件EXE或产品演示程序的用户来说，这个功能可以减少反复重启电脑和手动清理缓存的麻烦，让打包测试流程更顺畅。&lt;/p&gt;
&lt;h2&gt;相关链接&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://html2exe.leapever.com&quot;&gt;HTML打包EXE工具官网&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description><pubDate>Wed, 24 Jun 2026 20:54:06 +0800</pubDate></item></channel></rss>