前言
Android应用的安全问题在业内备受关注,但这方面相关的系统性资料却不多。本书从Hook框架Frida出发来讲解如何对Android应用的协议进行分析。
这本书讲了什么
本书共8章,全书整体围绕Frida框架进行讲解,并配合大量实战,相信会让读者学会该框架的使用方法。
第1章介绍的是在Android系统下使用Frida框架进行逆向的环境搭建。当然这里安装的环境只是最基础的环境,实际上Android逆向需要配置的环境比这多得多。比如反编译dex需要的jadx、jeb工具,反编译so文件需要的IDA工具,开发App应用程序需要的Android Studio,以及各种抓包工具等。不过,一开始能够掌握最基本的逆向工具就已经足够了。
第2章主要介绍Java层的逆向分析,Android应用最常见的代码都存放在Java层,因此对熟悉Android正向开发的读者来说,学习逆向也是较为简单的。配合本章的实战,学习完这章之后,一般较为简单的Android应用的协议分析读者就都可以解决了。
第3章主要介绍关键代码快速定位,看似只是一堆分散的技巧罗列,实际上是进行逆向工作最基本的方法。因为在实际的逆向分析中,不可能去逐行查看反编译后的代码,而只凭感觉定位也是不够的,这里把一些常用的定位方法总结起来,能够帮助读者快速提高逆向效率。
第4章介绍了算法“自吐”脚本的开发,本章的内容比较重要,因为它摆脱了以往将纯逆向视为体力劳动的片面思想,进入了更抽象的框架开发。基于Frida的框架开发并不难,所谓熟能生巧,把日常逆向工作中常用的操作封装起来,就可以慢慢积累成框架。读者可以在完成本章的学习后对“自吐”框架进行完善,增加更多功能。
第5章介绍了so层的逆向分析,只要是有志于在逆向分析领域有所精进的逆向工作者,都必须学会so层的逆向分析,因为一般有难度的Android应用都会使用so层加密。
第6章介绍了JNI函数的Hook和快速定位,在so层逆向分析中,经常需要和JNI函数打交道,掌握JNI函数的Hook是必要的。
第7章讲解内存读写、各种系统函数的Hook,以及各种代码的trace方法。
第8章介绍了Frida框架算法转发方案,能够将Android应用本身当作解密工具,也可以建立解密API方便调用。
学习本书需要注意的事项
书中的Hook框架Frida在命令中多是首字母小写形式frida。
App应用程序指的是Android系统下的APK。
当提到某函数的参数个数是3,指的是从1开始共3个参数。
当提到某函数的第3个参数,指的是从0开始的第4个参数。
另外,本书的初衷是为了让读者掌握Frida这一Hook框架,并将其用于工作和学习当中,为避免对书中提供的案例造成不利影响,本书对涉及的具体应用名和包名都会进行省略。
什么人适合看这本书
本书是零基础,可以说,只要是对Android应用安全感兴趣的人都可以阅读。当然,具有一定Android开发基础的人读起来会更加轻松。值得一提的是,当下热门的网络爬虫,在对Android应用进行数据爬取时,必然要用到书里的知识。本书贵在实用,没有讲解大量简单的基础知识,而是以实战为主,对大量实际Android应用进行分析,跟着书中内容认真操作会让你飞速进步。
本书的资源有哪些
本书的学习需要配合卓斌开发的Android测试应用,因为书中的实操大多是在该应用程序上实践的。此外,也会为读者提供书中进行逆向分析的案例样本和所有代码(扫描封底二维码即可获得),而且部分章节还配有视频(扫描书中二维码即可观看)。
读者如果在操作过程中有任何问题,或者有解决不了的难题,欢迎联系我们,可以添加微信(xiaojianbang8888或者Charleval),也可以加入读者QQ群945868932。本人和卓斌致力于安全逆向教育多年,涉及领域包括网络爬虫、JavaScript逆向、Android逆向、深度学习图像识别等。读者有进一步学习的想法,或者对于书中的知识有任何问题,都可以通过以上渠道联系我们,我们可以共同讨论解决。
由于编者水平有限,对书中的不足之处,恳请读者批评指正。
李岳阳