App加固技术功能发展

通过这几年的发展APP加固技术,不断得到快速迭代发展,加固的强度也在不断的提升。加固技术的发展主要经历:动态加载、内存不落地加载、指令抽取、指令转换、虚拟机保护。下面就分别对这些技术实现进行解析。

动态加载

Android动态加载加固技术用于保护App应用的逻辑不被逆向与分析,最早普遍在恶意软件中使用,它主要基于Java虚拟机提供的动态加载技术。由于动态加载技术主要依赖于java的动态加载机制,所以要求关键逻辑部分必须进行解压,并且释放到文件系统。这种动态加载技术不足之处在于:1.这一解压释放机制就给攻击者留下直接获取对应文件的机会;2.可以通过hook虚拟机关键函数,进行dump出原始的dex文件数据。

不落地加载

Android不落地加载技术,它是在动态加载技术的基础进行改进。它通过借鉴第一代加固的动态加载技术中,关键逻辑部分必须释放到文件系统的缺陷,它主要新增文件级别的加解密。文件级别的加解密技术主要有两种实现方案:1.通过拦截系统的IO相关函数,在这些系统的函数中进行透明加解密。2.直接调用虚拟机提供的函数,进行不落地的加载。这种文件级别的加解密不足之处在于:1.由于在App启动时需处理大量加解密操作,它会造成App启动卡顿假死或黑屏现象,用户体验感较差;2.由于它的内存是连续的,通过hook关键函数就可以获取到连续完整的dex数据。

指令抽取

android的指令抽取,主要在于函数基本的抽取保护。通过使用android虚拟机自带的解释器进行执行代码。将原始App中dex文件的函数内容进行清除,并将单独移动到一个加密文件中,在App运行的时候,再将函数内容重新恢复到对应的函数体。这一指令抽取技术的不足之处在于:1.使用大量的虚拟机内部结构,会出现兼容性问题;2.使用android虚拟机进行函数内容的执行,无法对抗自定义虚拟机;3.它跟虚拟机的JIT优化出现冲突,达不到最佳的性能表现。

指令转换/VMP

它主要通过实现自定义Android虚拟机的解释器,由于自定义解释器无法对Android系统内的其他函数进行直接调用,所有必须使用java的jni接口进行调用。这种实现技术主要有两种实现:1.dex文件内的函数被标记为native,内容被抽离并转换为一个符合jni要求的动态库。2.dex文件内的函数被标记为native,内容被抽离并转换为自定义的指令格式。并通过实现自定义接收器,进行执行代码。它主要通过虚拟机提供的jni接口和虚拟机进行交互。这一指令转换技术实现方案不足之处在于:在攻击者面前,攻击者可以直接将这个加固技术方案当做黑盒,通过实现自定义的jni接口对象进行内部调试分析,从而得到完整的原始dex文件。

虚拟机源码保护

通过利用虚拟机技术保护App中的所有代码,包括java、Kotlin、C/C++等多种代码,虚拟机技术主要是通过把核心代码编译成中间的二进制文件,随后生成独特的虚拟机源码,保护执行环境和只有在该环境下才能执行的运行程序。通过基于llvm工具链实现ELF文件的vmp保护。通过虚拟机保护技术,让ELF文件拥有独特的可变指令集,大大提高了指令跟踪,逆向分析的强度和难度。

App加固后的功能实现

字符串加密

将App的源代码中敏感字符串做随机加密处理。在运行时进行对字符串动态解密,这样就可以避免攻击者,通过利用工具进行静态逆向分析发现关键字符串信息,从而快速定位到应用中的业务代码。

控制流平坦化

将so文件中C\C++代码中的执行控制逻辑变换为平坦的控制逻辑,从抽象语法树层面进行深度混淆,使得其在常用反编译工具中,极大的降低反编译逆向代码的可读性,增加逆向代码的分析难度。

指令替换

对代码中的运算表达式进行等效转换,使其在常用反编译工具中,提高破解者逆向分析门槛,有效的保护核心算法的原始逻辑。

局部变量名称混淆:对源代码中的变量名称进行做混淆操作,混淆后变量名称变成无任何意义的名称。这给分析者加大了分析强度。

符号混淆

对App应用中的类名称、函数名称进行混淆操作,增大直接用工具分析难度,让反编译逆向工具,无法直接通过类名称、函数名称进行快速定位App的核心代码。

混淆多样化

采用在混淆过程中引入随机性技术,在相同的混淆策略下,每次混淆后的代码均不一致,进一步提升攻击者通过利用工具进行静态分析的难度。

不透明谓词

将代码中分支跳转判断条件,由原来的确定值变为表达式,增加程序逻辑的复杂性、降低代码的可读性。

防动态调试

对App应用进行防调试保护、检测到配置防动态调试功能的类、方法、函数被IDA逆向工具进行动态调试时候,App应用进行自动退出运行操作,有利于保护App应用直接被动态调试,从而提高攻防对抗的门槛。

防动态注入

对App应用进行防动态注入保护,当利用zygote或ptrace技术进行App应用的注入操作时,App应用进行自动退出运行操作,以此进行防御攻击方对App应用的非法操作,避免动态分析执行代码,从而达到动态保护App应用安全。

HOOK检测

对App进行防HOOK保护,检测到配置防hook保护功能的类名、方法名、函数名在被frida、xposed等工具动态hook时候,App进行自动退出操作,以此进行提高防御App安全性,保护App不被注入攻击,抵御恶意侵入。

代码段检验

对App应用中的代码段进行完整性校验,发现代码段被篡改,App应用进行自动退出运行,防止App应用中的代码逻辑被篡改,以此进行动态保护App的源代码安全性。

完整性校验:对App中指定的函数级进行完整性校验,当应用被重新签名和代码的完整性遭到破坏时候,检测点进行触发App程序闪退,以此抵御主流的调试器调试分析,从而达到动态保护程序安全。

通过实现源到源的虚拟化保护,加强了源代码的安全性。通过多样化静态防护手段,实现控制流混淆;字符串加密;符号混淆等多样化手段全方位保护代码,大大的提高代码静态逆向能力,让被逆向的代码无法被理解。通过强大动态防护手段,防止代码逻辑被篡改;保护源代码对抗主流调试器,避免源代码被动态分析执行,防HOOK技术保护代码不被注入攻击,提高动态逆向分析的门槛。

顶象App加固技术介绍

顶象App加固技术是经过市场考验的成熟技术,它是基于目前领先的加固技术,虚机源码保护技术,良好兼容Java、Kotlin、C/C++等多种语言。可以保护Android的DEX、配置、SO等16种数据和文件安全,可有效侦测对抗动态调试、代码注入、内存dump、root环境、多开环境、模拟器、重打包等风险。

顶象App加固提供了一套完整的工具链,首先把App代码编译成中间的二进制文件,随后生成独特的虚机源码保护执行环境以及只能在该环境下执行的运行程序。也就是虚机源码保护会在App内部隔离出独立的执行环境,该核心代码的运行程序在此独立的执行环境里运行。即便App本身被破解,这部分代码仍然不可见。

顶象App加固自带“蜜罐”功能(一种针对攻的欺骗的术,诱使攻击方实施攻击,从而可以有效捕获攻击行为并对其机型分析,进而通过技术和管理手段来增强实际系统的安全防护能力),可以通过自身的探针感知到环境的变化,实时探测到外界对本环境的调试、注入等非正常执行流程变化,将调试动作引入程序陷阱,并发出警报,进而进行实时更新,进一步提高安全强度。

此外,顶象App加固率先支持对iOS免源码加固,提供代码混淆、字符串混淆、符号混淆、指令虚化、防调试、反编译、防Class dump的保护,并支持Bitcode输出。

App加固技术总结

通过App加固技术不仅可以提高对逆向后的代码阅读难度、而且有利于降低App被破解、插入病毒、木马、后门程序等恶意代码的风险,同时也能增强用户隐私数据、交易数据的安全性。通过App加固技术,也是为了更好应对国家对App安全合规监管检测的标准,降低App被第三方媒体曝光,从而严重影响企业品牌形象和信誉,为企业和开发者的业务正常发展保驾护航。

随着加固技术的快速发展和攻防对抗技术的快速迭代,而虚拟机源码保护技术作为当前主流的加固技术,相信在未来很长一段时间,它会一直占据主导且领先的地位,因为通过对源码的虚拟化保护,从而能够为App提供足够强度的保护。

