CN107085677A - 一种Flash中防止代码被破解的方法及系统 - Google Patents

一种Flash中防止代码被破解的方法及系统 Download PDF

Info

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
Application number
CN201710198165.8A
Other languages
English (en)
Inventor
周志刚
陈少杰
张文明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Douyu Network Technology Co Ltd
Original Assignee
Wuhan Douyu Network Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan Douyu Network Technology Co Ltd filed Critical Wuhan Douyu Network Technology Co Ltd
Priority to CN201710198165.8A priority Critical patent/CN107085677A/zh
Publication of CN107085677A publication Critical patent/CN107085677A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/14Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/311Functional 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做为其视频播放器,并且大多数的网页游戏也会使用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值或将程序原本的执行代码进行加密操作的结果添加至程序原本的执行代码的最后。
CN201710198165.8A 2017-03-29 2017-03-29 一种Flash中防止代码被破解的方法及系统 Pending CN107085677A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108446542A (zh) * 2018-02-12 2018-08-24 南京梆梆信息科技有限公司 一种基于符号执行的源代码混淆方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
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应用加固方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
王蕊: "基于控制变换的代码混淆技术研究", 《中国优秀硕士学位论文全文数据库•信息科技辑》 *

Cited By (2)

* Cited by examiner, † Cited by third party
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