CN106778100A - 基于安卓平台和ios平台的混淆编译方法及混淆编译器 - Google Patents

基于安卓平台和ios平台的混淆编译方法及混淆编译器 Download PDF

Info

Publication number
CN106778100A
CN106778100A CN201611089866.XA CN201611089866A CN106778100A CN 106778100 A CN106778100 A CN 106778100A CN 201611089866 A CN201611089866 A CN 201611089866A CN 106778100 A CN106778100 A CN 106778100A
Authority
CN
China
Prior art keywords
platform
plug
ios
unit
obscure
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.)
Granted
Application number
CN201611089866.XA
Other languages
English (en)
Other versions
CN106778100B (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.)
Beijing Zhiyouwang'an Technology Co Ltd
Original Assignee
Beijing Zhiyouwang'an 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 Beijing Zhiyouwang'an Technology Co Ltd filed Critical Beijing Zhiyouwang'an Technology Co Ltd
Priority to CN201611089866.XA priority Critical patent/CN106778100B/zh
Publication of CN106778100A publication Critical patent/CN106778100A/zh
Application granted granted Critical
Publication of CN106778100B publication Critical patent/CN106778100B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

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)
  • Stored Programmes (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明提供了一种基于安卓平台和IOS平台的混淆编译方法。所述基于安卓平台和IOS平台的混淆编译方法包括如下步骤:一、获得基于安卓平台或基于iOS平台的源代码;二、编译器插件在对所述源代码进行编译时触发混淆插件对所述源代码进行自动混淆处理,并生成安全文件。本发明还提供一种基于安卓平台和IOS平台的混淆编译器。本发明的有益效果是:所述基于安卓平台和IOS平台的混淆编译方法和混淆编译器通过基于clang‑llvm技术对安卓和iOS的代码进行混淆编译,从而不会对混淆后的文件的符号表造成任何影响。

Description

基于安卓平台和IOS平台的混淆编译方法及混淆编译器
技术领域
本发明属于代码混淆技术领域,具体地涉及一种基于安卓平台和IOS平台的混淆编译方法及混淆编译器。
背景技术
目前,基于安卓平台的c/c++代码和iOS平台的objective-c代码的现有混淆技术都是在源代码基础上提供混淆并输出混淆后的源代码,而最终编译成ELF文件、.m文件、APK文件或者IPA文件都是由混淆后的源代码进行编译而生成。
但是,上述方案存在的问题在于:将会对符号表产生影响。符号表为每个项目编译时对源码中的每一个标识进行记录的一个类似字典的文件,而混淆后的文件编译是使用混淆后的代码,所以代码标识也都进行了改变,因此符号表也完全改变了;如此,在有符号表使用需求的场景就会出现符号表与源代码没有任何关系,而符号表仅与混淆后的代码相关。
发明内容
本发明的目的在于提供一种能够不破坏和影响符号表使用且编译简单安全的基于安卓平台和IOS平台的混淆编译方法及混淆编译器。
本发明的技术方案如下:一种基于安卓平台和IOS平台的混淆编译方法,包括如下步骤:
一、获得基于安卓平台或基于iOS平台的源代码;
二、编译器插件在对所述源代码进行编译时触发混淆插件对所述源代码进行自动混淆处理,并生成安全文件。
优选地,在步骤一中,所述基于安卓平台的源代码包括基于安卓平台的c/c++代码。
优选地,在步骤二中,针对所述基于安卓平台的c/c++代码,导入基于eclipse的编译插件,正常使用eclipse即可触发所述混淆插件完成所述基于安卓平台的c/c++代码的自动混淆编译操作。
优选地,在步骤一中,所述基于iOS平台的源代码包括基于iOS平台objective-c代码。
优选地,在步骤二中,针对所述基于iOS平台objective-c代码,导入基于xcode的编译插件进行正常编译即可触发所述混淆插件完成混淆编译。
优选地,所述混淆插件基于clang-llvm技术对代码进行混淆处理,使得混淆编译过程中产生的符号表与所述源代码相关联。
一种基于安卓平台和IOS平台的混淆编译器,包括编译器插件和混淆插件, 所述编译器插件在对基于安卓平台或IOS平台的源代码进行编译时触发所述混淆插件对所述源代码进行自动混淆处理,并生成安全文件。
优选地,所述编译器插件包括针对基于安卓平台源代码的基于eclipse的编译插件,以及针对基于iOS平台源代码的基于xcode的编译插件。
优选地,所述混淆插件是基于clang-llvm技术的混淆插件。
本发明提供的技术方案具有如下有益效果:
1、相对于黑盒编译系统,本发明实施例提供的基于安卓平台和IOS平台的混淆编译方法和混淆编译器使用更简单和方便,而且,对于安卓平台提供了基于eclipse的编译插件,通过所述基于eclipse的编译插件触发混淆插件即可进行自动混淆操作并生成安全文件;对于iOS平台提供了基于xcode的编译器插件,导入插件正常使用xcode即可完成混淆编译;
2、相对于常规黑盒混淆编译系统对安卓和iOS的代码进行混淆后再编译,符号表完全被破坏的问题,所述基于安卓平台和IOS平台的混淆编译方法和混淆编译器通过基于clang-llvm技术对安卓和iOS的代码进行混淆编译,从而不会对混淆后的文件的符号表造成任何影响。
附图说明
图1是本发明实施例提供的基于安卓平台和IOS平台的混淆编译方法的流程框图;
图2是图1所示基于安卓平台和IOS平台的混淆编译方法流程示意图;
图3是本发明实施例提供的基于安卓平台和IOS平台代码的混淆编译器结构框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
除非上下文另有特定清楚的描述,本发明中的元件和组件,数量既可以单个的形式存在,也可以多个的形式存在,本发明并不对此进行限定。本发明中的步骤虽然用标号进行了排列,但并不用于限定步骤的先后次序,除非明确说明了步骤的次序或者某步骤的执行需要其他步骤作为基础,否则步骤的相对次序是可以调整的。可以理解,本文中所使用的术语“和/或”涉及且涵盖相关联的所列项目中的一者或一者以上的任何和所有可能的组合。
请同时参阅图1和图2,本发明实施例提供的基于安卓平台和IOS平台的混淆编译方法通过编译器插件和混淆插件将所述基于安卓平台和IOS平台的代码进行基于clang-llvm的自动混淆,并编译生成安全文件。
也就是说,在本实施例中,基于clang-llvm编译技术,对编译的环境进行插件化定制,通过定制对编译时进行保护控制,让编译时的代码通过提供的编译环境进行自动混淆后编译。
具体地,所述基于安卓平台和IOS平台的混淆编译方法包括如下步骤:
S1、获得基于安卓平台或基于iOS平台的源代码。
具体的,在步骤S1中,所述基于安卓平台的源代码包括基于安卓平台的c/c++代码,且所述基于iOS平台的源代码包括基于iOS平台objective-c代码。
S2、编译器插件在对所述源代码进行编译时触发混淆插件对所述源代码进行自动混淆处理,并生成安全文件。
具体的,在步骤S2中,所述编译器插件分别针对所述基于安卓平台和所述基于iOS平台的源代码提供基于eclipse的编译插件和基于xcode的编译插件。
针对所述基于安卓平台的c/c++代码,导入所述基于eclipse的编译插件,正常使用eclipse既可完成所述基于安卓平台的c/c++代码的自动编译操作;
针对所述基于iOS平台objective-c代码,导入所述基于xcode的编译插件进行正常编译即可触发所述混淆插件完成混淆编译。
所述混淆插件是爱加密的安卓和iOS的平台代码混淆器,所述爱加密的安卓和iOS的平台代码混淆器基于clang-llvm技术对代码进行混淆处理。
具体的,在所述混淆插件中,针对所述基于安卓平台的c/c++代码,所述混淆插件对classes.dex中的所有函数功能代码进行提取,然后加密单独存放,能有效防止对dex静态逆向,以及代码内存映射安全;而且,通过对so代码的高级混淆、流程混排加密、代码内部字符串加密等,实现对so源码、so函数名称以及接口调用进行加密隐藏,从而实现防止相关破解工具对APK进行逆向、动态调试及内存攻击,保证APK内部任何信息被篡改后APK包无法运行。
针对所述基于iOS平台objective-c代码,所述混淆插件对程序中出现的URL进行编码加密,防止URL被静态分析;而且,不仅对源代码的方法名和方法体进行混淆,保证源代码被逆向后无法解析,还对源代码的逻辑结构进行打乱混排,保证源代码可读性降到最低。
而且,在步骤S2中,使用者将所述编译器插件和所述混淆插件导入原始编译器中,并点击所述编译器插件对所述基于安卓平台的c/c++代码或所述基于iOS平台objective-c代码进行编译操作,而且,所述编译器插件在编译过程中触发所述混淆插件从而完成对源代码的自动编译混淆操作。即,在本实施例中,对源代码的编译和混淆操作只需要一个步骤就可以完成的。
进一步的,在本实施例中,混淆编译过程中产生的符号表与所述源代码相关联。例如,如果对所述基于安卓平台的c/c++代码进行混淆编译,则产生的符号表与所述c/c++代码相关联;如果对所述基于iOS平台objective-c代码进行混淆编译,则产生的符号表与所述objective-c代码相关联。
由于所述符号表在编译程序工作的过程中需要不断收集、记录和使用源程序中一些语法符号的类型和特征等相关信息,因此,符号表可以用于在程序调试过程中的报错,从而可以将报错信息与源代码关联起来,进而提示报错信息源程序中的位置,从而方便人们对所述源程序进行调试。
如此,在所述基于安卓平台和IOS平台的混淆编译方法中,就可以解决混淆编译后符号表仅与混淆后的代码相关,从而破坏和影响所述符号表使用的问题。
请参阅图3,一种基于安卓平台和IOS平台代码的混淆编译器,包括编译器插件10和混淆插件20。其中,所述编译器插件10和所述混淆插件20导入原始编译器中,从而形成所述基于安卓平台和IOS平台代码的混淆编译器。
所述编译器插件10包括针对所述基于安卓平台和所述基于iOS平台的源代码的基于eclipse的编译插件11和基于xcode的编译插件12。
针对所述基于安卓平台的c/c++代码,导入所述基于eclipse的编译插件11,正常使用eclipse既可完成所述基于安卓平台的c/c++代码的自动编译操作;
针对所述基于iOS平台objective-c代码,导入所述基于xcode的编译插件12进行正常编译即可触发所述混淆插件完成混淆编译。
所述混淆插件20是爱加密的安卓和iOS的平台代码混淆器,所述爱加密的安卓和iOS的平台代码混淆器基于clang-llvm技术对代码进行混淆处理。
在本实施例中,所述混淆插件20可以被所述编译器插件10所激发而启动,并与所述编译器插件10一起完成对源程序的混淆编译操作。即,所述基于eclipse的编译插件11和所述基于xcode的编译插件12均可以激发所述混淆插件20而完成对源程序的混淆编译操作。
其中,针对所述基于安卓平台的c/c++代码,所述混淆插件20对classes.dex中的所有函数功能代码进行提取,然后加密单独存放,能有效防止对dex静态逆向,以及代码内存映射安全;而且,通过对so代码的高级混淆、流程混排加密、代码内部字符串加密等,实现对so源码、so函数名称以及接口调用进行加密隐藏,从而实现防止相关破解工具对APK进行逆向、动态调试及内存攻击,保证APK内部任何信息被篡改后APK包无法运行。
针对所述基于iOS平台objective-c代码,所述混淆插件20对程序中出现的URL进行编码加密,防止URL被静态分析;而且,不仅对源代码的方法名和方法体进行混淆,保证源代码被逆向后无法解析,还对源代码的逻辑结构进行打乱混排,保证源代码可读性降到最低。
在本实施例中,当使用所述混淆编译器对源代码进行混淆编译时,所述编译器插件10可以在对基于安卓平台或IOS平台的源代码进行编译时触发所述混淆插件20以完成所述源代码进行自动混淆处理,并生成安全文件。
相较于现有技术,本发明提供的技术方案具有如下有益效果:
1、相对于黑盒编译系统,本发明实施例提供的基于安卓平台和IOS平台的混淆编译方法和混淆编译器使用更简单和方便,而且,对于安卓平台提供了基于eclipse的编译插件,通过所述基于eclipse的编译插件触发混淆插件即可进行自动混淆操作并生成安全文件;对于iOS平台提供了基于xcode的编译器插件,导入插件正常使用xcode即可完成混淆编译;
2、相对于常规黑盒混淆编译系统对安卓和iOS的代码进行混淆后再编译,符号表完全被破坏的问题,所述基于安卓平台和IOS平台的混淆编译方法和混淆编译器通过基于clang-llvm技术对安卓和iOS的代码进行混淆编译,从而不会对混淆后的文件的符号表造成任何影响。
对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。 。

Claims (9)

1.一种基于安卓平台和IOS平台的混淆编译方法,其特征在于:包括如下步骤: 一、获得基于安卓平台或基于iOS平台的源代码; 二、编译器插件在对所述源代码进行编译时触发混淆插件对所述源代码进行自动混淆处理,并生成安全文件。
2.根据权利要求1所述的基于安卓平台和IOS平台的混淆编译方法,其特征在于:在步骤一中,所述基于安卓平台的源代码包括基于安卓平台的c/c++代码。
3.根据权利要求2所述的基于安卓平台和IOS平台的混淆编译方法,其特征在于:在步骤二中,针对所述基于安卓平台的c/c++代码,导入基于eclipse的编译插件,正常使用eclipse即可触发所述混淆插件完成所述基于安卓平台的c/c++代码的自动混淆编译操作。
4.根据权利要求1所述的基于安卓平台和IOS平台的混淆编译方法,其特征在于:在步骤一中,所述基于iOS平台的源代码包括基于iOS平台objective-c代码。
5.根据权利要求4所述的基于安卓平台和IOS平台的混淆编译方法,其特征在于:在步骤二中,针对所述基于iOS平台objective-c代码,导入基于xcode的编译插件进行正常编译即可触发所述混淆插件完成混淆编译。
6.根据权利要求1-5任一所述的基于安卓平台和IOS平台的混淆编译方法,其特征在于:所述混淆插件基于clang-llvm技术对代码进行混淆处理,使得混淆编译过程中产生的符号表与所述源代码相关联。
7.一种基于安卓平台和IOS平台的混淆编译器,其特征在于:包括编译器插件和混淆插件, 所述编译器插件在对基于安卓平台或IOS平台的源代码进行编译时触发所述混淆插件对所述源代码进行自动混淆处理,并生成安全文件。
8.根据权利要求7所述的基于安卓平台和IOS平台的混淆编译器,其特征在于:所述编译器插件包括针对基于安卓平台源代码的基于eclipse的编译插件,以及针对基于iOS平台源代码的基于xcode的编译插件。
9.根据权利要求7所述的基于安卓平台和IOS平台的混淆编译器,其特征在于:所述混淆插件是基于clang-llvm技术的混淆插件。
CN201611089866.XA 2016-12-01 2016-12-01 基于安卓平台和ios平台的混淆编译方法及混淆编译器 Active CN106778100B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611089866.XA CN106778100B (zh) 2016-12-01 2016-12-01 基于安卓平台和ios平台的混淆编译方法及混淆编译器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611089866.XA CN106778100B (zh) 2016-12-01 2016-12-01 基于安卓平台和ios平台的混淆编译方法及混淆编译器

Publications (2)

Publication Number Publication Date
CN106778100A true CN106778100A (zh) 2017-05-31
CN106778100B CN106778100B (zh) 2020-06-05

Family

ID=58913592

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611089866.XA Active CN106778100B (zh) 2016-12-01 2016-12-01 基于安卓平台和ios平台的混淆编译方法及混淆编译器

Country Status (1)

Country Link
CN (1) CN106778100B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595921A (zh) * 2018-03-22 2018-09-28 北京奇艺世纪科技有限公司 一种源代码中字符串的混淆方法和装置
CN109711118A (zh) * 2018-12-29 2019-05-03 上海上讯信息技术股份有限公司 一种基于插件化的iOS安全编译器及安全编译方法
CN110245467A (zh) * 2019-05-13 2019-09-17 西北大学 基于Dex2C与LLVM的Android应用程序保护方法
CN110597516A (zh) * 2019-08-27 2019-12-20 贝壳技术有限公司 插件化代码的混淆方法、装置、电子设备和存储介质
CN110765425A (zh) * 2019-10-25 2020-02-07 杭州涂鸦信息技术有限公司 一种对ios应用程序源代码进行混淆保护的方法及系统
CN110826031A (zh) * 2019-10-31 2020-02-21 北京东软望海科技有限公司 加密方法、装置、计算机设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130014256A1 (en) * 2009-12-30 2013-01-10 Gemalto Sa Jcvm bytecode execution protection against fault attacks
CN104615462A (zh) * 2015-01-26 2015-05-13 北京邮电大学 跨平台的移动应用生成服务端及系统
CN105005495A (zh) * 2015-06-23 2015-10-28 珠海金山网络游戏科技有限公司 一种游戏引擎
CN105103127A (zh) * 2013-02-28 2015-11-25 微软技术许可有限责任公司 基于编译器的混淆
CN105786513A (zh) * 2016-02-29 2016-07-20 四川长虹电器股份有限公司 基于Html5的混合移动应用开发方法

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130014256A1 (en) * 2009-12-30 2013-01-10 Gemalto Sa Jcvm bytecode execution protection against fault attacks
CN105103127A (zh) * 2013-02-28 2015-11-25 微软技术许可有限责任公司 基于编译器的混淆
CN104615462A (zh) * 2015-01-26 2015-05-13 北京邮电大学 跨平台的移动应用生成服务端及系统
CN105005495A (zh) * 2015-06-23 2015-10-28 珠海金山网络游戏科技有限公司 一种游戏引擎
CN105786513A (zh) * 2016-02-29 2016-07-20 四川长虹电器股份有限公司 基于Html5的混合移动应用开发方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108595921A (zh) * 2018-03-22 2018-09-28 北京奇艺世纪科技有限公司 一种源代码中字符串的混淆方法和装置
CN108595921B (zh) * 2018-03-22 2020-11-13 北京奇艺世纪科技有限公司 一种源代码中字符串的混淆方法和装置
CN109711118A (zh) * 2018-12-29 2019-05-03 上海上讯信息技术股份有限公司 一种基于插件化的iOS安全编译器及安全编译方法
CN110245467A (zh) * 2019-05-13 2019-09-17 西北大学 基于Dex2C与LLVM的Android应用程序保护方法
CN110245467B (zh) * 2019-05-13 2023-02-07 西北大学 基于Dex2C与LLVM的Android应用程序保护方法
CN110597516A (zh) * 2019-08-27 2019-12-20 贝壳技术有限公司 插件化代码的混淆方法、装置、电子设备和存储介质
CN110597516B (zh) * 2019-08-27 2023-10-20 贝壳技术有限公司 插件化代码的混淆方法、装置、电子设备和存储介质
CN110765425A (zh) * 2019-10-25 2020-02-07 杭州涂鸦信息技术有限公司 一种对ios应用程序源代码进行混淆保护的方法及系统
CN110826031A (zh) * 2019-10-31 2020-02-21 北京东软望海科技有限公司 加密方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN106778100B (zh) 2020-06-05

Similar Documents

Publication Publication Date Title
CN106778100A (zh) 基于安卓平台和ios平台的混淆编译方法及混淆编译器
CN103544414B (zh) 一种Android系统应用的深度代码混淆方法
CN106599628B (zh) 一种基于模块钩子的Python字节码文件保护方法
CN108595921B (zh) 一种源代码中字符串的混淆方法和装置
CN108363911B (zh) 一种Python脚本混淆、水印的方法及装置
CN101568927B (zh) 混淆计算机程序代码
CN100547590C (zh) 文档处理系统
CN105005718B (zh) 一种利用马尔可夫链实现代码混淆的方法
CN103413073B (zh) 一种保护java可执行程序的方法及设备
CN103218549B (zh) 一种Java源代码加解密的方法及装置
BRPI0614089A2 (pt) método para evitar engenharia reversa de software, modificação não autorizada e interceptação de dados de tempo de execução
CN108733988A (zh) 安卓平台上可执行程序的保护方法
CN103413075A (zh) 一种通过虚拟机保护java可执行程序的方法及设备
CN103927164B (zh) 一种脚本混淆方法及系统
Mir Copyright for web content using invisible text watermarking
CN103177199A (zh) 网页应用代码保护方法及系统和执行的提速方法及系统
CN110309631B (zh) 一种编程语言结构混淆处理方法、智能终端及存储介质
US8677149B2 (en) Method and system for protecting intellectual property in software
US20080292097A1 (en) System and method for text-based encryption
CN102236698B (zh) 可嵌入的项目数据
CN108460254A (zh) 固件保护方法及装置
CN113434148B (zh) 防解密客户端开发编译方法、装置、电子设备及存储介质
Gautam et al. A novel software protection approach for code obfuscation to enhance software security
CN112114809B (zh) 一种程序代码安全防护方法、装置及存储介质
CN114115959A (zh) App热修复方法及其装置、可读存储介质和计算机设备

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