购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

Preface
前言

写作背景

现在的App,只要是稍微对安全有一些要求的,都会把核心逻辑、加解密算法或者保护机制,比如一些反调试手段,使用NDK开发的方式写到Native库中,最终生成so文件。

so文件的逆向比Java层的DEX要困难很多,如果文件中还有比较严重的混淆或者花指令的话,可能连正常的反编译都成问题,更不用说查看它采用的是什么算法了。不仅如此,现在ARM平台上还出现了让算法完全消失的虚拟机保护(Virtual Machine Protect)技术,该技术通过自定义字节码的方式实现一套自己的CPU。如果不能理解这套虚拟机的运行流程,逆向算法便无从谈起。

下图为一个经过OLLVM强混淆的简单RC4算法,仅仅几行代码就能混淆出千头万绪、杂乱无章、面目全非的数万行伪代码。如果再嵌套几个手写的非标准算法,还原难度可以达到“地狱级”。

“兵来将挡,水来土掩。”幸运的是,随着技术的发展,可以应对这样场景的对抗方案出现了。正如AlphaGo在大战李世石时依赖暴力下棋法一样,我们也可以不还原某段算法,而是凭借现代计算机的超高算力,直接暴力执行这段算法。

在模拟执行的过程中,算法是黑盒,我们并不直接分析这个黑盒,而是直接让它运行,它需要什么我们就给它补充什么,以确保它能顺利地执行完算法,生成我们需要的结果。

这个模拟执行的框架就是unidbg。

本书特点

1)由浅至深。我们先让unidbg框架运行起来,比如能够加载so文件,完成基础的补环境,排除基本报错,支持Hook功能,执行so文件中的算法。待基本的使用没有问题之后,再进阶到原理部分,详解so文件是如何加载和运行的,以及内存、信号、虚拟机、系统调用等是如何模拟真实的Android系统环境的,带领大家实现一个类似框架。

2)授人以鱼,同时授人以渔。在使用unidbg框架的时候,各种报错千奇百怪,尤其是难以定位的内存问题。很多时候,在A处没有进行处理或者初始化,却在B处报错。此时如果不能进行全局综合分析,或者缺乏对so的初始化和函数调用流程的完整把握与清晰认知,那么我们将无从下手。因此在学习本书的过程中,更重要的是知识深度与广度的积累,只有真正理解并掌握unidbg的原理,高屋建瓴、把握全局,最终才能做到游刃有余。

3)内容翔实、丰富,实用性强。本书介绍unidbg的方方面面,从应用到原理,从案例到检测,不仅可以运行算法,还可以辅助算法还原,因此可以作为unidbg的操作宝典来学习、参考。

阅读对象

本书是一本理论与实战并举,全方位介绍unidbg的使用、原理及实现细节的著作,适合以下几类读者阅读:

❏移动应用安全方向的安全工程师。

❏计算机组成原理和软件模拟方向的应用开发者。

❏自动化领域的爬虫工程师。

❏反欺诈/风控领域的安全工程师。

如何阅读本书

本书共31章,分为4部分。

第一部分(第1~3章) 进入unidbg的世界。 通过阅读该部分,读者可以简单了解unidbg的基础知识,通过unidbg执行一些基本的操作,包括环境准备、so文件加载、简单补环境、Hook和Patch的方法等。

第二部分(第4~15章) unidbg原理。 由于unidbg主要是用Java写的,代码比较通俗易懂,且核心原理参照的是Android系统,可以说是一个缩小版AndroidLite,因此如果有哪部分看不懂,可以直接参考Android源码。读完该部分,读者会对unidbg核心原理有比较完整的认识。

第三部分(第16~26章) 模拟执行与补环境实战。 该部分主要介绍unidbg实战中的各种具体技术案例,如I/O重定向、Debugger自吐、指针参数与Debugger、魔改Base64还原、使用unidbg动态分析内存中的数据、使用unidbg主动调用fork进程,并对补环境中的补环境入门、标识记录、设备风控、补环境加强等进行分析,指导读者编写实际的补环境代码,更好地将理论知识运用于实践。

第四部分(第27~31章) 反制与生产环境部署。 该部分介绍环境变量检测、xHook框架检测、JNI层常见函数处理等,并对常规检测进行总结,还介绍通过检测之后如何把so部署到x86服务器上运行。该部分是大家最关心的批量生产与对抗的内容,也是最敏感的支持风控数据与决策的内容,对于打击黑灰产、遏制网络犯罪有着非常积极的意义。

资源与勘误

由于知识的动态发展和不断更新,加之笔者水平有限,书中难免有考虑不周之处,还望读者海涵。读者可以在GitHub上提issue,与笔者一起讨论,地址为https://github.com/r0ysue/UnidbgBook。本书相关资源也会上传到该地址,读者可自行下载、查阅。

致谢

感谢我的父母。感谢凯R开源unidbg这个功能如此强大的框架。感谢bxl、冻鱼战神、Forgo7ten,感谢看雪学院和段钢先生,感谢寒冰冷月、imyang、灰翔的猫,感谢白龙、寄予蓝,感谢葫芦娃、非虫,感谢52pojie、国防科技大学,是你们的支持和帮助让这本书顺利面市! RX1rfYyyZvk4sLHHXvXzxKhghFGAANGRCn7O/5oD/xuhO1GuUC+YGUGPaoVQmzny

点击中间区域
呼出菜单
上一章
目录
下一章
×