CN108363911B - 一种Python脚本混淆、水印的方法及装置 - Google Patents

一种Python脚本混淆、水印的方法及装置 Download PDF

Info

Publication number
CN108363911B
CN108363911B CN201810139504.XA CN201810139504A CN108363911B CN 108363911 B CN108363911 B CN 108363911B CN 201810139504 A CN201810139504 A CN 201810139504A CN 108363911 B CN108363911 B CN 108363911B
Authority
CN
China
Prior art keywords
jump
opblock
loader
unit
pycodeobject
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
Application number
CN201810139504.XA
Other languages
English (en)
Other versions
CN108363911A (zh
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.)
Xi'an Clover Cyber Technology Co ltd
Original Assignee
Xi'an Clover Cyber 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 Xi'an Clover Cyber Technology Co ltd filed Critical Xi'an Clover Cyber Technology Co ltd
Priority to CN201810139504.XA priority Critical patent/CN108363911B/zh
Publication of CN108363911A publication Critical patent/CN108363911A/zh
Application granted granted Critical
Publication of CN108363911B publication Critical patent/CN108363911B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/16Program or content traceability, e.g. by watermarking
    • 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/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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

Abstract

本发明提供一种Python脚本混淆、水印的方法及装置,其中,一种Python脚本混淆、水印的装置,包括脚本源代码编译单元、解析单元、规则记录单元、优先权设定单元、co_varnames生成单元、封装单元、Loader生成单元、加密单元以及pyc文件生成单元,本发明还提供了一种Python脚本混淆、水印的方法,以提高python程序模块的安全性,并且保护编译后Python脚本不被反编译、水印不能被篡改,且兼容CPython、Jython、IronPython、PyPy等各种python解释器。

Description

