Android将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也恰当保护用户的数据、应用程序和设备的安全。Android安全模型主要提供以下几种安全机制:
- 进程沙箱隔离机制
- 应用程序签名机制
- 权限声明机制
- 访问控制机制
- 进程通信机制
- 内存管理机制
在实际的开发场景中,我们经常碰到有相关防反编译的需求与多渠道的信息采集,前者是为了将APK加固处理后阻碍对方对于我方代码进行反编译,几乎对于任何厂商来说加固都是一个必需品,**如果开发出的APP能够轻易被反编译破解掉,那么所造成的影响将是致命的,无异于裸奔!**我们需要了解加固原理才能不断的根据不同情况对于自己的APP进行处理,在破解和防护的过程中,只有对于原理有足够的了解才能做到让别人猜不到你的想法。
一般在Android应用开发完成后,除了使用Google官方的混淆外,还需要使用一些第三方的安全软件的加壳处理,比较出名的有腾讯乐固、360加固和爱加密等。
加固工具的出现,让反编译的难度更大,但是有了加固技术,就会有反加固技术。各种各样的逆向破解工具使得反编译更容易,而面对当前这种场景我们需要有自己的独立加固手段才能更好地有效防御外部的破解,同时从原理层面去研究APK的破解与加密双向流程,因为不管是腾讯的乐固还是360的加固等工具其原理都是一条线。
那么,如果需要我们自己去进行自定义对于APK进行加固处理需要我们掌握哪些呢?
我们需要对几个核心内容进行掌握,并且加以组合。
- 热修复原理,HOOK技术
- 反射技术与framework层反射
- android dex文件加载流程
- APK打包整体流程与原理
- 加密手段与加密原理
通过对于上述内容的组合形成一套有效的加固手段,**安全是场攻防战,只有对攻击深入理解才能做到有效防御,任何高深的技术都是由基础构成的,Apk的安全问题不容忽视。**但不少开发者因为对于原理掌握不牢,而缺乏有效的防御手段,不知不觉中就造成了公司的损失,这是非常不应该的。
而后者则是对于运营推广有强需求的APP是一个必备的,我们会碰到当前产品需要推广进行广告投放,而后需要对于投放渠道的相关数据进行统计,现在android渠道多种多样,渠道不仅仅局限于应用市场,任何一种推广方式都可以看做一个渠道,比如:通过人拉人的方式去推广、官网推广、百度推广、抖音等,主流的APP往往有成百上千的不同渠道。有时候一次也会打近百个或者是更多的安装包,但是现有的工具打包对于我们来说太慢了,如果仅仅依靠现有的工具打包,那你半天或者一天都在打包的路上,效率太低!
因此,我们需要一套高效的渠道打包方案,能够快速的一次性生成成百上千个对应不同渠道的包,而想要定制一套这样的方案,我们必须对APK打包原理与签名原理有足够的了解,这样我们可以绕过android的签名机制对APK进行信息注入,那么只需要不断的复制已经打包好的APK文件而不用去走APK整体的打包流程,将原本一个包需要分钟级的时间降低到秒级。
那么就必须要了解:
- APK打包原理
- 渠道包构建生成原理
- Android V1/V2/V3签名原理
- 如何在不破坏签名的情况下去注入信息
- ……
如果你还没有掌握,现在想要在最短的时间里吃透它,这里根据上述中所提到的知识点进行整理了,这样大家学习起来也比较方便,大家可以综合起来一起学习。参考方式:https://qr18.cn/CQ5TcL
Android 逆向安全学习笔记:https://qr18.cn/CQ5TcL
Android 逆向模拟器环境搭建(详解)
Smali指令详解
加壳和脱壳入门
NDK与逆向:https://qr18.cn/CQ5TcL
Xposed框架
Frida-逆向开发的屠龙刀
安卓逆向之常用加密算法
参考方式:https://qr18.cn/CQ5TcL