基于Frida-RPC模拟执行so文件

在 13.8 节中,我们使用 IDA Pro 对 so 文件进行了逆向处理,还原了其中的一些逻辑,把汇编代码转化为了可读性更好的 C/C++ 代码,再加以适当的动态调试,便找出了 so 文件中隐含的加密算法。

但 so 文件本身也可以设置一定的保护措施。我们已经在 11.1 节了解了 JavaScript 的混淆机制,混淆之后的 JavaScript 代码可读性变得非常差,会给我们分析带来很大的难度。同理,如果在 so 文件中添加了一些混淆机制,那么 so 文件内部的代码逻辑也会进一步变得不可读,即使把其内容转化为 C/C++ 代码,也难以阅读和分析,这就是 Native 层的混淆。

在 Native 层实现混淆,常用的技术是 OLLVM,即针对 LLVM 的代码混淆工具。

OLLVM 的简介

案例介绍

解决思路

准备工作

实战

总结

本节我们介绍了利用 Frida-RPC 技术模拟执行 so 文件的过程,在这个过程中我们不需要关心 so 文件内部的混淆机制,对 so 文件纯黑盒调用即可得到关键信息。

本节的一些对 OLLVM 和 LLVM 的概念介绍,部分参考自下面两个内容。

  • 看雪论坛上的 “ollvm 快速学习” 文章。

  • CSDN 网站上的 “OLLVM 环境搭建、源码分析及使用” 文章。