一种Python脚本混淆、水印的方法及装置
技术领域
本发明属于Python脚本处理技术,具体涉及一种Python脚本混淆、水印的方法及装置。
背景技术
Python是一门编程语言,具有开发速度快,第三方扩展完善,代码编写量少等优点,由于Python的上述优点符合对开发效率要求,故Python成为众多软件开发热门语言之一;一般情况下应用程序发布时会将Python代码编译,来加快处理速度和隐藏源代码,用以保证Python代码的安全性。
Python的上述优点,使得Python大大方便了软件的开发,但是,由于Python的源代码只能编译,而不能加密,而使得Python代码一直存在被盗用的问题;并且Python代码编译出的二进制文件可以使用第三方软件反编译回Python源代码,从而使得Python代码存在的被盗用的问题得不到有效的解决。
发明内容
有鉴于此,本发明的主要目的是提供一种Python脚本混淆、水印的方法及装置。
本发明采用的技术方案是:
一种Python脚本混淆、水印的方法,包括如下步骤:
第一步:根据要保护python脚本源代码编译单元生成所有PyCodeObject;
第二步:为PyCodeObject的字节码co_code利用解析单元按照解析的时间顺序依次生成若干OPBLOCK实例,判断OPBLOCK实例中的opcode是否具备跳转,并记录跳转规则;
第三步:依据记录的跳转规则以及生成的若干OPBLOCK实例,保留生成的OPBLOCK实例的时间顺序,将剩余的OPBLOCK实例随机排列;从物理空间上彻底打乱OPBLOCK实例,使反汇编工具无法顺序解析字节码;
第四步:获取PyCodeObject的局部变量名元组co_varnames,替换为不合法的变量名;
第五步:通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames;
第六步:生成混淆的Loader,对Loader源代码进行编译形成Loader+0,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,最终替换Loader中的compressed_encrypted_data以便Loader在启动后动态解密和解压;
第七步:生成混淆后的pyc文件。
优选的,在第二步中跳转规则为:判断跳转是否为相对跳转或者是否直接跳转、跳转是否为无条件或者是否有条件跳转,按照OPBLOCK的跳转顺序和跳转的条件记录规则并设定优先权。
优选的,在第三步中,按照第二步记录规则和设定优先权连接第二步的中OPBLOCK,若为非跳转OPBLOCK,则生成一个JUMP_ABSOLUTE连接其顺序并执行下一个OPBLOCK;若为无条件直接跳转OPBLOCK,则修正其直接跳转的位置;若为无条件相对跳转OPBLOCK,则将相对跳转修改为直接跳转并修正其直接跳转的位置;若为有条件跳转OPBLOCK,则计算其跳转的位置,生成新的直接跳转到该位置,并修改条件跳转到新直接跳转;若直接跳转超出65535则需要使用EXTENDED_ARG来扩展JUMP_ABSOLUTE指令;最后在跳转指令后填充0-5个随机JUNKCODE字节,通过指令乱序,将指令从物理空间上彻底打乱,是反汇编工具无法顺序解析字节码。
优选的,在第七步中,生成混淆后的pyc文件的具体方法为:通过types.CodeType组装混淆后Loader的PyCodeObject,再通过marshal.dumps序列化为字符串,最后在头部添加imp.get_magic()和时间戳保存pyc文件。
一种Python脚本混淆、水印的装置,包括
脚本源代码编译单元,根据要保护python脚本源代码编译生成所有PyCodeObject,
解析单元,对PyCodeObject的字节码co_code按照时间顺序依次解析生成若干OPBLOCK实例,
规则记录单元,记录OPBLOCK实例中的opcode跳转规则;
优先权设定单元,根据OPBLOCK实例中的opcode跳转规则设定OPBLOCK实例跳转权限,
co_varnames生成单元,获取PyCodeObject的局部变量名元组co_varnames,
封装单元,通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames,
Loader生成单元,依据封装单元组装的步骤三生成的co_code与步骤四生成的co_varnames生成Loader;
加密单元:对Loader源代码进行编译形成Loader+0,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,
pyc文件生成单元,生成混淆后的pyc文件。
本发明提供了一种Python脚本混淆、水印的方法和装置,以提高python程序模块的安全性,并且保护编译后Python脚本不被反编译、水印不能被篡改,且兼容CPython、Jython、IronPython、PyPy等各种python解释器。
附图说明
图1为本发明中PyCodeObject的嵌套结构原理图;
图2为本发明的方法流程图。
具体实施方式
下面将结合附图以及具体实施例来详细说明本发明,在此本发明的示意性实施例以及说明用来解释本发明,但并不作为对本发明的限定。
参照图1,本发明提供了一种Python脚本混淆、水印的装置,包括
脚本源代码编译单元,根据要保护python脚本源代码编译生成所有PyCodeObject,
解析单元,对PyCodeObject的字节码co_code按照时间顺序依次解析生成若干OPBLOCK实例,
规则记录单元,记录OPBLOCK实例中的opcode跳转规则;
优先权设定单元,根据OPBLOCK实例中的opcode跳转规则设定OPBLOCK实例跳转权限,
co_varnames生成单元,获取PyCodeObject的局部变量名元组co_varnames,
封装单元,通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames,
Loader生成单元,依据封装单元组装的步骤三生成的co_code与步骤四生成的co_varnames生成Loader;
加密单元:对Loader源代码进行编译,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,
pyc文件生成单元,生成混淆后的pyc文件。
本发明还提供了一种Python脚本混淆、水印的方法,包括如下步骤:
第一步:根据要保护python脚本源代码编译单元生成所有PyCodeObject;
第二步:为PyCodeObject的字节码co_code利用解析单元按照解析的时间顺序依次生成若干OPBLOCK实例,判断OPBLOCK实例中的opcode是否具备跳转,并记录跳转规则;参照表1,在第二步中跳转规则为:判断跳转是否为相对跳转或者是否直接跳转、跳转是否为无条件或者是否有条件跳转,按照OPBLOCK的跳转顺序和跳转的条件记录规则并设定优先权。
表1为跳转指令列表
Figure BDA0001577205490000051
第三步:参照表2和表3,表2乱序前源码对应指令,表3为乱序后源码对应指令,依据记录的跳转规则以及生成的若干OPBLOCK实例,保留生成的OPBLOCK实例的时间顺序,将剩余的OPBLOCK实例随机排列;从物理空间上彻底打乱OPBLOCK实例,使反汇编工具无法顺序解析字节码;在第三步中,按照第二步记录规则和设定优先权连接第二步的中OPBLOCK,若为非跳转OPBLOCK,则生成一个JUMP_ABSOLUTE连接其顺序并执行下一个OPBLOCK;若为无条件直接跳转OPBLOCK,则修正其直接跳转的位置;若为无条件相对跳转OPBLOCK,则将相对跳转修改为直接跳转并修正其直接跳转的位置;若为有条件跳转OPBLOCK,则计算其跳转的位置,生成新的直接跳转到该位置,并修改条件跳转到新直接跳转;若直接跳转超出65535则需要使用EXTENDED_ARG来扩展JUMP_ABSOLUTE指令;最后在跳转指令后填充0-5个随机JUNKCODE字节,通过指令乱序,将指令从物理空间上彻底打乱,是反汇编工具无法顺序解析字节码。
表2乱序前源码对应指令
Figure BDA0001577205490000052
Figure BDA0001577205490000061
表3为乱序后源码对应指令举例
Figure BDA0001577205490000062
第四步:获取PyCodeObject的局部变量名元组co_varnames,替换为不合法的变量名;参照表4,表4提供了变量名混淆的实施例。
表4提供了变量名混淆的实施例
Figure BDA0001577205490000063
第五步:通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames;
第六步:生成混淆的Loader,对Loader源代码进行编译形成Loader+0,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,最终替换Loader中的compressed_encrypted_data以便Loader在启动后动态解密和解压;
第七步:生成混淆后的pyc文件。在第七步中,生成混淆后的pyc文件的具体方法为:通过types.CodeType组装混淆后Loader的PyCodeObject,再通过marshal.dumps序列化为字符串,最后在头部添加imp.get_magic()和时间戳保存pyc文件。
以上对本发明实施例所公开的技术方案进行了详细介绍,本文中应用了具体实施例对本发明实施例的原理以及实施方式进行了阐述,以上实施例的说明只适用于帮助理解本发明实施例的原理;同时,对于本领域的一般技术人员,依据本发明实施例,在具体实施方式以及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。

Claims (4)

1.一种Python脚本混淆、水印的方法,其特征在于,包括如下步骤:
第一步:根据要保护python脚本源代码编译单元生成PyCodeObject;
第二步:获取PyCodeObject的字节码co_code,利用解析单元按照解析的时间顺序依次生成co_code的OPBLOCK实例,判断OPBLOCK实例中的opcode是否具备跳转,并记录跳转规则;
第三步:依据记录的跳转规则以及生成的OPBLOCK实例,保留生成的OPBLOCK实例的时间顺序,将剩余的OPBLOCK实例随机排列;从物理空间上彻底打乱OPBLOCK实例,使反汇编工具无法顺序解析字节码;
第四步:获取PyCodeObject的局部变量名元组co_varnames,替换为不合法的变量名;
第五步:通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames;
第六步:生成混淆的Loader,对Loader源代码进行编译形成Loader+0,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,最终替换Loader中的compressed_encrypted_data以便Loader在启动后动态解密和解压;
第七步:生成混淆后的pyc文件;
在第二步中跳转规则为:判断跳转是否为相对跳转或者是否直接跳转、跳转是否为无条件或者是否有条件跳转,按照OPBLOCK的跳转顺序和跳转的条件记录规则并设定优先权。
2.根据权利要求1所述的Python脚本混淆、水印的方法,其特征在于,在第三步中,按照第二步记录规则和设定优先权连接第二步中的OPBLOCK,若为非跳转OPBLOCK,则生成一个JUMP_ABSOLUTE连接其顺序并执行下一个OPBLOCK;若为无条件直接跳转OPBLOCK,则修正其直接跳转的位置;若为无条件相对跳转OPBLOCK,则将相对跳转修改为直接跳转并修正其直接跳转的位置;若为有条件跳转OPBLOCK,则计算其跳转的位置,生成新的直接跳转到该位置,并修改条件跳转到新直接跳转;若直接跳转超出65535则需要使用EXTENDED_ARG来扩展JUMP_ABSOLUTE指令;最后在跳转指令后填充0-5个随机JUNKCODE字节,通过指令乱序,将指令从物理空间上彻底打乱,使反汇编工具无法顺序解析字节码。
3.根据权利要求1所述的Python脚本混淆、水印的方法,其特征在于,在第七步中,生成混淆后的pyc文件的具体方法为:通过types.CodeType组装混淆后Loader的PyCodeObject,再通过marshal.dumps序列化为字符串,最后在头部添加imp.get_magic()和时间戳保存pyc文件。
4.一种Python脚本混淆、水印的装置,其特征在于,包括
脚本源代码编译单元,根据要保护python脚本源代码编译生成所有PyCodeObject,
解析单元,对PyCodeObject的字节码co_code按照时间顺序依次解析生成每个OPBLOCK实例,
规则记录单元,记录OPBLOCK实例中的opcode跳转规则;
优先权设定单元,根据OPBLOCK实例中的opcode跳转规则设定OPBLOCK实例跳转权限,
co_varnames生成单元,获取PyCodeObject的局部变量名元组co_varnames,
封装单元,通过types.CodeType递归组装步骤三生成的co_code与步骤四生成的co_varnames,
Loader生成单元,依据封装单元组装的步骤三生成的co_code与步骤四生成的co_varnames生成Loader;
加密单元:对Loader源代码进行编译形成Loader+0,并再次对Loader+0的PyCodeObject进行压缩;并以Loader混淆后PyCodeObject的字节码co_code作为密钥对压缩后的数据进行加密,
pyc文件生成单元,生成混淆后的pyc文件。
CN201810139504.XA 2018-02-11 2018-02-11 一种Python脚本混淆、水印的方法及装置 Active CN108363911B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810139504.XA CN108363911B (zh) 2018-02-11 2018-02-11 一种Python脚本混淆、水印的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810139504.XA CN108363911B (zh) 2018-02-11 2018-02-11 一种Python脚本混淆、水印的方法及装置

