找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

2475

积分

0

好友

345

主题
发表于 4 小时前 | 查看: 1| 回复: 0

InvisibleJS 工具隐藏代码原理与运行结果示意图

近日,一个名为 InvisibleJS 的新开源工具引发了安全社区的关注。它能够利用不可见的零宽度 Unicode 字符来隐藏 JavaScript 代码,这不禁让人联想到它在恶意软件活动中被滥用的潜在风险。

InvisibleJS 由开发者 oscarmine 托管在 GitHub 上,其核心原理是利用隐写术将源代码嵌入到看似完全空白的文件中。具体过程是将 JavaScript 代码转换为二进制字符串,然后将“0”映射到零宽度空格 (U+200B),将“1”映射到零宽度非连接符 (U+200C)。运行时,一个微小的引导加载程序会解码并执行这些隐藏的有效载荷,使得代码在 VS Code 等编辑器中用肉眼无法察觉。

两种版本,适用于不同环境

该工具库提供了两个版本,以适应不同的运行环境:

  • 版本 1(经典版,带 eval):非常适合 CommonJS 和旧版 Node.js 设置,原生支持 requiremodule.exports
  • 版本 2(现代导入):以 ES 模块为目标,使用动态 await import() 来支持顶级 await 和导出。不过,它需要 .mjs 文件或在 package.json 中配置 “type”: “module”

通过 CLI 轻松隐藏代码

通过命令行界面 (CLI) 来隐藏代码非常简单,只需执行相应版本的命令即可:

版本 1:

node hideV1.mjs -i input.js -o hidden.js

版本 2:

node hideV2.mjs -i input.js -o hidden.js

执行 node hidden.js 命令后,尽管文件在编辑器中看起来是一片空白,但程序依然会正常产生预期的输出结果。

潜在的安全风险与关联

这项技术与 2018 年出现的“零宽度 JavaScript”概念验证技术一脉相承,而后者如今已被实际应用于网络钓鱼攻击中。攻击者会滥用类似的 Unicode 混淆技术,例如使用韩文字符来编码二进制数据,从而在脚本中隐藏恶意负载,并绕过带有反调试检查的安全扫描器。

InvisibleJS 隐藏代码示例与终端输出

InvisibleJS 的出现可能会放大此类威胁。它使得在 Node.js 环境或 Web 应用程序中部署隐蔽的恶意软件加载器成为可能,从而让威胁检测工作变得更加复杂。对于开发者和安全研究人员而言,理解这类隐写术的原理是防范相关安全风险的第一步。

如果你想深入探讨更多前沿技术或安全话题,欢迎来 云栈社区 与大家交流分享。




上一篇:Kumander Linux 2.1:基于Debian 12.10的Windows 7风格轻量级系统
下一篇:Rust标准库如何在GPU上运行?深入解析VectorWare的HostCall机制
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-1-24 17:53 , Processed in 0.269997 second(s), 38 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表