
Qiling is an advanced binary emulation framework, with the following features:
Qiling is backed by Unicorn engine.
Visit our website https://www.qiling.io for more information.
License
                                This project is released and distributed under free software license GPLv2.
There are many open source emulators, but two projects closest to Qiling are Unicorn & Qemu usermode. This section explains the main differences of Qiling against them.
Built on top of Unicorn, but Qiling & Unicorn are two different animals.
Qemu usermode does similar thing to our emulator, that is to emulate whole executable binaries in cross-architecture way. However, Qiling offers some important differences against Qemu usermode.
Install
                                Run below command line to install Qiling (Python3 is required).
                                python3 setup.py install
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-windows-hello.exe"], "examples/rootfs/x86_windows")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 = lpDialogFunc
                                        def 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")Qiling also provides a friendly tool named qltool to quickly emulate shellcode & executable binaries.
To emulate a binary, run:
$ ./qltool run -f examples/rootfs/arm_linux/bin/arm32-hello --rootfs examples/rootfs/arm_linux/
                                To run shellcode, run:
$ ./qltool shellcode --os linux --arch x86 --asm -f examples/shellcodes/lin32_execve.asmDownload Tool: https://github.com/qilingframework/qiling
            With world working from home, it's time to make it enjoyable and effective.
Read Details
            The recent pandemic was unexpected and unknown to most part of the world. It has changed our life and we are slowly adapting to our new lifestyle. The risks associated with the new lifestyle, both personal & corporate, are unknown to most of us.
Read Details