Publications (2)

Publication Number Publication Date
CN108363911A CN108363911A (zh) 2018-08-03
CN108363911B true CN108363911B (zh) 2021-10-29

Family

ID=63005664

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810139504.XA Active CN108363911B (zh) 2018-02-11 2018-02-11 一种Python脚本混淆、水印的方法及装置

Country Status (1)

Country Link
CN (1) CN108363911B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109992935B (zh) * 2019-03-15 2021-05-25 同盾控股有限公司 一种源代码保护方法及装置
CN110378085A (zh) * 2019-07-30 2019-10-25 四川长虹电器股份有限公司 一种Python字节码防逆向方法
CN111240654B (zh) * 2020-01-03 2023-03-14 福建天晴在线互动科技有限公司 一种Python代码加固保护的方法及其系统
CN111310133A (zh) * 2020-02-28 2020-06-19 西安四叶草信息技术有限公司 脚本混淆方法及装置
CN111258595B (zh) * 2020-03-13 2023-08-01 超越科技股份有限公司 一种基于PyInstaller的python源代码封装方法
CN111666078A (zh) * 2020-04-30 2020-09-15 平安科技(深圳)有限公司 源码加固方法、装置、计算机设备及存储介质
CN113282294A (zh) * 2021-05-19 2021-08-20 武汉极意网络科技有限公司 基于安卓平台Java字符串混淆的方法和装置
CN113434874B (zh) * 2021-06-11 2022-05-20 湖南大学 一种基于pyc加密的Python源代码保护方法和系统
CN116089983B (zh) * 2023-02-23 2024-03-26 北京微步在线科技有限公司 一种py文件的加固编译方法及装置

Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103246830A (zh) * 2013-04-28 2013-08-14 北京小米科技有限责任公司 客户端脚本的加密处理方法及装置和解密处理方法及装置
CN104166822A (zh) * 2013-05-20 2014-11-26 阿里巴巴集团控股有限公司 一种数据保护的方法和装置
CN104573425A (zh) * 2014-12-31 2015-04-29 上海格尔软件股份有限公司 一种基于对称算法和专用加载模块的Python程序模块加密方法
CN105354009A (zh) * 2015-10-14 2016-02-24 北京深思数盾科技有限公司 一种用于固件的保护方法
CN105868589A (zh) * 2016-03-30 2016-08-17 网易(杭州)网络有限公司 一种脚本加密方法、脚本运行方法及装置
US9445095B1 (en) * 2011-10-06 2016-09-13 Arris Enterprises, Inc. Compression of modified data captures for packets with encrypted or non-interesting content
CN106227671A (zh) * 2016-08-05 2016-12-14 网易(杭州)网络有限公司 程序运行性能分析方法及装置
CN106503496A (zh) * 2016-12-08 2017-03-15 合肥康捷信息科技有限公司 基于操作码替换与合并的Python脚本程序防逆转方法
CN106529225A (zh) * 2016-10-27 2017-03-22 努比亚技术有限公司 一种应用程序源代码保护装置及方法
CN106599628A (zh) * 2016-12-08 2017-04-26 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106778101A (zh) * 2016-12-08 2017-05-31 合肥康捷信息科技有限公司 一种基于控制流和外形混淆的Python代码混淆方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2009108245A2 (en) * 2007-12-21 2009-09-03 University Of Virginia Patent Foundation System, method and computer program product for protecting software via continuous anti-t ampering and obfuscation transforms
US20160080408A1 (en) * 2014-09-15 2016-03-17 Lookingglass Cyber Solutions Apparatuses, methods and systems for a cyber security assessment mechanism

