unicorn教程一

http://www.unicorn-engine.org/docs/tutorial.html
先来了解下什么是unicorn引擎。。
Unicorn 是一个轻量级, 多平台, 多架构的 CPU 模拟器框架. 我们可以更好地关注 CPU 操作, 忽略机器设备的差异. 想象一下, 我们可以将其应用于这些情景: 比如我们单纯只是需要模拟代码的执行而非需要一个真的 CPU 去完成那些操作, 又或者想要更安全地分析恶意代码, 检测病毒特征, 或者想要在逆向过程中验证某些代码的含义. 使用 CPU 模拟器可以很好地帮助我们提供便捷.
它的亮点 (这也归功于 Unicorn 是基于 qemu 而开发的) 包括:
支持多种架构: Arm, Arm64 (Armv8), M68K, Mips, Sparc, & X86 (include X86_64).
对 Windows 和 nix 系统 (已确认包含 Mac OSX, Linux, BSD & Solaris) 的原生支持
具有平台独立且简洁易于使用的 API
使用 JIT 编译技术, 性能表现优异

那么它应用的场景有哪些呢?
• 你可以调用恶意软件中一些有趣的函数, 而不用创建一个有害的进程.
• 用于 CTF 竞赛
• 用于模糊测试
• 用于 gdb 插件, 基于代码模拟执行的插件
• 模拟执行一些混淆代码
这款神器是在2015年BlackHat大会上发布的,作者的ppt可以在这儿下载到
http://www.unicorn-engine.org/BHUSA2015-unicorn.pdf
在具体操作演示之前,我们简要看看作者所做的一些介绍
在这里插入图片描述
上图是作者的议题流程,我们只介绍红圈部分,具体使用unicorn提供的API进行编程是本系列实验的中心任务,在这一部分暂时先不提及。
Unicorn的设计目的就是称为一款轻量级的CPU模拟器(或称仿真器)
首先要明确CPU模拟器的应用,包括:
不需要真实的CPU就能模拟代码;可以安全地分析恶意代码,侦测病毒签名;在逆向工程中明确代码的含义
CPU模拟器的定义是仅用软件来模拟物理CPU,只关注CPU操作,而忽略机器设备。
在CPU模拟器内部,给定二进制形式的输入代码,CPU模拟器需要:
1.将二进制代码解码为单独的指令
2.精确地模拟每个指令所做的工作,涉及:参考所需的指令集手册,处理所需的内存访问及IO等
3.在每一步执行后更新CPU上下文,包括寄存器、内存等。
以模拟x86 32位的指令为例,所以的工作如下所示
在这里插入图片描述
可以看到要做一个CPU模拟器,工作量很大,而且需要对CPU架构、指令集有精通理解,还需要知道指令集的一些副作用(文档里不会提及,但是经验丰富的人都清楚),而且重点是需要支持所有已知的各种类型的代码,这是非常困难的
一个好的CPU模拟器需要具备以下特点:多种架构支持、多平台支持、保持更新,尽量保持独立减少对其他工具的依赖,性能高

评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值