Unicorn 是一个轻量级、多平台、多架构的 CPU 仿真器框架,基于 QEMU。
突出特点
-
多架构:ARM、ARM64 (ARMv8)、m68k、MIPS、PowerPC、RISC-V、S390x (SystemZ)、SPARC、TriCore 和 x86(包括 x86_64)。 -
干净/简单/轻量级/直观的架构中立 API。 -
用纯 C 语言实现,可绑定 Pharo、Crystal、Clojure、Visual Basic、Perl、Rust、Haskell、Ruby、Python、Java、Go、D、Lua、JavaScript、.NET、Delphi/Pascal 和 MSVC。 -
通过使用即时编译器技术实现高性能。 -
支持各个级别的细粒度检测。 -
设计上是线程安全的。 -
根据自由软件许可证 GPLv2 分发。
使用示例
「Qiling 框架」:跨平台、多架构的轻量级沙箱。
Linux 计算机上模拟 Windows EXE
使用 Qiling Framework 在 Linux 机器上模拟 Windows 二进制文件。
-
示例代码
from qiling import *
# sandbox to emulate the EXE
def my_sandbox(path, rootfs):
# setup Qiling engine
ql = Qiling(path, rootfs)
# now emulate the EXE
ql.run()
if __name__ == "__main__":
# execute Windows EXE under our rootfs
my_sandbox(["examples/rootfs/x86_windows/bin/x86_hello.exe"], "examples/rootfs/x86_windows")
模拟 Windows 注册表
使用 Qiling Framework 模拟 Windows 注册表
import sys
sys.path.append("..")
from qiling import *
from qiling.const import QL_VERBOSE
def my_sandbox(path, rootfs):
ql = Qiling(path, rootfs, verbose=QL_VERBOSE.DEBUG)
ql.run()
if __name__ == "__main__":
my_sandbox(["rootfs/x86_windows/bin/RegDemo.exe"], "rootfs/x86_windows")
动态修补 Windows crashme
使用 Qiling Framework 动态修补 Windows Crackme 并使其始终显示“恭喜”对话框。
from qiling import *
def force_call_dialog_func(ql):
# get DialogFunc address
lpDialogFunc = ql.unpack32(ql.mem.read(ql.arch.regs.esp - 0x8, 4))
# setup stack memory for DialogFunc
ql.stack_push(0)
ql.stack_push(1001)
ql.stack_push(273)
ql.stack_push(0)
ql.stack_push(0x0401018)
# force EIP to DialogFunc
ql.arch.regs.eip = lpDialogFunc
def my_sandbox(path, rootfs):
ql = Qiling(path, rootfs)
# NOP out some code
ql.patch(0x004010B5, b'x90x90')
ql.patch(0x004010CD, b'x90x90')
ql.patch(0x0040110B, b'x90x90')
ql.patch(0x00401112, b'x90x90')
# hook at an address with a callback
ql.hook_address(force_call_dialog_func, 0x00401016)
ql.run()
if __name__ == "__main__":
my_sandbox(["rootfs/x86_windows/bin/Easy_CrackMe.exe"], "rootfs/x86_windows")
下载
-
适用于 Windows/MacOS/Linux 的 Python 模块 – 二进制文件
通过 pip 或 pip3,您可以使用相同的命令为 Windows、MacOS 或 Linux 安装 Python 模块。
pip install unicorn
要从旧版本的 Unicorn 升级,请执行以下操作:
pip install unicorn --upgrade
如果需要,请记住在前面添加“sudo”以获取 root 权限。
-
适用于 MacOS 的 Brew 包 – 二进制文件
在 MacOS 上安装 Unicorn 的 Brew 包:
brew install unicorn
要从旧版本的 Unicorn 升级,请执行以下操作:
brew update
brew upgrade unicorn
传送门
开源协议:GPL-2.0
开源地址:https://github.com/unicorn-engine/unicorn
项目合集:https://github.com/RepositorySheet
-END-
原文始发于微信公众号(开源技术专栏):Unicorn一个轻量级的多平台、多架构CPU仿真器框架
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/166815.html