从第一代到第五代,App加固技术详解相关推荐

  1. APP加固技术历程及未来级别方案:虚机源码保护

    传统App加固技术,前后经历了四代技术变更,保护级别每一代都有所提升,但其固有的安全缺陷和兼容性问题始终未能得到解决.而下一代加固技术-虚机源码保护,适用代码类型更广泛,App保护级别更高,兼容性更强 ...

  2. iOS APP上架流程详解

    iOS APP上架流程详解 青葱烈马 2016.04.28  前言:作为一名 iOS 开发工程师, APP 的上架是必备技能. iOS 上架的流程主要可以简单总结为: 一个包,两个网址,三个证书, 一 ...

  3. Android M新特性Doze and App Standby模式详解

    转载请标明出处:http://blog.csdn.net/xx326664162/article/details/52312122 文章出自:薛瑄的博客 你也可以查看我的其他同类文章,也会让你有一定的 ...

  4. 【Google Play】App Bundle 使用详解 ( 应用模块化 )

    Google Play 上架完整流程 系列文章目录 [Google Play]创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 ) [Google Play]创建并设置应用 ( 访 ...

  5. 【Google Play】App Bundle 使用详解 ( 简介 | 应用内更新 | 即时更新 | 灵活更新 )

    Google Play 上架完整流程 系列文章目录 [Google Play]创建 Google 开发者账号 ( 注册邮箱账号 | 创建开发者账号 ) [Google Play]创建并设置应用 ( 访 ...

  6. Android  Doze and App Standby模式详解

    Android  Doze and App Standby模式详解 来源:腾云阁 https://www.qcloud.com/community Optimizing for Doze and Ap ...

  7. 【线上沙龙直播报名】App 启动流程详解及其优化

    点击上方"公众号"可以订阅哦 [美团点评技术沙龙Online]是美团点评技术团队推出的线上分享课程,每月2-3期,采用目前最火热的线上直播形式,邀请美团点评技术专家,面向互联网技术 ...

  8. 小区物业app开发功能详解!

    小区物业app开发功能详解!小区物业app开发通常整合了物业服务.物业维修.物业管理和物业缴费等功能,物业管理通过app开发去收集业主的信息,再通过app去告诉业主每个月最常见的水电费.管理费等信息, ...

  9. 顶象App加固技术解析:DEX文件格式的详解

    Android应用的源代码主要分为java与C/C++两部分,其中java编译后的文件是DEX文件,也是Android Dalvik虚拟机运行的程序,因此也是基于Android平台的虚机应用很难绕过的 ...

最新文章

  1. Arm Cortex-M23 MCU,Arm Cortex-M33 MCU与RISC-V MCU技术
  2. Eclipse与AndroidStudio快捷键对比
  3. 类的笔记整理__7-10__
  4. PEP 0498 -- Literal String Interpolation 翻译(未完待续)
  5. linux查看系统版本_轻松查看Win10系统版本、版本号的技巧
  6. win7的vmware中安装ubuntu 13.04看不到共享目录
  7. 2013年完美世界校园招聘笔试题
  8. asp.net2.0跨域问题
  9. 无线运维——J2ME和WAP运维方式的优缺点
  10. 重启Windows的PowerShell
  11. windows下使用labelImg标注图像
  12. vue+element实现一个excel表格下载的功能
  13. 致初级软件开发人员并自勉
  14. 187. 重复的DNA序列
  15. 1:Web开发入门-Java Web
  16. (一)计算机系统基础之冯诺依曼结构主要思想
  17. 读后感:李敖先生北大演讲
  18. 年轻人如何创业(如何创业白手起家)
  19. jsp科学健身交流指导平台
  20. 日本生活随感之 - 深入血液的服务观念

热门文章

  1. 【传智播客郑州校区分享】JQ插件机制
  2. qt/moc_optionsdialog.cpp:129:1: error: initializer-string for array of chars is too long
  3. 获取bing壁纸php,php获取bing每日壁纸示例分享
  4. python图像分割_Python图像处理库(2)
  5. springboot集成mqtt相关配置+案例
  6. 物联网(IoT)技术领域-lora技术简介及相关技术间的对比分析
  7. 微信小程序云开发教程一
  8. Qt QTranslator多语言翻译例子
  9. 利用定时器 1和定时器0控制led1和led2分别 2hz和0.5hz闪烁
  10. 系统辨识专题(二)——多旋翼飞行器建模