SDK加固产品介绍

  第三方SDK是第三方服务公司为了便于应用开发人员使用其提供的服务而开发的工具包,包括广告、支付、统计、社交、推送,地图等类别,其中封装了一些复杂的逻辑实现以及请求,也因其便捷性而得到广泛应用。但SDK自身可能存在潜在漏洞,一旦这些漏洞被利用发起恶意的攻击行为,将对用户的数据及隐私造成威胁,其影响范围和危害也不容小觑。

  针对SDK存在的安全隐患,通付盾提供了完善的解决方案,通过加密、加壳、高级混淆等技术对SDK程序进行安全防护,同时满足安全性、兼容性、性能及拓展性等要求,为移动应用提供全方位安全保障。


1、Android SDK加固

(1)函数级保护

  函数级保护区别与一般的整体保护方案,可以针对具体类的具体函数进行保护,需要加密指定类中的关键部分。与整体保护方案相比保护力度更细,安全性更强。

(2)代码虚拟化

  通付盾JAVA程序保护系统将代码虚拟化为虚指令。所谓虚指令是指可以脱离JAVA虚拟机执行的代码。与原本的JAVA字节码相比具有不可逆向的特点。

(3)VMP保护

  通付盾VMP是针对SDK本地代码jar文件的加固技术,以函数为单位进行虚拟化,将核心代码转换为在自定义虚拟机上运行的字节码,虚拟化之后的程序运行时的指令完全不同于机器原始指令,即使对加固后的程序进行反汇编,得到的也是无意义、不可读的代码,从而极大地提高了破解难度。

(4)防调试跟踪

  防调试跟踪是指防止逆向人员利用动态调试器(如Gdb、IDA等)对软件进行调试,以避免程序运行过程被逆向人员追踪,防止关键算法和敏感信息的泄露。防调试跟踪技术一般通过对调试器的特征检测来实现,如检测敏感进程名称、检测进程是否处于调试状态、检测反常权限、检测时间差、检测断点等。当检测到系统中存在调试器时,程序可做出适当的反应,如退出程序或执行异常处理等。

(5)脱壳工具对抗

  通过运行时对进程空间监控,以及底层Hook技术,防止脱壳程序进行内存Dump,有效对抗脱壳工具。

(6)内存保护

  内存保护技术通过监测内存数据(包括指令、跳转地址、数据等)的变化是否在预期的变化范围内,来判别是否受到内存攻击,以达到内存保护的目的。   通过加密SDK文件中关键部分,使得内存中存在的文件并不完整,防止通过Dump工具对内存进行窃取并还原SDK文件。防止使用Gdb和IDA等Dump有效的内存镜像。

(7)防外挂

  防止通过动态调试的方式对SDK进行调试,加固SDK在被调试,或者其内存被篡改后,加固SDK将自动退出。也可以防止通过进程调试的方式对加固SDK进行进程调试,加固SDK被进程调试的时候,加固SDK也将自动退出。经过通付盾加固系统加固后的SDK,可以防止市面上所有主流的外挂软件对加固APK进行内存修改,如GameGuardian,葫芦侠,叉叉修改器等主流外挂软件。

(8)防日志输出

  防日志输出是对打印日志的函数进行hook,当检测到调用log的函数被调用时,进入已经定义好的函数,输出空,实现防止SDK的日志打印的功能。

(9)模拟器检测

  根据项目需求可进行多种组合技术来检测安卓模拟器,相关技术如下:

  1)检测“/dev/socket/qemud”,“/dev/qemu_pipe”这两个通道;

  2)检测驱动文件内容,然后检查已知QEmu的驱动程序的列表;

  3)检测模拟器上特有的几个文件;

(10)jar包保护

  针对jar包代码、接口、核心逻辑进行加固保护,避免业务核心逻辑泄漏。

(11)zip包保护

  支持直接对zip包保护的支持,加固内容为zip包里面的全部jar包,包含代码、接口、核心逻辑进行加固保护,避免业务核心逻辑泄漏。

(12)SO文件保护

  对整个SO文件进行加密压缩,包括代码段、符号表和字符串等,运行时再解密解压缩到内存,从而有效的防止SO数据的泄露。


2、iOS SDK加固

  通付盾Ios SDK加固方案采用高级混淆技术,对SDK包中的代码块、数据流和控制流进行保护,从源头保护应用安全。

(1)数据流保护

  数据流保护,可以对SDK包中的指令集进行混淆保护。经过混淆保护后的函数代码中指令的复杂度加强,可读性降低,提高了SDK代码的安全性。

(2)指令替换

  指令替换主要是将代码中每条逻辑指令随机转换成等价的多条逻辑指令组合,增加攻击者对程序进行逆向分析和篡改的难度。比如,原表达式可以替换成任意相等式,或者通过随机数在多个相等式中做选择。

(3)控制流伪造

  控制流伪造,即在原代码块的前后随机插入新的代码块,通过条件判断跳转到原代码块中。对同一份代码多次做伪造加密,得到的是不同的混淆效果,增加逆向难度,提高SDK代码安全性。

(4)控制流保护   控制流保护,即通过编译器将SDK中的执行流进行打乱,混排。经过加固之后,函数的控制流图逻辑结构复杂度成指数倍增长,保证源码可读性降到最低。

results matching ""

    No results matching ""

    results matching ""

      No results matching ""