Skip to content

Commit 7f27ec3

Browse files
authored
Merge pull request #532 from qilingframework/dev
getting ready for 1.1.3
2 parents 79326ba + 123dd2d commit 7f27ec3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+2331
-248
lines changed

.github/workflows/giteesync.yml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
name: sync to gitee
2+
on:
3+
push:
4+
5+
jobs:
6+
deploy:
7+
runs-on: ubuntu-latest
8+
steps:
9+
- uses: actions/checkout@v2
10+
with:
11+
fetch-depth: 0
12+
- uses: acefei/sync-repo-action@master
13+
with:
14+
ssh_private_key: ${{ secrets.GITEE_KEY }}
15+
target_repo: ssh://git@gitee.com/qilingframework/qiling.git

ChangeLog

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,22 @@
11
This file details the changelog of Qiling Framework.
22

3+
------------------------------------
4+
[Version 1.2]: October [SOMETHING], 2020
5+
- Demigod finally arrived, more information about [Demigod](https://groundx.io/demigod/)
6+
37

4-
[Version 1.2-alpha1]: September [SOMETHING], 2020
8+
------------------------------------
9+
[Version 1.1.3]: September 30, 2020
10+
11+
- Added Doogie example and implement more interrupts
12+
- Added ollvm de-flattern support for IDA plugin
13+
- Fixed the popup menu doesn't show when the IDA plugin is put into plugins directory
14+
- Added Json report extension
15+
- Fix register mapping
16+
- ql_syscall_writeev: Use ql.dprint instead of checking debug level
17+
- Added support for fcntl64 F_SETFL and non-blocking sockets
18+
- drcov_exact: coverage collection at instruction granularity
19+
- Added UDP support
520

621

722
------------------------------------
@@ -13,6 +28,7 @@ This file details the changelog of Qiling Framework.
1328
- Add mapper support for standalone disks.
1429
- More BIOS/DOS interrupts support shipped with fully emulated Petya as a mbr analysis example.
1530

31+
1632
------------------------------------
1733
[Version 1.1.1]: August 23th, 2020
1834

Dockerfile

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,29 @@
1-
FROM python:3.6-alpine
2-
3-
MAINTAINER "Kevin Foo <chbsd64@gmail.com>"
4-
5-
ENV PIP_NO_CACHE_DIR=1
6-
7-
RUN apk add --no-cache \
8-
gcc \
9-
make \
10-
cmake \
11-
libtool \
12-
automake \
13-
autoconf \
14-
libmagic \
15-
g++ \
16-
linux-headers \
17-
git \
18-
libstdc++ \
19-
bash \
20-
vim
1+
FROM python:3.6-slim AS builder
2+
3+
LABEL maintainer="Kevin Foo <chfl4gs@qiling.io>"
4+
5+
ENV DEBIAN_FRONTEND=noninteractive
6+
7+
RUN apt-get update \
8+
&& apt-get -y upgrade \
9+
&& apt-get install -y --no-install-recommends cmake build-essential gcc git
2110

2211
RUN git clone -b dev https://github.com/qilingframework/qiling.git \
23-
&& cd qiling \
24-
&& pip3 install . \
25-
&& rm -rf /tmp/*
12+
&& cd qiling \
13+
&& pip wheel . -w wheels
14+
15+
FROM python:3.6-slim AS base
16+
17+
COPY --from=builder /qiling /qiling
2618

2719
WORKDIR /qiling
2820

21+
RUN apt-get update \
22+
&& apt-get install -y libmagic-dev \
23+
&& rm -rf /var/lib/apt/lists/* \
24+
&& pip3 install wheels/*.whl \
25+
&& rm -rf wheels
26+
2927
ENV HOME /qiling
3028

3129
CMD bash

README.md

Lines changed: 21 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
[![Pypi](https://img.shields.io/pypi/dm/qiling?label=pypi)](https://pypi.org/project/qiling/)
1+
[![Downloads](https://pepy.tech/badge/qiling)](https://pepy.tech/project/qiling)
22
[![Gitter](https://badges.gitter.im/qilingframework/community.svg)](https://gitter.im/qilingframework/community)
33
[![Build Status](https://travis-ci.com/qilingframework/qiling.svg?branch=dev)](https://travis-ci.com/qilingframework/qiling)
44
![Docker Image CI](https://github.com/qilingframework/qiling/workflows/Docker%20Image%20CI/badge.svg?branch=dev)
@@ -13,17 +13,18 @@ Qiling is an advanced binary emulation framework, with the following features:
1313
- Cross platform: Windows, MacOS, Linux, BSD, UEFI, DOS, MBR
1414
- Cross architecture: X86, X86_64, Arm, Arm64, MIPS, 8086
1515
- Multiple file formats: PE, MachO, ELF, COM, MBR
16+
- Support Windows Driver (.sys), Linux Kernel Module (.ko) & MacOS Kernel (.kext) via [Demigod](https://groundx.io/demigod/)
1617
- Emulates & sandbox machine code in an isolated environment
1718
- Provides a fully configurable sandbox
1819
- Provides in-dept memory, register, OS level and filesystem level API
1920
- Fine-grain instrumentation: allows hooks at various levels (instruction/basic-block/memory-access/exception/syscall/IO/etc)
20-
- Provides virtual machine level API such as save and restore current execution state.
21+
- Provides virtual machine level API such as save and restore current execution state
2122
- Supports cross architecture and platform debugging capabilities
2223
- Built-in debugger with reverse debugging capability
2324
- Allows dynamic hotpatch on-the-fly running code, including the loaded library
2425
- True framework in Python, making it easy to build customized security analysis tools on top
2526

26-
Qiling also made its way to various international conferences
27+
Qiling also made its way to various international conferences.
2728

2829
2020:
2930

@@ -59,17 +60,17 @@ There are many open source emulators, but two projects closest to Qiling are [Un
5960

6061
Built on top of Unicorn, but Qiling & Unicorn are two different animals.
6162

62-
- Unicorn is just a CPU emulator, so it focuses on emulating CPU instructions, that can understand emulator memory. Beyond that, Unicorn is not aware of higher level concepts, such as dynamic libraries, system calls, I/O handling or executable formats like PE, MachO or ELF. As a result, Unicorn can only emulate raw machine instructions, without Operating System (OS) context.
63-
- Qiling is designed as a higher level framework, that leverages Unicorn to emulate CPU instructions, but can understand OS: it has executable format loaders (for PE, MachO & ELF at the moment), dynamic linkers (so we can load & relocate shared libraries), syscall & IO handlers. For this reason, Qiling can run executable binary without requiring its native OS.
63+
- Unicorn is just a CPU emulator, so it focuses on emulating CPU instructions, that can understand emulator memory. Beyond that, Unicorn is not aware of higher level concepts, such as dynamic libraries, system calls, I/O handling or executable formats like PE, MachO or ELF. As a result, Unicorn can only emulate raw machine instructions, without Operating System (OS) context
64+
- Qiling is designed as a higher level framework, that leverages Unicorn to emulate CPU instructions, but can understand OS: it has executable format loaders (for PE, MachO & ELF at the moment), dynamic linkers (so we can load & relocate shared libraries), syscall & IO handlers. For this reason, Qiling can run executable binary without requiring its native OS
6465

6566
##### Qiling vs Qemu usermode
6667

6768
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.
6869

69-
- Qiling is a true analysis framework, that allows you to build your own dynamic analysis tools on top (in friendly Python language). Meanwhile, Qemu is just a tool, not a framework.
70-
- Qiling can perform dynamic instrumentation, and can even hotpatch code at runtime. Qemu does not do either.
71-
- Not only working cross-architecture, Qiling is also cross-platform, so for example you can run Linux ELF file on top of Windows. In contrast, Qemu usermode only run binary of the same OS, such as Linux ELF on Linux, due to the way it forwards syscall from emulated code to native OS.
72-
- Qiling supports more platforms, including Windows, MacOS, Linux & BSD. Qemu usermode can only handle Linux & BSD.
70+
- Qiling is a true analysis framework, that allows you to build your own dynamic analysis tools on top (in friendly Python language). Meanwhile, Qemu is just a tool, not a framework
71+
- Qiling can perform dynamic instrumentation, and can even hotpatch code at runtime. Qemu does not do either
72+
- Not only working cross-architecture, Qiling is also cross-platform, so for example you can run Linux ELF file on top of Windows. In contrast, Qemu usermode only run binary of the same OS, such as Linux ELF on Linux, due to the way it forwards syscall from emulated code to native OS
73+
- Qiling supports more platforms, including Windows, MacOS, Linux & BSD. Qemu usermode can only handle Linux & BSD
7374

7475
---
7576

@@ -80,7 +81,7 @@ Please see [setup guide](https://docs.qiling.io/en/latest/install/) file for how
8081

8182
#### Examples
8283

83-
- Below example shows how to use Qiling framework to emulate a Windows EXE on a Linux machine.
84+
- Below example shows how to use Qiling framework to emulate a Windows EXE on a Linux machine
8485

8586
```python
8687
from qiling import *
@@ -97,7 +98,7 @@ if __name__ == "__main__":
9798
my_sandbox(["examples/rootfs/x86_windows/bin/x86_hello.exe"], "examples/rootfs/x86_windows")
9899
```
99100

100-
- Below example shows how to use Qiling framework to dynamically patch a Windows crackme, make it always display "Congratulation" dialog.
101+
- Below example shows how to use Qiling framework to dynamically patch a Windows crackme, make it always display "Congratulation" dialog
101102

102103
```python
103104
from qiling import *
@@ -135,7 +136,7 @@ The below Youtube video shows how the above example works.
135136

136137
#### Qiling's IDAPro Plugin: Instrument and Decrypt Mirai's Secret
137138

138-
- This video demonstrate how Qiling's IDAPro plugin able to make IDApro run with Qiling instrumentation engine.
139+
- This video demonstrate how Qiling's IDAPro plugin able to make IDApro run with Qiling instrumentation engine
139140

140141
[![](http://img.youtube.com/vi/ZWMWTq2WTXk/0.jpg)](http://www.youtube.com/watch?v=ZWMWTq2WTXk "iling's IDAPro Plugin: Instrument and Decrypt Mirai's Secret")
141142

@@ -193,6 +194,14 @@ $ ./qltool run -f examples/rootfs/x8664_efi/bin/TcgPlatformSetupPolicy --rootfs
193194
```
194195
---
195196

197+
With json output (Windows mainly):
198+
199+
```
200+
$ ./qltool run -f examples/rootfs/x86_windows/bin/x86_hello.exe --rootfs examples/rootfs/x86_windows/ --console False --json
201+
```
202+
---
203+
204+
196205
#### Contact
197206

198207
Get the latest info from our website https://www.qiling.io

TODO

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ Android
4646

4747
-------------------- CHECKLIST before TAG --------------------
4848
Release
49-
1. core.py
49+
1. qiling/__version__.py
5050
- __version__ = "1.[x].[x]"
5151
2. Make sure development status classifer in setup.py is correct.
5252
- 'Development Status :: 5 - Production/Stable'

0 commit comments

Comments
 (0)