您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“Qiling是一款什么框架”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“Qiling是一款什么框架”這篇文章吧。
Qiling是一款功能強大的高級代碼模擬框架,該工具由Unicorn引擎驅動,并且擁有下列功能:
1、跨平臺支持:Windows、macOS、Linux、BSD;
2、跨架構支持:x86、x86_64、ARM、ARM64等等;
3、多文件結構支持:PE、MachO、ELF;
4、在隔離環境中模擬&沙盒系統代碼;
5、提供高級API來安裝和配置沙盒環境;
6、細粒度顯示:允許設置多種級別的鉤子(instruction/basic-block/memory-access/exception/syscall/IO等等);
7、允許動態修補運行中的程序代碼,包括已加載的庫;
8、Python框架支持,允許構建和定制安全分析工具;
目前,社區有很多開源的模擬器,最接近Qiling的就是Unicorn和Qemu了。
雖然Qiling 時基于Unicorn實現的,但是它們兩個完全不同:
1、Unicorn只是一個CPU模擬器,它主要針對的是模擬CPU指令。Unicorn無法識別高級概念,例如動態庫、系統調用、I/O處理或類似PE、MachO或ELF這樣的可執行文件格式。因此,Unicorn只能夠模擬原始設備指令,無法適用于操作系統上下文場景。
2、Qiling是一個高級框架,它可以利用Unicorn來模擬CPU指令,但是它同樣可以理解操作系統上下文,它集成了可執行文件格式加載器、動態鏈接、系統調用和I/O處理器。更重要的是,Qiling可以在不需要原生操作系統的環境下運行可執行文件源碼。
Qemu用戶模式跟我們的Qiling類似,它可以跨架構模擬整個可執行文件的源碼。但是,Qiling的不同之處在于:
1、Qiling是一個真正的分析框架,它允許我們構建自己的動態分析工具(使用Python)。除此之外,Qemu只是一款工具,而不是一個框架。
2、Qiling可以執行動態指令,并且能夠在運行時進行代碼修補,這一點Qemu就無法做到了。
3、Qiling支持跨平臺,但是Qemu用戶模式只能在與源代碼環境相同的操作系統上使用。
4、Qiling支持更多的平臺,包括Windows、macOS、Linux&BSD,但Qemu用戶模式只支持Linux&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 engineql = Qiling(path, rootfs)# now emulate the EXEql.run()if __name__ == "__main__":# execute Windows EXE under our rootfsmy_sandbox(["examples/rootfs/x86_windows/bin/x86-windows-hello.exe"], "examples/rootfs/x86_windows")
在下面的例子中,我們將演示如何使用Qiling框架對Windows crackme進行動態修復,并在“Congratulation”對話框中顯示相關信息:
from qiling import *def force_call_dialog_func(ql):# get DialogFunc addresslpDialogFunc = ql.unpack32(ql.mem_read(ql.sp - 0x8, 4))# setup stack memory for DialogFuncql.stack_push(0) ql.stack_push(1001) ql.stack_push(273) ql.stack_push(0) ql.stack_push(0x0401018)# force EIP to DialogFuncql.pc = lpDialogFuncdef my_sandbox(path, rootfs): ql = Qiling(path, rootfs)# NOP out some codeql.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 callbackql.hook_address(0x00401016, force_call_dialog_func) ql.run()if __name__ == "__main__": my_sandbox(["rootfs/x86_windows/bin/Easy_CrackMe.exe"], "rootfs/x86_windows")
視頻地址:https://v.qq.com/x/page/m3061ozrz3s.html
視頻地址:https://v.qq.com/x/page/h4061l4445g.html
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項目的開發與發布遵循GPLv2開源許可證協議。
以上是“Qiling是一款什么框架”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。