加固

为何需要加固

目前大多数的Android 是用Java语言写的,即使现在Google非常力荐Kotlin,但它编译之后生成的仍然是基于Java虚拟机的字节码。 但是Java的基本类库(JDK)是开源的,这就使很多Java开发的应用被逆向破解的门槛很低。目前市面上有大量的逆向破解工具,例如:Dex2Jar、JEB、JD-GUI等等。只要懂代码编程,利用这些工具就可以破解市面上那些防御薄弱、存在大量安全漏洞的App。 因此,各类型移动应用尤其是金融类大型应用需要通过深度加固、加壳保护等安全技术手段,才能最大限度规避开发者信息泄露、病毒攻击等安全隐患。

加固是如何保护APK不被破解呢?

简单来说,加固就是对源Apk进行加密,然后再套上一层壳。用加密算法对源Apk进行加密,再将壳Apk进行合并得到新的Dex文件,最后替换壳程序中的dex文件得到新的Apk,这个新的Apk已经不是一个完整意义上的Apk程序了,它的主要工作是负责解密源Apk,然后加载Apk,让其正常运行起来。 目前,各大互联网公司都会自己的应用程序进行加固保护,像360公司、腾讯等都有对外开放自己的服务。

看了很多加固工具的官网,加固的过程都是上传签名的APK包到官网页面或使用相应的桌面程序进行上传,这个过程需要人工进行上传,而360加固提供了一个加固工具包,我们可以编写脚本来调用其中的加固程序进行自动化加固。 现在我们了解了加固的原理,安全是场攻防战,只有对攻击深入理解才能做到有效防御。

加固后的APK又如何对其进行逆向呢? 加固 - 图1

看雪逆向课程

课程大纲

加壳与脱壳2020

加壳和运行时的机制:01逆向分析和脱壳的意义 加壳和运行时的机制:02.ClassLoader和动态加载 加壳和运行时的机制:03.加壳APP运行流程和ClassLoader修正 课时4:一二三代壳和加壳技术分类识别 课时5:Dalvik下一代壳通用解决方案 课时6:ART下一代壳通用解决方案 课时7:ART下抽取壳实现 课时8:FART中的脱壳点(本章限时免费) 课时9:FART使用场景和流程

安卓APP加壳与脱壳

课时1上:基本逆向环境配置 课时1下:基本逆向环境配置 课时2上:体验FRIDA轻量化内存dump脱壳 课时2下:体验FRIDA轻量化内存dump脱壳 课时3上:加固技术一览 课时3下:加固技术一览 直播32上 课时4上:市面App加固情况简析 课时4下:市面App加固情况简析 直播32下 课时5上:App的类加载器 课时5下:壳的动态加载及修复流程 课时6上:dex壳的种类特征和判定 课时6下:编译安卓源码准备制作脱壳机 直播33 课时7上:沙箱脱壳机的核心原理 课时7下:动手实践一个简易沙箱脱壳机 课时8:二代壳对方法体的静态抽取过程和动态回填过程 课时9:更强抽取壳的DUMP组件理论分析和脱壳实战 直播34 直播35