提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
原创|行业资讯|编辑:李显亮|2020-12-10 10:30:26.377|阅读 425 次
概述:JSDefender保护JavaScript代码免受黑客,逆向工程师和其他恶意行为者的侵害。本文来了解一下都有哪些保护方法。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
JavaScript无处不在。它是目前世界上最受欢迎的编程语言。正如GitHub所指出的那样,JavaScript的贡献者和存储库数量最多,轻松超过了其他替代方法,例如Python,PHP和Ruby。
JavaScript语言强大的同时也存在着风险,大量出色的开源代码为内部开发团队和恶意行为者创造了机会。JavaScript代码的普遍存在和易于开发也增加了安全漏洞的总体风险。鉴于JavaScript支持的应用程序和服务种类繁多,即使是很小的漏洞,也可能使企业遭受IP盗窃,收入损失或声誉受损的威胁。
JSDefender保护JavaScript代码免受黑客,逆向工程师和其他恶意行为者的侵害。在本文中来了解一下都有哪些保护方法。
此技术使用等效的表达式(但不太直接)替换了"true"和"false"Boolean文字值。
这个技术防止受保护的代码从当代码调用的方法在控制台上显示信息console的对象,例如console.log,console.info等重要:变换不会删除console从代码-相关方法调用,它仅仅抑制它们。
该技术使用条件表达式替换函数参数中的整数文字,这些条件表达式使用在JSDefender运行时中声明的特殊保护条件。假设您有以下函数调用:
displayNumbers(1, 10);
此保护技术将用类似于以下内容的受保护版本替代它:
displayNumbers(Ecrt.wr(123) ? 1 : 3, Ecrt.wr(14) ? 7: 10);
此保护技术将代码注入受保护的源,该代码将测试当前日期是否在特定间隔内。如果是这样,代码将正常运行;否则,它将在日期测试阶段之后立即中断。
这种保护技术debugger从代码中删除了JavaScript语句。
此保护技术将代码添加到JSDefender运行时,该运行时检测在浏览器中是否打开了DevTools面板。如果是这样,保护脚本将在断点处连续停止程序,并且不允许黑客对其进行调试。要继续运行程序,攻击者必须关闭DevTools面板。在预先配置的停止次数之后,运行系统将代码声明为无效。
这种保护技术在代码中收集相邻的表达式语句,并将它们连接到表达式序列中。
原始代码:
(function x() { y = 3; z = 4; return y*z; })()
混淆代码:
(function x() { return y=3, z=4, y*z; })()
该技术分析代码中的控制流语句(if语句和循环),并将其转换为有限状态机。这种混淆使代码的控制流更难遵循,尤其是在if嵌套语句和循环时。
这种保护技术在源代码中收集函数声明,然后将它们分散在它们的声明范围内。
常用的全局对象和功能,如window,navigator,Object,String,setTimeout,和其他许多人给出了逆向工程的代码有用的提示。全局对象隐藏保护技术对这些对象使用间接引用,并将它们隐藏在保护对象内。攻击者将看到无意义的损坏名称,而不是全局对象标识符。
此方法用产生相同值的表达式替换整数文字。由于替换使用十进制,八进制和十六进制文字的组合,因此原始值并不明显。您可以定义整数范围以应用此转换。另外,您可以定义一个基数(二进制,十进制,十六进制,八进制)以转换任何其他整数文字。
此技术重命名了本地声明的标识符(例如变量,函数和类)。您可以从多种名称处理方法中进行选择。JSDefender注意新创建的名称不会与现有名称冲突。同样,全局声明名称(在受保护代码外部声明的标识符)保持不变。
JSDefender将直接属性访问表达式更改为间接(索引或计算)属性表达式。让我们来看一个例子:
var x = { get: function() { return x.myProp; } }
保护后,此代码如下所示:
var x={ ["get"]: function(){ return x["myProp"]; } }
将对象文字表达式赋值转换为多个赋值语句,使它们更难阅读。
原始代码:
let x = { w: 1, z: { x: 3, y: 4}, q: "hello" }
稀疏属性后的代码:
let IcwE = {}; IcWE.w = 1; IcwE.z = {}; IcwE.z.x = 3; IcwE.z.y = 4; IcwE.q = "hello"; let x = IcwE
JSDefender从代码中提取字符串文字,并将其编码形式放入常量变量中。然后,它将原始字符串文字替换为对相应变量的引用。让我们来看一个例子:
var greet = "hello"; var planet = "world";
保护后,此代码类似于:
const kK1K=IcZK.xb("{v\x7F\x7F|"); const E7TK=IcZK.xb("d|a\x7Fw"); var greet=kK1K; var planet=E7TK;
该技术将函数声明,函数表达式,对象和类方法声明包装到一个保护函数中。该函数会观察其主体(因此是原始的类似函数的构造)是否被篡改。即使在功能主体中插入单个空格或换行符也将阻止其正常运行。
这样的保护可能具有高的运行时间成本。尽管对于仅在代码中运行一次的函数和IIFE(立即调用的函数表达式)而言,这是非常便宜的,但对于频繁调用的函数而言,这可能会很昂贵。
当您打开此保护时,JSDefender仅将其应用于被认为一次执行的IIFE。
这种技术将变量的声明和初始化分开。它将声明部分移到声明范围的末尾。让我们来看一个例子:
原始代码:
var a = 234, b = 123; displayNumbers(a, b); // ... Several hundred lines of code
应用变量分组后:
a = 234; b = 123; displayNumbers(a, b); // ... Several hundred lines var a, b;
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn
通过提供强大的3D CAD数据访问工具并适用于桌面、移动和Web的高级环境3D可视化发动机,HOOPS在提升造船设计和制造流程的效率方面发挥了重要作用。
HOOPS Luminate在汽车行业中的应用具有广泛的潜力和深远的影响。它通过提供高效的3D可视化、虚拟装配与拆解、性能分析、客户定制等功能,帮助汽车制造商在设计、生产和销售过程中提升效率、降低成本并提高产品质量。
在不断发展的软件开发世界中,使工具和框架与最新的平台版本保持同步至关重要,欢迎查阅~
全球航运业对国际贸易至关重要,全球 90% 以上的商品通过海运运输。准确监控和控制这些集装箱的移动对于维持高效的供应链至关重要。手动输入集装箱号码是这一程序的关键部分,它带来了相当大的挑战,例如人为错误和效率低下。
JSDefender保护JavaScript代码免受黑客、逆向工程师和其他恶意行为者的侵害。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@pclwef.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