Unicorn 是一个模拟执行框架(仿真工具),该框架可以跨平台执行Arm, Arm64 (Armv8), M68K, Mips, Sparc, X86 (include X86_64)等指令集的原生程序。
Unicorn 不仅仅是模拟器,更是一种“硬件级”调试器,使用Unicorn的API可以轻松控制CPU寄存器、内存等资源,调试或调用目标二进制代码,现有的反调试手段对Unicorn 几乎是无效的。
Frida 在函数级别工作,在某些情况下,我们可能需要在基本块级别或指令级别(即在插桩上有 hooks)上具有更细的粒度。
为了解决这个限制,常用的一个技巧是将hook与仿真结合起来。我们可以使用 Frida来hook我们感兴趣的函数,然后我们可以转储 CPU 上下文和进程的内存状态,最终通过 Miasm 或 Unicorn 这样的模拟器继续执行。
参考:
https://zhuanlan.zhihu.com/p/79861614