Patent Citations (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9445095B1 (en) * 2011-10-06 2016-09-13 Arris Enterprises, Inc. Compression of modified data captures for packets with encrypted or non-interesting content
CN103246830A (zh) * 2013-04-28 2013-08-14 北京小米科技有限责任公司 客户端脚本的加密处理方法及装置和解密处理方法及装置
CN104166822A (zh) * 2013-05-20 2014-11-26 阿里巴巴集团控股有限公司 一种数据保护的方法和装置
CN104573425A (zh) * 2014-12-31 2015-04-29 上海格尔软件股份有限公司 一种基于对称算法和专用加载模块的Python程序模块加密方法
CN105354009A (zh) * 2015-10-14 2016-02-24 北京深思数盾科技有限公司 一种用于固件的保护方法
CN105868589A (zh) * 2016-03-30 2016-08-17 网易(杭州)网络有限公司 一种脚本加密方法、脚本运行方法及装置
CN106227671A (zh) * 2016-08-05 2016-12-14 网易(杭州)网络有限公司 程序运行性能分析方法及装置
CN106529225A (zh) * 2016-10-27 2017-03-22 努比亚技术有限公司 一种应用程序源代码保护装置及方法
CN106503496A (zh) * 2016-12-08 2017-03-15 合肥康捷信息科技有限公司 基于操作码替换与合并的Python脚本程序防逆转方法
CN106599628A (zh) * 2016-12-08 2017-04-26 合肥康捷信息科技有限公司 一种基于模块钩子的Python字节码文件保护方法
CN106778101A (zh) * 2016-12-08 2017-05-31 合肥康捷信息科技有限公司 一种基于控制流和外形混淆的Python代码混淆方法

Non-Patent Citations (6)

* Cited by examiner, † Cited by third party
Title
Compression and Information Leakage of Plaintext;Kelsey J;《9th International Workshop on Fast Software Encryption (FSE 2002)》;20021231;第263-276页 *
Implementation of the fully homomorphic encryption scheme over integers with shorter keys;dos Santos LC et al;《2015 7TH INTERNATIONAL CONFERENCE ON NEW TECHNOLOGIES, MOBILITY AND SECURITY (NTMS)》;20151231;第1-5页 *
Mobile Based Security and Control System Using Python s60;Raveendran A et al;《7th International Conference on MEMS, NANO and Smart Systems (ICMENS 2011)》;20121231;第511-515页 *
Research on Encryption Algorithm Based on Python;Zhang Xin et al;《2017 International Conference on Computer Technology, Electronics and Communication (ICCTEC)》;20171231;第586-588页 *
基于操作码的Python程序防逆转算法研究与实现;王小强;《中国优秀硕士学位论文全文数据库 信息科技辑》;20180115;第I138-713页 *
基于虚拟机的软件动态分析方法研究;孙明;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715;第I138-373页 *

Also Published As

Publication number Publication date
CN108363911A (zh) 2018-08-03

Similar Documents

Publication Publication Date Title
CN108363911B (zh) 一种Python脚本混淆、水印的方法及装置
JP6257754B2 (ja) データの保護
JP4770425B2 (ja) 保護済み実行プログラムの作成のためのプログラム、方法及び装置
KR101545272B1 (ko) 안드로이드에서의 dex파일 바이너리 난독화 방법
JP5996810B2 (ja) 自己書換え基盤のアプリケーションコード難読化装置及びその方法
CN104239757B (zh) 应用程序防止逆向的方法及装置、运行方法及终端
CN104680039B (zh) 一种应用程序安装包的数据保护方法及装置
US20160203087A1 (en) Method for providing security for common intermediate language-based program
KR101521765B1 (ko) 분간이 난해한 식별자 변환을 이용한 코드 난독화 장치 및 방법
CN106203006A (zh) 基于dex与so文件动态执行的Android应用加固方法
CN104318135B (zh) 一种基于可信执行环境的Java代码安全动态载入方法
CN103413073B (zh) 一种保护java可执行程序的方法及设备
KR101216995B1 (ko) 인덱스 테이블 기반 코드 암호화 및 복호화 장치 및 그 방법
WO2015058620A1 (en) Method and apparatus for generating installation package corresponding to an application and executing application
KR101623096B1 (ko) 안드로이드 플랫폼에서의 apk 파일 관리 장치 및 방법
CN106599628A (zh) 一种基于模块钩子的Python字节码文件保护方法
KR101861341B1 (ko) 애플리케이션 코드의 역난독화 장치 및 이를 이용한 애플리케이션 코드의 역난독화 방법
CN102542212B (zh) 一种文本信息隐藏方法及装置
CN104463002A (zh) 一种加固apk的方法和装置以及apk加固客户端和服务器
CN103177199A (zh) 网页应用代码保护方法及系统和执行的提速方法及系统
CN105335151A (zh) 安装文件的保护方法及装置
US20120096562A1 (en) Method for protecting the source code of a computer program
CN108133147B (zh) 可执行代码的保护方法、设备及可读存储介质
KR102001046B1 (ko) 공통 중간 언어를 위한 보안 제공 장치와 방법, 및 보안 실행 장치와 방법
CN109478212A (zh) 按需代码解密

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