返回
JSimpo: Structural Deobfuscation of JavaScript Programs
DOI:10.1145/3714460.png)
摘要
En 中文
JavaScript (JS) 混淆在流行网站中现已普遍存在,并给恶意软件检测和代码审查带来了挑战。针对一个被混淆的JS程序,现有的去混淆技术旨在恢复原始JS程序。然而,这些技术忽视了结构化混淆(例如控制流平坦化),导致去混淆的成功率不理想。为解决这些挑战,本文提出了一种名为JSimpo的结构化去混淆方法,用于JS程序,采用了两种新颖的技术:切片符号执行和动态代码执行。我们实现了JSimpo方法,并在GitHub上排名前100的JS项目的2,000个JS程序上进行了评估。评估结果表明,JSimpo能够有效执行结构化去混淆,将混淆程序与其原始程序之间的平均结构相似度提升至78.41%(从39.33%),而当前最先进/实用的去混淆工具最高仅能达到62.64%。结果还表明,JSimpo对由各种混淆器混淆的程序具有泛化能力。此外,JSimpo通过通过所有混淆程序已通过的测试用例,保留了去混淆后程序的语义。
Keyword:
JavaScript obfuscation
structural deobfuscation
slice symbolic execution
dynamic code execution
program similarity

