充电学习中...
浅谈安卓逆向工程-注入篇 写在前面 何为注入(Inject)? 不同于Spring框架中常常提到的依赖注入,逆向工程中的注入往往更贴合其原本的含义,即将代码注入到目标进程中去,这些被注入的代码可能用于分析、监控目标进程行为,同时也有可能被用于其他恶意目的。 本文将结合市面流行的注入工具框架,通过注入时机、方式、目标、范围等维度对Android平台的注入做一个更加全面的剖析。另外,需要说明的是,通过修改Rom重新编译镜像的方式进行代码注入只能适用于特定机型,一般很少用于生产阶段,因此本文将排除这种方式。 内核态的注入 与用户态的各种应用服务相比,内核态更接近设备的硬件层(HAL),配合驱动程序可以直接操作硬件,同时也往往拥有更高级别的权限。Android使用的是较老版本并且精简过的Linux内核,内核和Android系统是相互独立的,因此正确的内核刷写并不会影响Android系统的使用,但是由于不同机型使用的内核不尽相同,错误的刷机操作可能导致设备变砖,通用性较差,因此本文不讨论重新编译内核刷入的注入手段,而是着眼于从内核驱动角度进行注入。 二进制补丁+内核驱动 既然注入的宗旨即注入代....