CN105808981B - 反污点分析软件保护方法 - Google Patents
反污点分析软件保护方法 Download PDFInfo
- Publication number
- CN105808981B CN105808981B CN201610135566.4A CN201610135566A CN105808981B CN 105808981 B CN105808981 B CN 105808981B CN 201610135566 A CN201610135566 A CN 201610135566A CN 105808981 B CN105808981 B CN 105808981B
- Authority
- CN
- China
- Prior art keywords
- stain
- data
- transformation
- register
- program
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 28
- 230000009466 transformation Effects 0.000 claims abstract description 25
- 238000004458 analytical method Methods 0.000 abstract description 19
- 230000000644 propagated effect Effects 0.000 abstract description 4
- 230000000903 blocking effect Effects 0.000 abstract description 2
- 230000001681 protective effect Effects 0.000 abstract description 2
- 230000000694 effects Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Classifications
-
- 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/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种反污点分析软件保护方法,属于计算机软件安全领域,所述方法包括确定待保护程序中被污点标记的数据,即污点数据,确定针对污点数据进行反污点变换的最佳位置,对最佳位置上的污点数据进行反污点变换,将最佳位置上的污点数据变换成没有被污点标记的数据。通过阻断污点数据传播,将被标记的数据通过反污点变换加工成没有被标记的数据,使得污点无法传播下去,从而增强逆向分析难度,以达到保护作用。
Description
技术领域
本发明属于计算机软件安全领域,涉及Windows系统中反污点分析软件保护方法。
背景技术
现在的软件逆向领域有一种动态分析方法-污点分析方法。作为污点分析技术,可以被应用于软件测试和软件保护中,但现在污点分析也被作为一种动态分析的方法应用于软件逆向中。它可通过标记程序中的敏感数据,在动态运行过程中监控数据流动和变化,以达到获取程序数据流,进一步获取程序核心算法和核心数据的作用。
如下为一个简单的密码验证的伪代码程序:
Read(X);
Key=X+9;
If(key==10)
Return right;
Else
Return false;
如上程序X为输入的密码,若密码为1则验证通过,若不为1则验证失败。污点分析可以通过标记输入X(被标记的数据称为污点数据),在其执行期间由于X到Key有赋值过程,则Key也被标记(此过程称为污点传播),然后返回验证值,X和Key均被标记。然后通过分析被标记的数据就可以找到至关重要的Key。此案例较为简单,但足以说明污点分析在逆向分析中的作用。其通过标记输入数据,通过污点传播最终找到更为重要的敏感数据,为程序逆向提供关键信息。对于以上污点分析,目前尚没有有效的解决方法,这样会使得软件得不到有效地保护,进而损害人们的财产安全。
发明内容
针对上述现有技术中存在的问题,本发明的目的在于,提供一种反污点分析软件保护方法。
为了实现上述目的,本发明采用如下技术方案:
反污点分析软件保护方法,包括:
选取待保护程序;
确定所述待保护程序中被污点标记的数据,即污点数据;
确定针对所述污点数据进行反污点变换的最佳位置;
对所述最佳位置上的污点数据进行反污点变换,得到反污点变换后的程序。
具体地,所述的被污点标记的数据为所述待保护程序的输入数据。
具体地,所述的针对所述污点数据进行反污点变换的最佳位置为数据流的主干。
具体地,所述的对所述最佳位置上的污点数据进行反污点变换,得到反污点变换后的程序的具体实现方式包括:
将污点数据转移到没有被污点标记的寄存器中,被污点标记的寄存器不断执行-1操作,没有被污点标记的寄存器不断执行+1操作,当被污点标记的寄存器减少到0,没有被污点标记的寄存器增加到被污点标记的数据的值;将没有被污点标记的寄存器赋值给被污点标记的寄存器,则被污点标记的寄存器中的数据转换成没有被污点标记的数据。
与现有技术相比,本发明具有以下技术效果:
本发明提出的反污点分析保护方法,通过阻断污点数据传播,将被标记的数据通过反污点变换加工成没有被标记的数据,使得污点无法传播下去,从而增强逆向分析难度,以达到保护作用。
附图说明
图1为本发明的反污点分析软件保护方法的实施过程;
图2为反污点分析前后被污点标记的数据比较图,其中(a)图为反污点分析前被污点标记的数据,(b)图为反污点分析后被污点标记的数据。
具体实施方法
为更加清楚的阐述本发明的方法及其优点,下面将结合附图和实施例对本发明的方案做进一步地描述。
实施例
本发明的反污点分析软件保护方法,参见图1,包括以下步骤:
步骤一,选取待保护程序;
步骤二,确定待保护程序中被污点标记的数据,即污点数据;
步骤三,确定针对污点数据进行反污点变换的最佳位置;
步骤四,对最佳位置上的污点数据进行反污点变换,得到反污点变换后的程序。
本发明的核心思想是:将污点数据即被直接标记的数据通过反污点变换变换成没有被标记的数据,阻断污点传播的过程,使得污点无法传播下去或增加污点传播需要的技术成本,从而使得反污点分析难度增大,增强反污点分析保护强度,使得软件更难被逆向分析。
为了便于对本发明的技术方案进行理解,此处提供了一个代码示例,由于一般情况较难拿到原代码,所以本实施例的方法是在其汇编代码上进行的,同时附有代码的解释说明。
如下文是背景技术中的伪代码的汇编代码:
现选用反污点分析方法对其进行保护:
步骤一,上述程序为选取的待保护程序。
步骤二,一般情况下,将程序输入数据进行标记,本实施例中被污点标记的数据为寄存器ax中的数据,其为污点数据,寄存器ax也被称为被污点标记的寄存器,参见图2中,方框中的数据为被污点标记的数据。
步骤三,由于待保护程序在对数据流的加工过程中,数据流有可能会产生分支,如果对数据流的分支上的污点数据进行反污点变换会导致需要变换的数据过多,从而导致保护成本变高或者反污点变换不够全面导致反污点力度减小,所以针对数据流主干上的污点数据进行反污点变换,即针对污点数据进行反污点变换的最佳位置为数据流的主干;所述的数据流指的是,数据由生命周期开始,随着待保护程序中的函数调用变换,到其生命周期的结束,所述函数调用中数据的流向。
步骤四,对数据流的主干上的污点数据进行反污点变换,此步骤为本发明的反污点分析软件保护方法的核心步骤,目的是将被污点标记的数据变成没有被污点标记的数据;本实施例采用循环转移的方法,将寄存器ax中的数据转移到没有被污点标记的寄存器bx中,具体的:寄存器ax不断执行-1操作,寄存器bx不断执行+1操作,当寄存器ax减少到0,寄存器bx随之增加到输入值,输入值为被污点标记的数据的值,由于寄存器ax到寄存器bx之间并没有直接或间接的赋值操作,则寄存器bx不会被标记;再将寄存器bx赋值给寄存器ax,此时寄存器ax中的数据的污点消除成为一个没有被污点标记的数据,由此可以阻断污点传播。
保护后的程序代码如下:
参见图2,保护前后污点数据的数量明显下降,更关键的是add ax,9没有被标记,即Key=X+9没有被标记,从而增加了逆向分析者找到核心数据的难度,提高了逆向分析的难度。
Claims (3)
1.反污点分析软件保护方法,其特征在于,包括:
选取待保护程序;
确定所述待保护程序中被污点标记的数据,即污点数据;
确定针对所述污点数据进行反污点变换的最佳位置;
对所述最佳位置上的污点数据进行反污点变换,得到反污点变换后的程序;
所述的对所述最佳位置上的污点数据进行反污点变换,得到反污点变换后的程序的具体实现方式包括:
被污点标记的寄存器不断执行-1操作,没有被污点标记的寄存器不断执行+1操作,当被污点标记的寄存器减少到0,没有被污点标记的寄存器增加到被污点标记的数据的值;将没有被污点标记的寄存器赋值给被污点标记的寄存器,则被污点标记的寄存器中的数据转换成没有被污点标记的数据。
2.如权利要求1所述的反污点分析软件保护方法,其特征在于,所述的被污点标记的数据为所述待保护程序的输入数据。
3.如权利要求1所述的反污点分析软件保护方法,其特征在于,所述的针对所述污点数据进行反污点变换的最佳位置为数据流的主干。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610135566.4A CN105808981B (zh) | 2016-03-10 | 2016-03-10 | 反污点分析软件保护方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610135566.4A CN105808981B (zh) | 2016-03-10 | 2016-03-10 | 反污点分析软件保护方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105808981A CN105808981A (zh) | 2016-07-27 |
CN105808981B true CN105808981B (zh) | 2018-06-19 |
Family
ID=56467945
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610135566.4A Expired - Fee Related CN105808981B (zh) | 2016-03-10 | 2016-03-10 | 反污点分析软件保护方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105808981B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104933359A (zh) * | 2015-05-19 | 2015-09-23 | 西北大学 | 一种恶意软件的多执行路径构造方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
BR112015004035A2 (pt) * | 2012-08-29 | 2017-07-04 | Hewlett Packard Development Co | sistema de computação, meio de armazenagem não transitório lido por máquina armazenando instruções e método |
-
2016
- 2016-03-10 CN CN201610135566.4A patent/CN105808981B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104933359A (zh) * | 2015-05-19 | 2015-09-23 | 西北大学 | 一种恶意软件的多执行路径构造方法 |
Non-Patent Citations (1)
Title |
---|
Anti-taint-analysis:Practical evasion techniques against information flow based malware defense;Cavallaro L等;《New York: Secure Systems Lab at Stony Brook University》;20071231;第1-2节 * |
Also Published As
Publication number | Publication date |
---|---|
CN105808981A (zh) | 2016-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Tao et al. | MalPat: Mining patterns of malicious and benign Android apps via permission-related APIs | |
Lin et al. | Identifying android malicious repackaged applications by thread-grained system call sequences | |
KR101083311B1 (ko) | 악성 스크립트 분석 시스템 및 그를 이용한 악성 스크립트 분석 방법 | |
US20180191761A1 (en) | Method and apparatus for detecting cyberthreats through correlation analysis | |
US8505099B2 (en) | Machine-implemented method and system for determining whether a to-be-analyzed software is a known malware or a variant of the known malware | |
CN102592080B (zh) | flash恶意文件检测方法及装置 | |
CN105787305A (zh) | 一种抵抗符号执行和污点分析的软件保护方法 | |
CN103995782A (zh) | 一种基于污点不变集的污点分析方法 | |
WO2007025279A3 (en) | Apparatus and method for analyzing and supplementing a program to provide security | |
CN106548046B (zh) | 一种保护代码的装置和方法 | |
CN101159732A (zh) | 基于数据流分析的恶意攻击检测方法 | |
WO2004097633A3 (en) | Method and apparatus for recovering data values in dynamic runtime systems | |
CN106845220B (zh) | 一种Android恶意软件检测系统及方法 | |
CN103903043B (zh) | 一种智能卡三位一体抗侧信道攻击防护方法和系统 | |
KR20200084392A (ko) | 기계학습을 이용한 행위 분석 기반의 웹 공격 분류 및 탐지 | |
CN104764992A (zh) | 一种基于旁路分析的硬件木马检测方法 | |
CN109241737B (zh) | 一种面向多种补丁模式的差异分支识别方法及系统 | |
Kim et al. | Avengers, Assemble! survey of WebAssembly security solutions | |
CN112765578A (zh) | 一种基于浏览器客户端的安全隐私计算的实现方法 | |
CN106845235B (zh) | 一种基于机器学习方法的安卓平台回调函数检测方法 | |
CN106156615B (zh) | 基于类可分性判距的旁路区分器方法及系统 | |
CN105808981B (zh) | 反污点分析软件保护方法 | |
CN105653908B (zh) | 一种隐式反调试保护方法 | |
CN112905982B (zh) | 一种基于互联网的电商平台入侵检测方法及监控系统 | |
Hamdioui et al. | Hacking and protecting IC hardware |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20180619 Termination date: 20200310 |