网站建设、公众号开发、微网站、微商城、小程序就找牛创网络 !

7*24小时服务专线: 152-150-65-006 023-68263070 扫描二维码加我微信 在线QQ

开发工具团结互助,让我们共同进步!

当前位置:主页 > 技术资讯 > 工具 > 开发工具 >

我们的优势: 10年相关行业经验,专业设计师量身定制 设计师一对一服务模式,上百家客户案例! 企业保证,正规流程,正规合作 7*24小时在线服务,售后无忧

Qiling:功能强大的高级代码模拟框架,工具由Unicorn引擎驱动,跨平台支持,跨架构支持,多文件结构支持

文章来源:重庆软件开发 发布时间:2020-02-17 14:01:30 围观次数:
分享到:

摘要:Qiling是一款功能强大的高级代码模拟框架,工具由Unicorn引擎驱动,跨平台支持,跨架构支持,多文件结构支持。

Qiling是功能强大的高级代码仿真框架。 该工具由Unicorn引擎驱动,具有以下功能:


  1.跨平台支持:Windows,macOS,Linux,BSD;


  2.跨体系结构支持:x86,x86_64,ARM,ARM64等;


  3.多文件结构支持:PE,MachO,ELF;


  4.在隔离的环境中模拟沙盒系统代码;


  5.提供高级API来安装和配置沙箱环境;


  6.细粒度显示:允许设置多个级别的钩子(指令/基本块/内存访问/异常/系统调用/ IO等);


  7.允许动态修补正在运行的程序代码,包括已加载的库;


  8.Python框架支持,允许构建和自定义安全分析工具;

  Qiling与其他模拟器的比较


  当前,社区中有许多开源模拟器。 最接近Qiling的是Unicorn和Qemu。


  Qiling vs Unicorn引擎


  尽管Qiling基于Unicorn,但它们完全不同:


  1. Unicorn只是一个CPU模拟器,主要用于模拟CPU指令。  Unicorn无法识别高级概念,例如动态库,系统调用,I / O处理或可执行文件格式(例如PE,MachO或ELF)。 因此,Unicorn只能模拟原始设备指令,而不能应用于操作系统上下文方案。


  2.Qiling是一个高级框架。 它可以使用Unicorn模拟CPU指令,但也可以了解操作系统上下文。 它集成了可执行文件格式加载器,动态链接,系统调用和I / O处理器。 更重要的是,Qiling可以在不需要本机操作系统的环境中运行可执行源代码。


  Qiling vs Qemu用户模式


  Qemu用户模式类似于我们的Qiling,它可以跨架构模拟整个可执行文件的源代码。 但是,Qiling的不同之处在于:


  1.Qiling是一个真实的分析框架,它使我们能够构建自己的动态分析工具(使用Python)。 除此之外,Qemu只是一个工具,而不是一个框架。


  2. Qiling可以执行动态指令并可以在运行时修补代码,而Qemu无法做到。


  3. Qiling支持跨平台,但是Qemu用户模式只能在与源代码环境相同的操作系统上使用。


  4.Qiling支持更多平台,包括Windows,macOS,Linux&BSD,但Qemu用户模式只支持Linu BSD。


工具安装


  大多数研究人员可以使用以下命令安装Qiling(注意:请在安装前设置Python 3环境):

   python3 setup.py install

  工具使用示例


  在以下示例中,我们将演示如何使用Qiling框架在Linux设备上模拟目标Windows可执行文件:

  from qiling import *# sandbox to emulate the EXEdef 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-windows-hello.exe"], "examples/rootfs/x86_windows")


  在下面的示例中,我们将演示如何使用Qiling框架动态修复Windows Crackme并在“祝贺”对话框中显示相关信息:

  from qiling import *def force_call_dialog_func(ql):    # get DialogFunc address    lpDialogFunc = ql.unpack32(ql.mem_read(ql.sp - 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.pc = lpDialogFuncdef my_sandbox(path, rootfs):    ql = Qiling(path, rootfs)    # NOP out some code    ql.patch(0x004010B5, b'\x90\x90')    ql.patch(0x004010CD, b'\x90\x90')    ql.patch(0x0040110B, b'\x90\x90')    ql.patch(0x00401112, b'\x90\x90')    # hook at an address with a callback    ql.hook_address(0x00401016, force_call_dialog_func)    ql.run()if __name__ == "__main__":    my_sandbox(["rootfs/x86_windows/bin/Easy_CrackMe.exe"], "rootfs/x86_windows")


Qltool


  Qiling还提供了一个强大的工具qltool,它可以帮助我们快速模拟目标Shellcode或可执行文件的源代码。


  以下命令可以直接模拟目标源代码:

  $ ./qltool run -f examples/rootfs/arm_linux/bin/arm32-hello --rootfs examples/rootfs/arm_linux/

  要模拟Shellcode,您需要运行以下命令:

  $ ./qltool shellcode --os linux --arch x86 --asm -f examples/shellcodes/lin32_execve.asm

本文由 重庆软件开发 整理发布,转载请保留出处,内容部分来自于互联网,如有侵权请联系我们删除。

相关热词搜索:Qiling 高级代码模拟框架 Unicorn引擎驱动 跨平台支持 跨架构支持 多文件结构支持 重庆软件开发

上一篇:GDA:新型反编译工具,基于C++开发,方便使用运行速度非常快,支持APK,DEX,OBED和oat文件格式。
下一篇:网络安全之医疗行业的潜在网络安全风险:勒索软件,挖矿木马

热门资讯

鼠标向下滚动