2023-04-11 23:32:57 +08:00
..
2023-04-11 23:32:57 +08:00

第十二章 逆向实战

12.1 案例实战

经过对AOSP源码的不断探索,对Android中应用深入了解,在最后一章中,将结合前文中学习的知识,来进行一个案例的实战,在实战的过程中,首先要对需求进行分析,然后将需要实现的目标进行拆分,最后对其逐一实现,最后组合并测试效果。

JniTrace是一个逆向分析中常用的基于frida实现的工具,在native函数调用时,c++代码可以通过JNI来访问Java中的类,类成员以及函数,而JniTrace工具主要负责对所有JNI的函数调用进行监控,输出所有调用的JNI函数,传递的参数,以及其返回值。

但是由于frida过于知名,导致大多数情况下,开发者们都会对其进行检测,所以在使用时常常会面临各种反制手段导致无法进行下一步的分析。为了能够躲避检测并继续使用JniTrace,逆向人员将其迁移到了更隐蔽的类Xposed框架中(例如LSPosed)。

而对比Hook的方案来说,从AOSP中修改,则完全不存在有Hook的痕迹,但是相对而言,开发也更沉重一些,因为需要对系统有一定的理解,并且需要重复的编译系统来进行测试。

在这一章的实战中,将讲解如何从AOSP的角度完成JniTrace这样的功能,并且使用配置进行管理,让其仅对目标进程生效,仅对目标native函数生效。

在前文讲解RegisterNative的输出时,注意到当时的处理将会对所有的进程生效,导致输出过于庞大,在,优化的处理也是从一个配置中,读取到当前进程是否为目标进程,才进行对应的打桩输出。在这个例子中的配置管理同样适用该优化。

12.2 需求分析