CN107085677A - 一种Flash中防止代码被破解的方法及系统 - Google Patents
一种Flash中防止代码被破解的方法及系统 Download PDFInfo
- Publication number
- CN107085677A CN107085677A CN201710198165.8A CN201710198165A CN107085677A CN 107085677 A CN107085677 A CN 107085677A CN 201710198165 A CN201710198165 A CN 201710198165A CN 107085677 A CN107085677 A CN 107085677A
- Authority
- CN
- China
- Prior art keywords
- branch
- code
- variable
- execution
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000004048 modification Effects 0.000 claims description 7
- 230000009466 transformation Effects 0.000 claims description 4
- 238000000844 transformation Methods 0.000 claims description 4
- 230000003247 decreasing effect Effects 0.000 claims description 3
- 238000013515 script Methods 0.000 description 5
- 238000012986 modification Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 1
- 238000005336 cracking Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000035939 shock Effects 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
-
- 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/311—Functional or applicative languages; Rewrite languages
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种Flash中防止代码被破解的方法,涉及直播视频播放技术领域,包括在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,其中仅有一个分支的分支比较变量与分支判断变量相同;将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。本发明可有效提高代码被黑客逆向破解的门槛,防止代码被破解。本发明还公开了一种Flash中防止代码被破解的系统。
Description
技术领域
本发明涉及直播视频播放技术领域,具体涉及一种Flash中防止代码被破解的方法及系统。
背景技术
目前,Flash被广泛的用于网页设计和网页动画制作及网页视频播放等。大多数的视频网站包括直播网站都采用Flash做为其视频播放器,并且大多数的网页游戏也会使用Flash来开发。而SWF文件(SWF,全称shock wave flash,是Macromedia公司的动画设计软件Flash的专用格式,因此SWF文件通常也被称为Flash文件)其代码是使用ActionScript脚本语言来进行编写。ActionScript脚本语言很容易被反编译,并且反编译后代码和原始的代码差不多,从而非常容易弄清楚其中的实现逻辑。因此,需要对ActionScript的代码采取保护措施,以提高被黑客逆向破解的门槛或者时间。
现在常用的做法是对ActionScript代码中所使用的所有变量名和/或函数名进行混淆或者加密,然而仅仅加密函数名、变量名只是增加阅读代码的时间,其源代码的实现逻辑和执行流程并没有发生变化,并未实质提高代码被黑客逆向破解的门槛,采用修改变量名和/或函数名的做法并未起到很好的防止代码被破解的效果。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种Flash中防止代码被破解的方法及系统,有效提高代码被黑客逆向破解的门槛,防止代码被破解。
为达到以上目的,本发明采取的技术方案是:一种Flash中防止代码被破解的方法:在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,其中仅有一个分支的分支比较变量与分支判断变量相同;将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。
在上述技术方案的基础上,对分支判断变量进行MD5计算得出分支判断变量的MD5值,并将分支判断变量的MD5值作为当前的分支判断变量;对各代码分支的分支比较变量分别进行MD5计算得出各分支比较变量的MD5值,并将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量。
在上述技术方案的基础上,所述无用代码为对程序原本的执行代码进行修改而生成的代码。
在上述技术方案的基础上,对程序原本的执行代码进行修改包括:减少或增加程序原本的执行代码的循环执行次数、修改程序原本的执行代码中使用的KEY值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
在上述技术方案的基础上,所述分支判断变量为数值型变量。
本发明还公开了一种Flash中防止代码被破解的系统,其特征在于,包括:
分支创建模块,用于在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,且其中仅有一分支的分支比较变量与分支判断变量相同;
代码转移模块,用于将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;
代码添加模块,用于在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。
在上述技术方案的基础上,所述Flash中防止代码被破解的系统还包括变量修改模块,所述变量修改模块用于对分支判断变量进行MD5计算得出分支判断变量的MD5值,并将分支判断变量的MD5值作为当前的分支判断变量;对各代码分支的分支比较变量分别进行MD5计算得出各分支比较变量的MD5值,并将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量。
在上述技术方案的基础上,所述无用代码为对程序原本的执行代码进行修改而生成的代码。
在上述技术方案的基础上,所述Flash中防止代码被破解的系统还包括无用代码生成模块,所述无用代码生成模块用于对程序原本的执行代码进行修改以生成无用代码。
在上述技术方案的基础上,对程序原本的执行代码进行修改包括:减少或增加程序原本的执行代码的循环执行次数、修改程序原本的执行代码中使用的KEY值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
与现有技术相比,本发明的优点在于:
(1)本发明通过在程序中添加多条代码分支,将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中,在其他代码分支中添加无用代码,通过分支判断变量与分支比较变量的设置使得在执行程序时仅执行分支比较变量与分支判断变量一致的代码分支,同时采用多条代码分支及无用代码将真正执行的代码隐藏到大量的代码中,又有效提高代码被黑客逆向破解的门槛,防止代码被破解。
(2)本发明还将分支判断变量的MD5值作为当前的分支判断变量及将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量,通常的分支都是判断一个变量或者一段字符串是否等于某个值,从而代码可读性比较高。而本发明则使用将分支判断变量及各分支比较变量的MD5值作为分支的判断条件,从而使得分支代码比较复杂也不易于读懂,增加代码被黑客破解的难度。
(3)本发明还将对程序原本的执行代码进行修改而生成的代码作为无用代码,可以使黑客逆向破解时更为困惑,让其以为每条分支代码都是有可能会被执行,且是在不同的条件下去执行,使得黑客逆向破解时需要去分析逆向所有的分支代码,从而提高黑客对各代码分支的破解难度。
附图说明
图1为本发明实施例中Flash中防止代码被破解的方法的流程示意图;
图2为本发明实施例中Flash中防止代码被破解的系统的结构示意图。
具体实施方式
以下结合附图及实施例对本发明作进一步详细说明。
参见图1所示,本发明实施例提供一种Flash中防止代码被破解的方法,包括以下步骤:
S1,在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,其中仅有一个分支的分支比较变量与分支判断变量相同;
具体来说,与上述内容对应的实现代码可如下:
先对分支判断变量进行一些逻辑运算,得到分支判断变量对应的结果:
Int type=5;
type=type+3;
type=type*2;
将程序原本的执行代码放到正确的执行结果的分支处,而其他分支则可以使用无用的代码。
If type=5
{
插入无用的代码
}
Else If type=16
{
插入原本程序流程该执行的代码
}
Else if type=17
{
插入无用的代码
}。
S2,将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;
S3,在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。
本发明实施例通过在程序中添加多条代码分支,将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中,在其他代码分支中添加无用代码,在执行程序时仅执行分支比较变量与分支判断变量一致的代码分支,同时采用多条代码分支及无用代码将真正执行的代码隐藏到大量的代码中,又有效提高代码被黑客逆向破解的门槛,防止代码被破解。
本发明实施例通过将分支判断变量的MD5值作为当前的分支判断变量及将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量,增加代码被黑客破解的难度。具体方法如下:
对分支判断变量进行MD5计算得出分支判断变量的MD5值,并将分支判断变量的MD5值作为当前的分支判断变量;对各代码分支的分支比较变量分别进行MD5计算得出各分支比较变量的MD5值,并将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量。通常的分支都是判断一个变量或者一段字符串是否等于某个值,从而代码可读性比较高。而本发明则使用将分支判断变量及各分支比较变量的MD5值作为分支的判断条件,从而使得分支代码比较复杂也不易于读懂,增加代码被黑客破解的难度。
具体来说,与上述内容对应的实现代码可如下:
假设分支比较变量的原始代码如下:
采用4的MD5值和5的MD5值来作为分支比较变量:
其中4的MD5值是“a2f3e71d9181a67b”
其中5的MD5值是“bbce2345d7772b06”
那么分支比较变量则应改成:
本发明实施例还通过将对程序原本的执行代码进行修改而生成的代码作为无用代码来提高黑客对各代码分支的破解难度。具体方法如下:
无用代码为对程序原本的执行代码进行修改而生成的代码。对程序原本的执行代码进行修改包括:减少或增加程序原本的执行代码的循环执行次数、修改程序原本的执行代码中使用的KEY值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
将对程序原本的执行代码进行修改而生成的代码作为无用代码,可以使黑客逆向破解时更为困惑,让其以为每条分支代码都是有可能会被执行,且是在不同的条件下去执行,使得黑客逆向破解时需要去分析逆向所有的分支代码,从而提高黑客对各代码分支的破解难度。
本发明实施例通过采用多条代码分支及无用代码将真正执行的代码隐藏到大量的代码中,并将分支判断变量及各分支比较变量的MD5值分别作为分支的判断条件,并对程序原本的执行代码进行修改而生成的代码作为无用代码,从而使得分支代码比较复杂也不易于读懂,增加代码被黑客破解的难度。
参见图2所示,本发明实施例还包括一种Flash中防止代码被破解的系统,包括:
分支创建模块,用于在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,其中仅有一个分支的分支比较变量与分支判断变量相同;
代码转移模块,用于将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;
代码添加模块,用于在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。
本发明实施例通过分支创建模块、代码转移模块及代码添加模块实现在在程序中添加多条代码分支,将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中,在其他代码分支中添加无用代码,通过分支判断变量与分支比较变量的设置使得在执行程序时仅执行分支比较变量与分支判断变量一致的代码分支,同时采用多条代码分支及无用代码将真正执行的代码隐藏到大量的代码中,又有效提高代码被黑客逆向破解的门槛,防止代码被破解。
Flash中防止代码被破解的系统还包括变量修改模块,变量修改模块用于对分支判断变量进行MD5计算得出分支判断变量的MD5值,并将分支判断变量的MD5值作为当前的分支判断变量;对各代码分支的分支比较变量分别进行MD5计算得出各分支比较变量的MD5值,并将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量。
本发明实施例还通过变量修改模块将分支判断变量的MD5值作为当前的分支判断变量及将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量,通常的分支都是判断一个变量或者一段字符串是否等于某个值,从而代码可读性比较高。而本发明则使用将分支判断变量及各分支比较变量的MD5值作为分支的判断条件,从而使得分支代码比较复杂也不易于读懂,增加代码被黑客破解的难度。
无用代码为对程序原本的执行代码进行修改而生成的代码。Flash中防止代码被破解的系统还包括无用代码生成模块,无用代码生成模块用于对程序原本的执行代码进行修改以生成无用代码。对程序原本的执行代码进行修改包括:减少或增加程序原本的执行代码的循环执行次数、修改程序原本的执行代码中使用的KEY值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
本发明实施例还通过无用代码生成模块将对程序原本的执行代码进行修改而生成的代码作为无用代码,可以使黑客逆向破解时更为困惑,让其以为每条分支代码都是有可能会被执行,且是在不同的条件下去执行,使得黑客逆向破解时需要去分析逆向所有的分支代码,从而提高黑客对各代码分支的破解难度。
本发明不局限于上述实施方式,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围之内。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。
Claims (10)
1.一种Flash中防止代码被破解的方法,其特征在于:在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,其中仅有一个分支的分支比较变量与分支判断变量相同;将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。
2.如权利要求1所述的一种Flash中防止代码被破解的方法,其特征在于:对分支判断变量进行MD5计算得出分支判断变量的MD5值,并将分支判断变量的MD5值作为当前的分支判断变量;对各代码分支的分支比较变量分别进行MD5计算得出各分支比较变量的MD5值,并将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量。
3.如权利要求1或2所述的一种Flash中防止代码被破解的方法,其特征在于:所述无用代码为对程序原本的执行代码进行修改而生成的代码。
4.如权利要求3所述的一种Flash中防止代码被破解的方法,其特征在于:对程序原本的执行代码进行修改包括:减少或增加程序原本的执行代码的循环执行次数、修改程序原本的执行代码中使用的KEY值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
5.如权利要求1所述的一种Flash中防止代码被破解的方法,其特征在于:所述分支判断变量为数值型变量。
6.一种Flash中防止代码被破解的系统,其特征在于,包括:
分支创建模块,用于在程序中添加多条代码分支,在程序的开头添加一个分支判断变量作为判断执行哪条代码分支的条件,并在每条代码分支中添加一个分支比较变量作为该分支的执行条件,且其中仅有一分支的分支比较变量与分支判断变量相同;
代码转移模块,用于将程序原本的执行代码放到分支比较变量与分支判断变量一致的代码分支中;
代码添加模块,用于在分支比较变量与分支判断变量不一致的代码分支中添加无用代码。
7.如权利要求6所述的一种Flash中防止代码被破解的系统,其特征在于:所述Flash中防止代码被破解的系统还包括变量修改模块,所述变量修改模块用于对分支判断变量进行MD5计算得出分支判断变量的MD5值,并将分支判断变量的MD5值作为当前的分支判断变量;对各代码分支的分支比较变量分别进行MD5计算得出各分支比较变量的MD5值,并将各分支比较变量的MD5值分别作为该代码分支当前的分支判断变量。
8.如权利要求6所述的一种Flash中防止代码被破解的系统,其特征在于:所述无用代码为对程序原本的执行代码进行修改而生成的代码。
9.如权利要求7所述的一种Flash中防止代码被破解的系统,其特征在于:所述Flash中防止代码被破解的系统还包括无用代码生成模块,所述无用代码生成模块用于对程序原本的执行代码进行修改以生成无用代码。
10.如权利要求9所述的一种Flash中防止代码被破解的系统,其特征在于:对程序原本的执行代码进行修改包括:减少或增加程序原本的执行代码的循环执行次数、修改程序原本的执行代码中使用的KEY值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710198165.8A CN107085677A (zh) | 2017-03-29 | 2017-03-29 | 一种Flash中防止代码被破解的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710198165.8A CN107085677A (zh) | 2017-03-29 | 2017-03-29 | 一种Flash中防止代码被破解的方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107085677A true CN107085677A (zh) | 2017-08-22 |
Family
ID=59614667
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710198165.8A Pending CN107085677A (zh) | 2017-03-29 | 2017-03-29 | 一种Flash中防止代码被破解的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107085677A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446542A (zh) * | 2018-02-12 | 2018-08-24 | 南京梆梆信息科技有限公司 | 一种基于符号执行的源代码混淆方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250906A1 (en) * | 2009-03-24 | 2010-09-30 | Safenet, Inc. | Obfuscation |
CN104102860A (zh) * | 2014-08-11 | 2014-10-15 | 北京奇虎科技有限公司 | 安卓平台应用程序的保护方法、运行方法、装置及系统 |
CN104166822A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种数据保护的方法和装置 |
CN106326694A (zh) * | 2016-08-30 | 2017-01-11 | 北京鼎源科技有限公司 | 一种基于C源代码的混淆的Android应用加固方法 |
-
2017
- 2017-03-29 CN CN201710198165.8A patent/CN107085677A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100250906A1 (en) * | 2009-03-24 | 2010-09-30 | Safenet, Inc. | Obfuscation |
CN104166822A (zh) * | 2013-05-20 | 2014-11-26 | 阿里巴巴集团控股有限公司 | 一种数据保护的方法和装置 |
CN104102860A (zh) * | 2014-08-11 | 2014-10-15 | 北京奇虎科技有限公司 | 安卓平台应用程序的保护方法、运行方法、装置及系统 |
CN106326694A (zh) * | 2016-08-30 | 2017-01-11 | 北京鼎源科技有限公司 | 一种基于C源代码的混淆的Android应用加固方法 |
Non-Patent Citations (1)
Title |
---|
王蕊: "基于控制变换的代码混淆技术研究", 《中国优秀硕士学位论文全文数据库•信息科技辑》 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108446542A (zh) * | 2018-02-12 | 2018-08-24 | 南京梆梆信息科技有限公司 | 一种基于符号执行的源代码混淆方法及装置 |
CN108446542B (zh) * | 2018-02-12 | 2021-09-03 | 北京梆梆安全科技有限公司 | 一种基于符号执行的源代码混淆方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10778441B2 (en) | Redactable document signatures | |
Bai et al. | Authscan: Automatic extraction of web authentication protocols from implementations | |
CN102136053B (zh) | 对可执行文件源代码保护的方法及装置 | |
US20140373088A1 (en) | System and methods for analyzing and modifying passwords | |
US20150134971A1 (en) | Apparatus and method for decrypting encrypted file | |
US11888985B2 (en) | Blockchain system, registration terminal, approval terminal, smart contract registration method, and smart contract registration program | |
CN107463597B (zh) | 针对修改区块体数据的区块链的被动验证方法及系统 | |
CN104217494B (zh) | 一种卡号校验方法和装置 | |
CN111767565B (zh) | 一种数据脱敏的处理方法、处理装置和存储介质 | |
CN108108260B (zh) | 一种资源文件的校验方法及装置 | |
Yang et al. | Live acquisition of main memory data from Android smartphones and smartwatches | |
CN108830049A (zh) | 一种基于动态控制流图权重序列胎记的软件相似性检测方法 | |
CN110321673A (zh) | 信息加密方法和装置、信息解密方法和装置、安全系统 | |
CN106547648A (zh) | 一种备份数据处理方法及装置 | |
CN107085677A (zh) | 一种Flash中防止代码被破解的方法及系统 | |
CN113240431A (zh) | 基于图片像素的三原色进行支付验证的方法及系统 | |
Che et al. | Dnncloak: Secure dnn models against memory side-channel based reverse engineering attacks | |
CN107066843A (zh) | 一种对应用程序进行保护的方法及装置 | |
CN108460253B (zh) | 基于顺序、符号执行和单点逻辑的源代码加固方法及装置 | |
CN107391970B (zh) | Flash应用程序中的函数访问控制方法及装置 | |
CN103440231A (zh) | 用于比较文本的设备和方法 | |
CN106156655B (zh) | 一种面向云存储的文件压缩及认证方法 | |
JP2012114934A5 (zh) | ||
Shotts | PhoneGap for enterprise | |
Nguyen et al. | Stable Messenger: Steganography for Message-Concealed Image Generation |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20170822 |
|
RJ01 | Rejection of invention patent application after publication |