首页> 中国专利> 基于安卓平台和IOS平台的混淆编译方法及混淆编译器

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

摘要

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

著录项

  • 公开/公告号CN106778100A

    专利类型发明专利

  • 公开/公告日2017-05-31

    原文格式PDF

  • 申请/专利权人 北京智游网安科技有限公司;

    申请/专利号CN201611089866.X

  • 发明设计人 郭训平;林魏;严智慧;

    申请日2016-12-01

  • 分类号G06F21/14(20130101);

  • 代理机构44311 深圳市鼎言知识产权代理有限公司;

  • 代理人张利杰

  • 地址 100080 北京市海淀区中关村大街11号811A

  • 入库时间 2023-06-19 02:19:08

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2020-06-05

    授权

    授权

  • 2017-06-23

    实质审查的生效 IPC(主分类):G06F21/14 申请日:20161201

    实质审查的生效

  • 2017-05-31

    公开

    公开

说明书

技术领域

本发明属于代码混淆技术领域,具体地涉及一种基于安卓平台和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的代码进行混淆编译,从而不会对混淆后的文件的符号表造成任何影响。

对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。

此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。 。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号