Unicorn一个轻量级的多平台、多架构CPU仿真器框架

Unicorn 是一个轻量级、多平台、多架构的 CPU 仿真器框架,基于 QEMU。Unicorn一个轻量级的多平台、多架构CPU仿真器框架

突出特点

  • 多架构: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、PythonJava、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

(0)
小半的头像小半

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!