CN117573142B - 基于模拟执行的java代码反混淆器 - Google Patents
基于模拟执行的java代码反混淆器 Download PDFInfo
- Publication number
- CN117573142B CN117573142B CN202410050617.8A CN202410050617A CN117573142B CN 117573142 B CN117573142 B CN 117573142B CN 202410050617 A CN202410050617 A CN 202410050617A CN 117573142 B CN117573142 B CN 117573142B
- Authority
- CN
- China
- Prior art keywords
- module
- execution
- confusion
- java
- codes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 53
- 238000004458 analytical method Methods 0.000 claims abstract description 58
- 238000000034 method Methods 0.000 claims abstract description 49
- 230000008569 process Effects 0.000 claims abstract description 19
- 238000012545 processing Methods 0.000 claims abstract description 17
- 230000006870 function Effects 0.000 claims description 20
- 230000006837 decompression Effects 0.000 claims description 9
- 238000013461 design Methods 0.000 claims description 6
- 230000005540 biological transmission Effects 0.000 claims description 4
- 238000004364 calculation method Methods 0.000 claims description 4
- 238000010845 search algorithm Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 abstract description 11
- 238000001514 detection method Methods 0.000 abstract description 3
- 238000005516 engineering process Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 8
- 230000006399 behavior Effects 0.000 description 7
- 230000007547 defect Effects 0.000 description 4
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000036632 reaction speed Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/53—Decompilation; Disassembly
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/31—Programming languages or programming paradigms
- G06F8/315—Object-oriented languages
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
本发明公开了基于模拟执行的JAVA代码反混淆器,涉及反混淆器技术领域,通过反编译模块将JAR文件反编译为JAVA字节码,通过模拟执行模块对JAVA字节码进行解密,进而进行指令执行,并将执行结果保存,分析模块分析模拟执行模块的执行结果,从而简化混淆的反编译代码,不仅提高了恶意软件的检测准确性,也有助于揭示隐藏在代码中的潜在威胁。提高安全分析效率:借助自动化的反混淆过程,显著减少人工分析的需求,从而提升安全专家在处理大量混淆代码时的工作效率。动态分析与高适应性:本发明不仅能处理静态的混淆模式,还能适应和解析动态生成的代码和复杂的执行流程,能够快速适应并提供有效的反混淆结果。
Description
技术领域
本发明涉及反混淆器技术领域,具体涉及基于模拟执行的JAVA代码反混淆器。
背景技术
在现代软件开发和网络安全领域,JAVA代码混淆是一种普遍采用的技术,旨在保护代码免受未授权的理解和修改,虽然代码混淆对保护知识产权至关重要,它同时为安全分析和合法代码审查带来了显著挑战,尤其是在恶意软件开发者利用混淆技术隐藏恶意代码和行为的情境中。
传统的反混淆工具由于依赖于人工识别特定模式,往往难以有效应对,存在以下缺陷:
1、许多现有的JAVA反混淆工具主要依赖静态分析技术,静态分析在处理动态生成的代码和复杂执行流程时效率不高,因为它无法模拟实际执行环境,从而无法准确识别和处理动态行为,这导致了在处理高级混淆技术,特别是涉及动态代码生成的场景时,这些工具的反应速度慢,准确性较低;
2、现有工具在处理复杂混淆代码时往往需要显著的人工干预,这主要是因为它们缺乏足够的智能化和自动化机制来适应不断变化和升级的混淆策略,这不仅增加了分析时间,也提高了对专业知识的依赖,从而降低了整体的工作效率;
3、随着混淆技术的快速发展,现有反混淆工具很难及时适应新出现的混淆策略,这主要是因为它们的设计和算法无法快速适应新型混淆技术的挑战,这使得这些工具在面对新型或复杂的混淆技术时,往往表现出较低的适应性和灵活性。
发明内容
本发明的目的是提供一种基于模拟执行的JAVA代码反混淆器,通过静态分析和动态分析相结合,通过自定义虚拟机,模拟程序代码的执行,达到反混淆的效果,以解决背景技术中不足。
为了实现上述目的,本发明提供如下技术方案:基于模拟执行的JAVA代码反混淆器,包括反编译模块、模拟执行模块、分析模块;
输入待反混淆的JAR文件,然后经由反编译模块将JAR文件反编译为JAVA字节码,通过模拟执行模块对JAVA字节码进行解密,进而进行指令执行,并将执行结果保存,分析模块分析模拟执行模块的执行结果,简化混淆的反编译代码输出反混淆文件。
在一个优选的实施方式中,所述反编译模块包括解压模块和反编译字节码模块,解压模通过标准的解压缩库实现,使用JAVA自带的java.util.zip包,打开JAR文件并提取其中的.class文件,反编译字节码模块通过JAVA JDK提供的JAVAP -c功能将class翻译成字节码。
在一个优选的实施方式中,所述模拟执行模块包括类加载模块和执行引擎;
类加载模块用于指令解析,负责解析JAVA字节码,对JAVA中的魔数、接口、方法、属性解析;
执行引擎是用于模拟执行,包括自实现的字节码解释器,对字节码解释和执行并统计执行结果。
在一个优选的实施方式中,所述模拟执行模块根据配置文件自行选择有参分析方式和无参分析方式,若为有参分析方式,需要自行填入参数的传参值,若为无参分析方式,模拟执行模块穷举所有分支,并统计执行结果,生成执行流程图。
在一个优选的实施方式中,所述模拟执行模块还包括启发式混淆点定位模块,用于对混淆点的定位,采用启发式搜索算法,设置实时反馈循环,通过启发式规则和词频统计加权的方法,对混淆点进行打分,筛选评分最高的几个混淆点或者混淆函数,对其进行模拟执行,获取执行结果,模拟执行模块设计上采用并行处理,同时模拟执行多个混淆点的代码,并行处理的过程中缓存计算结果。
在一个优选的实施方式中,所述分析模块用于解混淆,基于模拟执行模块的分析结果,来简化混淆的反编译代码,得到反混淆的代码,遍历执行流程图,获取执行结束寄存器的值,然后替换混淆代码后输出结果。
在上述技术方案中,本发明提供的技术效果和优点:
1、本发明通过反编译模块将JAR文件反编译为JAVA字节码,通过模拟执行模块对JAVA字节码进行解密,进而进行指令执行,并将执行结果保存,分析模块分析模拟执行模块的执行结果,从而简化混淆的反编译代码,通过模拟执行技术,能够有效地识别并解构复杂混淆的代码,特别是那些用于隐藏恶意行为的混淆代码,这样不仅提高了恶意软件的检测准确性,也有助于揭示隐藏在代码中的潜在威胁。提高安全分析效率:借助自动化的反混淆过程,显著减少人工分析的需求,从而提升安全专家在处理大量混淆代码时的工作效率。动态分析与高适应性:本发明不仅能处理静态的混淆模式,还能适应和解析动态生成的代码和复杂的执行流程,特别是对于新出现的混淆技术,能够快速适应并提供有效的反混淆结果。本发明的启发式混淆点定位模块,可以精准定位混淆点对其进行反混淆,可以克服以往需要人工定位混淆点耗时耗力的缺陷,实时反馈循环确保了本发明具有优良的自适应性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1为本发明的框架图;
图2为本发明的模拟执行模块的结构图;
图3为本发明的执行引擎执行流程图;
图4为本发明的启发式混淆点定位流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例:在现代软件开发和网络安全领域,JAVA代码混淆是一种普遍采用的技术,旨在保护代码免受未授权的理解和修改。虽然代码混淆对保护知识产权至关重要,它同时为安全分析和合法代码审查带来了显著挑战。尤其是在恶意软件开发者利用混淆技术隐藏恶意代码和行为的情境中,传统的反混淆工具由于依赖于人工识别特定模式,往往难以有效应对,导致分析效率低下,且准确率有限。
有效识别恶意混淆代码:随着恶意软件开发者采用越来越复杂的混淆方法,传统工具难以准确快速地识别隐藏在混淆代码中的恶意行为。
提升安全分析效率:在现有工具下,分析复杂混淆的JAVA代码常常耗时且效率低下,需要大量的人工干预和专业知识。
自动化处理高级混淆模式:现有工具在处理动态生成的代码和复杂执行流程时表现不佳,尤其是在遇到新型混淆技术时。
现有的JAVA反混淆工具,都依赖于特定的反混淆规则,规则之间耦合度低,Threadtear和JAVA Deobfuscator都是基于规则来实现的反混淆,对于特定混淆器效果良好,但不具备通用性,在Android平台的反混淆器,Simplify是第一款模拟执行代码的工具,但是由于设计问题,执行效率较低,以下是最新技术的简述:
Threadtear 是一个先进的JAVA反混淆工具,发布于2020年,设计用于简化JAVA代码的分析过程,尤其是针对那些经过复杂混淆处理的代码。它不仅能够处理常见的混淆技术,还能有效应对市场上一些高级的商业化混淆器,例如ZKM(Zelix KlassMaster)或Stringer。此工具的核心目标是减轻开发人员和安全分析师在处理混淆代码时的负担。可以自定义反混淆规则或者使用预设的规则进行反混淆。
JAVA Deobfuscator 是一款开源工具,发布于2020年,旨在对大多数商业可用的JAVA 混淆器进行反混淆。该工具通过静态分析,对混淆的 JAVA 字节码应用一系列转换来有效地逆转混淆过程。它支持多种流行的混淆器,如Zelix Klassmaster、Stringer、Allatori、DashO、DexGuard 和ClassGuard。
Simplify是一个用于 Android反混淆的工具,发布于2015年,对安卓代码就有良好的反混淆效果,于2020年发布最终版,Simplify通过模拟执行 Android的smail字节码,获取混淆函数的执行结果达到反混淆效果。
请参阅图1所示,本实施例所述基于模拟执行的JAVA代码反混淆器,包括反编译模块、模拟执行模块、分析模块;
输入待反混淆的JAR文件,然后经由反编译模块将JAR文件反编译为JAVA字节码,通过模拟执行模块对JAVA字节码进行解密,进而进行指令执行,并将执行结果保存,分析模块分析模拟执行模块的执行结果,从而简化混淆的反编译代码,得到容易理解的代码,输出反混淆文件;
本申请通过反编译模块将JAR文件反编译为JAVA字节码,通过模拟执行模块对JAVA字节码进行解密,进而进行指令执行,并将执行结果保存,分析模块分析模拟执行模块的执行结果,从而简化混淆的反编译代码,通过模拟执行技术,能够有效地识别并解构复杂混淆的代码,特别是那些用于隐藏恶意行为的混淆代码,这样不仅提高了恶意软件的检测准确性,也有助于揭示隐藏在代码中的潜在威胁。提高安全分析效率:借助自动化的反混淆过程,显著减少人工分析的需求,从而提升安全专家在处理大量混淆代码时的工作效率。动态分析与高适应性:本工具不仅能处理静态的混淆模式,还能适应和解析动态生成的代码和复杂的执行流程,特别是对于新出现的混淆技术,能够快速适应并提供有效的反混淆结果。
本申请提供了一种新颖的方式来处理动态生成的代码和复杂的执行流程。通过自定义虚拟机的方式,获取函数方法的执行路径,解决了传统反混淆工具只能处理静态代码的缺陷,本发明无需依赖特定的反混淆规则,反混淆基本无需人工干预,自动化程度较高,通过模拟执行的方式,也可有效应对持续变化的混淆规则。
反编译模块由解压模块和反编译字节码模块组成,解压模块用于打开JAR文件并提取其中的.class文件。通过标准的解压缩库实现,使用JAVA自带的java.util.zip包。反编译字节码模块负责把class翻译成字节码,使用的是JAVA JDK提供的JAVAP -c功能。
模拟执行模块是模拟JVM的实现的,是专为模拟执行设计的一款虚拟机,请参阅图2所示,模拟执行模块主要由两个部分构成,分别是类加载模块和执行引擎;
类加载模块是用于指令解析的关键模块,负责解析JAVA字节码,可以对JAVA中的魔数,接口,方法,属性等完成解析。执行引擎是用于模拟执行的关键模块,主要包括自实现的字节码解释器,对字节码解释并执行,并统计执行结果。因为统计的是函数的执行结果,函数可以分为有参和无参函数,执行引擎可以根据配置文件自行选择有参分析方式和无参分析方式,如果是有参分析的方式,需要自行填入参数的传参值,传参值会影响可能的执行分支。如果选择的是无参分析的方式,执行引擎会穷举所有可能的分支,并统计执行结果,生成执行流程图。执行流程如图3所示,执行引擎可以实时监控代码的执行情况,识别并记录关键的运行时数据,但模拟执行区别于真实执行,在执行上具有更高的效率,同时难以被程序所反制。
区别传统反混淆工具适应性差,依赖于人工操作,无法自动化定位混淆代码,从而导致反混淆效率不高,模拟执行模块中附加了一个子模块(启发式混淆点定位模块),用于快速定位可能的混淆代码,并通过多种规则,对可能的混淆点进行打分,筛选评分最高的几个混淆点或者混淆函数,对其进行模拟执行,获取执行结果。从而避免处理过多的无效分支,极大的提高反混淆的效率。启发式混淆点定位流程如图4所示,具体评估方法如下:
(1)根据启发式规则,对常见的混淆模式进行制定规则,首先是根据常见的商用的混淆器采用的混淆模式,进行提取特征,主要表现为不寻常的循环,异常的分支结构,过度的函数调用,一旦发现类似的特征,就可以进行加权增加权重值。
(2)一般的混淆代码会使用不常见的字符来混淆视听,混淆的应用会使用不常见字符来干扰分析人员的分析,这些字符甚至不能通过键盘输入,可以认为是混淆点所在,所以选取未混淆应用,对代码中出现的字符词频进行统计,与所有的可见字符进行对比,剔除掉在未混淆应用中词频较高的字符,将词频极低或者从未出现的字符提取出来,根据词频设定权重值,然后与(1)类似,进行加权。
(3)启发式混淆点定位模块设置了一个实时反馈循环,根据(1),(2)的规则,对识别为可能混淆的代码段进行验证,判断是否为真的混淆点。然后根据验证结果调整和优化启发式规则,提高后续搜索的准确性。
传统的自动化去混淆工具因为需要在运行的过程中枚举所有的分支,多线程容易导致执行重复分支,所以通常采用单线程的方式的执行,而本申请的模拟执行模块通过启发式搜索定位混淆点后,无需依赖运行时的信息去定位混淆点,因此设计上采用并行处理,可以同时模拟执行多个混淆点的代码,并行处理的过程中缓存计算结果,避免重复计算,因为模拟执行模块不同混淆点之间的低耦合,所以并行处理可以达到很好的反混淆效果。
分析模块是解混淆的主要模块,主要是基于模拟执行模块的分析结果,来简化混淆的反编译代码,得到反混淆的代码。具体实现为遍历执行流程图,获取执行结束寄存器的值,然后替换混淆代码。
本申请面对传统混淆方法只能基于特定的混淆器进行反混淆,本发明基于模拟执行的方法,扩大了反混淆的范围,可对大部分的混淆器进行反混淆,而不需要编写复杂的反混淆规则,可极大的提高安全分析人员的分析效率。
本申请通过自实现的虚拟机进行模拟执行,可有效对无参函数和有参函数进行分析,通过枚举可覆盖所有执行路径,反混淆效果比较好。
本申请对混淆点的定位,采用启发式搜索算法,通过启发式规则和词频统计加权的方法,可有效定位混淆点,简化分析流程,同时代码间的低耦合可为并行处理创建有利的基础。
本申请实时反馈循环可以让启发式规则在反混淆的过程中不断提升规则的准确性,从而提高整个工具的反混淆效果。
现有工具分析复杂混淆的JAVA代码采取单线程操作,常常耗时且效率低下。本申请采取的并行处理模式可在大型应用中显著提高分析效率。
1)静态分析和动态分析:
静态分析是一种在不执行程序的情况下,对程序代码进行分析的方法。通过对查程序的源代码、字节码或者其他形式的代码进行分析。
动态分析是在程序运行时对其进行分析的过程,旨在检测运行时的行为和输出。它涉及到执行程序并在实时监控其状态,以侦测运行时错误、性能问题或其他运行时特性。
2)JAVA字节码
JAVA字节码是JAVA编程语言的一种中间表示形式,它位于JAVA源代码和机器代码之间。编写JAVA程序并使用JAVA编译器(如JAVAC)将其编译时,编译器会将源代码转换成JAVA字节码。这个过程的关键在于,字节码不是为任何特定的处理器设计的机器代码,而是为JAVA虚拟机(JVM)设计的指令集。JAVA 字节码是JAVA虚拟机执行的一种指令格式。大多数操作码都是一个字节长,而有些操作需要参数,导致了有一些多字节的操作码。而且并不是所有可能的256个操作码都被使用;其中有51个操作码被保留做将来使用。除此之外,原始JAVA平台开发商,昇阳微系统,额外保留了3个代码永久不使用。
3)JAVA虚拟机
JAVA虚拟机(英语:JAVA Virtual Machine,缩写:JVM),一种能够执行JAVA字节码的虚拟机,以堆栈结构机器来实现。最早由Sun微系统所研发并实现第一个实现版本,是JAVA平台的一部分,能够执行以JAVA语言写作的软件程序。
JAVA虚拟机有自己完善的硬件架构,如处理器、堆栈、寄存器等,还具有相应的指令系统。JVM屏蔽了与具体操作系统平台相关的信息,使得JAVA程序只需生成在JAVA虚拟机上运行的目标代码(字节码),就可以在多种平台上不加修改地运行。通过对中央处理器(CPU)所执行的软件实现,实现能执行编译过的JAVA程序码(Applet与应用程序)。
作为一种编程语言的虚拟机,实际上不只是专用于JAVA语言,只要生成的编译文件符合JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。此外,除了甲骨文公司提供的JAVA虚拟机,也有其他开源或闭源的实现。
4)魔数
魔数是文件开头的一小段特定的字节序列,用于标识文件格式。这些字节通常是固定的,可以被操作系统或应用程序用来确定文件的类型。
5)接口、方法、属性
在Java中,接口是一种引用类型,它是一种完全抽象的类,用于描述类具有的方法,但不提供这些方法的具体实现。接口是一种规范或协议,它定义了类可以实现的方法。方法是类或接口中定义的一段具有特定功能的代码块。它在被调用时执行一些操作,并可以返回一个值。方法可以接受传入的参数,这些参数可以影响方法的操作。属性通常指的是类中的成员变量。这些变量代表对象的状态。
应理解,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况,其中A,B可以是单数或者复数。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系,但也可能表示的是一种“和/或”的关系,具体可参考前后文进行理解。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。
Claims (2)
1.基于模拟执行的JAVA代码反混淆器,其特征在于:包括反编译模块、模拟执行模块、分析模块;
输入待反混淆的JAR文件,然后经由反编译模块将JAR文件反编译为JAVA字节码,通过模拟执行模块对JAVA字节码进行解密,进而进行指令执行,并将执行结果保存,分析模块分析模拟执行模块的执行结果,简化混淆的反编译代码输出反混淆文件;
所述模拟执行模块包括类加载模块和执行引擎;
类加载模块用于指令解析,负责解析JAVA字节码,对JAVA中的魔数、接口、方法、属性解析;
执行引擎是用于模拟执行,包括自实现的字节码解释器,对字节码解释和执行并统计执行结果;
所述模拟执行模块根据配置文件自行选择有参分析方式和无参分析方式,若为有参分析方式,需要自行填入参数的传参值,若为无参分析方式,模拟执行模块穷举所有分支,并统计执行结果,生成执行流程图;
所述模拟执行模块还包括启发式混淆点定位模块,用于对混淆点的定位,采用启发式搜索算法,设置实时反馈循环,通过启发式规则和词频统计加权的方法,对混淆点进行打分,筛选评分最高的几个混淆点或者混淆函数,对其进行模拟执行,获取执行结果,模拟执行模块设计上采用并行处理,同时模拟执行多个混淆点的代码,并行处理的过程中缓存计算结果;
所述分析模块用于解混淆,基于模拟执行模块的分析结果,来简化混淆的反编译代码,得到反混淆的代码,遍历执行流程图,获取执行结束寄存器的值,然后替换混淆代码后输出结果。
2.根据权利要求1所述的基于模拟执行的JAVA代码反混淆器,其特征在于:所述反编译模块包括解压模块和反编译字节码模块,解压模通过标准的解压缩库实现,使用JAVA自带的java.util.zip包,打开JAR文件并提取其中的.class文件,反编译字节码模块通过JAVAJDK提供的JAVAP -c功能将class翻译成字节码。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410050617.8A CN117573142B (zh) | 2024-01-15 | 2024-01-15 | 基于模拟执行的java代码反混淆器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410050617.8A CN117573142B (zh) | 2024-01-15 | 2024-01-15 | 基于模拟执行的java代码反混淆器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117573142A CN117573142A (zh) | 2024-02-20 |
CN117573142B true CN117573142B (zh) | 2024-04-23 |
Family
ID=89884776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410050617.8A Active CN117573142B (zh) | 2024-01-15 | 2024-01-15 | 基于模拟执行的java代码反混淆器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117573142B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891502B (zh) * | 2024-03-14 | 2024-05-24 | 北京长亭科技有限公司 | 一种jsp文件解混淆方法、系统、设备及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360412A (zh) * | 2011-09-26 | 2012-02-22 | 飞天诚信科技股份有限公司 | Java源代码的保护方法和系统 |
CN104135531A (zh) * | 2014-08-07 | 2014-11-05 | 武汉益模软件科技有限公司 | 一种Web软件的升级方法及装置 |
KR101861341B1 (ko) * | 2017-05-30 | 2018-05-28 | 올댓소프트 코. | 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법 |
CN108153518A (zh) * | 2017-12-25 | 2018-06-12 | 厦门市美亚柏科信息股份有限公司 | 一种java程序反混淆方法及终端 |
CN108664773A (zh) * | 2018-04-26 | 2018-10-16 | 北京三快在线科技有限公司 | Java源代码的保护方法及装置 |
CN114817918A (zh) * | 2022-04-18 | 2022-07-29 | 厦门蝉羽网络科技有限公司 | 一种反混淆方法、系统和应用 |
CN116305011A (zh) * | 2023-03-20 | 2023-06-23 | 上海哔哩哔哩科技有限公司 | 应用程序的保护方法和安装方法 |
-
2024
- 2024-01-15 CN CN202410050617.8A patent/CN117573142B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102360412A (zh) * | 2011-09-26 | 2012-02-22 | 飞天诚信科技股份有限公司 | Java源代码的保护方法和系统 |
CN104135531A (zh) * | 2014-08-07 | 2014-11-05 | 武汉益模软件科技有限公司 | 一种Web软件的升级方法及装置 |
KR101861341B1 (ko) * | 2017-05-30 | 2018-05-28 | 올댓소프트 코. | 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법 |
CN108153518A (zh) * | 2017-12-25 | 2018-06-12 | 厦门市美亚柏科信息股份有限公司 | 一种java程序反混淆方法及终端 |
CN108664773A (zh) * | 2018-04-26 | 2018-10-16 | 北京三快在线科技有限公司 | Java源代码的保护方法及装置 |
CN114817918A (zh) * | 2022-04-18 | 2022-07-29 | 厦门蝉羽网络科技有限公司 | 一种反混淆方法、系统和应用 |
CN116305011A (zh) * | 2023-03-20 | 2023-06-23 | 上海哔哩哔哩科技有限公司 | 应用程序的保护方法和安装方法 |
Non-Patent Citations (1)
Title |
---|
面向Android native层代码的反混淆技术研究;郭润生;中国优秀硕士学位论文全文数据库信息科技辑;20221115;第I139-75页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117573142A (zh) | 2024-02-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Russell et al. | Automated vulnerability detection in source code using deep representation learning | |
Hu et al. | Binary code clone detection across architectures and compiling configurations | |
CN112800423B (zh) | 一种二进制代码授权漏洞检测方法 | |
CN117573142B (zh) | 基于模拟执行的java代码反混淆器 | |
CN105550594B (zh) | 安卓应用文件的安全性检测方法 | |
CN106096338B (zh) | 一种具有数据流混淆的虚拟化软件保护方法 | |
CN101714118B (zh) | 一种二进制代码缓冲区溢出漏洞的检测器及其检测方法 | |
US7409718B1 (en) | Method of decrypting and analyzing encrypted malicious scripts | |
CN108469984B (zh) | 一种基于虚拟机自省函数级虚拟机内核动态检测系统与方法 | |
CN101976319B (zh) | 基于行为特征的BIOS固件Rootkit检测方法 | |
US7146605B2 (en) | Automatic abstraction of software source | |
JP2022505340A (ja) | データ引数を動的に識別し、ソースコードを計装するためのシステムと方法 | |
CN109145534B (zh) | 针对软件虚拟机保护的反混淆系统及方法 | |
CN112131120B (zh) | 一种源代码缺陷检测方法及装置 | |
CN112527674B (zh) | Ai框架的安全评测方法、装置、设备及存储介质 | |
Chen et al. | Cati: Context-assisted type inference from stripped binaries | |
CN111177731A (zh) | 一种基于人工神经网络的软件源代码漏洞检测方法 | |
CN113836023B (zh) | 一种基于体系结构交叉检查的编译器安全性测试方法 | |
CN111309589A (zh) | 一种基于代码动态分析的代码安全扫描系统及方法 | |
CN111291377A (zh) | 一种应用漏洞的检测方法及系统 | |
CN116305131B (zh) | 脚本静态去混淆方法及系统 | |
Chen et al. | Test generation for embedded executables via concolic execution in a real environment | |
CN115039083A (zh) | 逻辑连接程序执行时生成的异步算法合法性验证使能方法 | |
CN115878498A (zh) | 一种基于机器学习预测程序行为的关键字节提取方法 | |
KR102341137B1 (ko) | 중간언어 기반 코드 변환 방법 및 이를 포함하는 전자 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |