神奇之处:

模拟CPU去执行程序或程序中的某个片段,某个函数,并且支持多个架构(Arm, Arm64 (Armv8), M68K, Mips, Sparc, & X86 (include X86_64)),也就是说,只需要用代码声明一下程序运行所需要的架构,所需要的栈空间,运行基址等,程序就可以模拟执行了

unicorn-engine 是不能调用syscall的,指令模拟的时候跳转的位置及相应的指令块没有被加载到模拟器中,那模拟时肯定是会有异常的

假设unicorn-engine是一个牢房,关押了来自不同地方的人(具有不同CPU架构的程序),牢房对他们的信息了如指掌,提审哪一个犯人都可以,并且可以对他们执行任何酷刑(对程序执行内存读写和栈读写等操作),但是对他们的同伴的信息却知之甚少(没加载到模拟器的指令块)。貌似这个比喻并不恰当,但是有助于我的个人理解。

安装方法:

Linux上的安装方法:

pip install unicorn

其余平台可进入官网下载源文件编译安装

使用方法:

可以参考看雪翻译的Unicorn引擎教程

相关资料

整理了几个比较好的资料,因为我学习的时候发现基本上都是在照着Eternal Stories的这个写的,所以整理了几篇不错的文章:

  1. Unicorn引擎教程
  2. 基于-unicorn-的单个函数模拟执行和-fuzzer-实现
  3. Unicorn Engine 简介

好的文章都要立马转成pdf存到盘里,谁知道哪天博主一生气,好文章就没了呢。



Tools      unicorn-engine reverse tool

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!