Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
455 commits
Select commit Hold shift + click to select a range
7ddb1ea
Adjust overlooked find_containing_image usages
elicn Mar 6, 2022
fc2f454
Code deuplication: use mem align methods
elicn Mar 9, 2022
e5963ac
Update align methods documentation
elicn Mar 9, 2022
89c516d
Code deuplication: use mem pagesize
elicn Mar 9, 2022
c781b70
Add interp to loaded images list
elicn Mar 9, 2022
750c4bf
Fix meminfo table formatting
elicn Mar 9, 2022
829ac52
Fix image search by label
elicn Mar 10, 2022
2b47ec7
Add stat structs for mips big endian
ttyS0 Mar 15, 2022
9b01024
Fix GDB address endianness for MIPS
ttyS0 Mar 17, 2022
9917a7a
fix cacheflush syscall typo
cq674350529 Mar 18, 2022
2c88791
Merge pull request #1115 from cq674350529/fix/fix_syscall_typo
xwings Mar 23, 2022
4c1292c
Add files via upload
xwings Mar 23, 2022
c9071af
Add files via upload
xwings Mar 24, 2022
501f22b
upload new logo
xwings Mar 24, 2022
90b2de8
Update README.md
xwings Mar 24, 2022
aa18b28
pass vm_context as hook's parameter
TheZ3ro Mar 24, 2022
27918c1
fix evm hooks test
TheZ3ro Mar 24, 2022
63fc062
Merge pull request #1119 from TheZ3ro/evm
xwings Mar 25, 2022
26fe48d
fix(example): mistake in fuzz_x8664_linux binary
chinggg Mar 28, 2022
3c0dc0b
Merge pull request #1121 from chinggg/fix-example-fuzz-x8664
xwings Mar 31, 2022
47cf870
Load interpreter segments with correct perms and vaddr
bet4it Mar 25, 2022
3b1edaf
add more ABI encode decode helpers
TheZ3ro Apr 2, 2022
ed2478e
test EVM ABI encoding decoding
TheZ3ro Apr 2, 2022
113d0fd
fix stack view in evm dbg
TheZ3ro Apr 2, 2022
ddbd6de
Merge pull request #1120 from bet4it/interp
kabeor Apr 4, 2022
dcf507d
fix(posix): handle exception when open socket
chinggg Apr 5, 2022
6b65a26
Merge pull request #1124 from chinggg/fix-socket-except
kabeor Apr 7, 2022
55a8039
Merge pull request #1123 from TheZ3ro/evm-2
kabeor Apr 7, 2022
8c2007d
update changelog to 1.4.3
Apr 7, 2022
2a344a8
Windows server 2022 runner
chfl4gs Apr 8, 2022
3a1e3a2
Merge pull request #1128 from chfl4gs/dev
xwings Apr 9, 2022
8503d74
Merge pull request #1125 from kabeor/changelog_143
xwings Apr 9, 2022
45cb8bf
Update CREDITS.TXT
xwings Apr 14, 2022
f6a7970
Update CREDITS.TXT
xwings Apr 14, 2022
db3b37c
Update giteesync.yml
xwings Apr 14, 2022
b895724
Update giteesync.yml
xwings Apr 14, 2022
bdda1fe
merge
xwings Apr 14, 2022
a0262f2
Merge branch 'dev' of github.com:qilingframework/qiling into dev
xwings Apr 14, 2022
ab5cc2b
update credits.txt
xwings Apr 14, 2022
bf80581
Update giteesync.yml
xwings Apr 14, 2022
c43c26d
Update README.md
xwings Apr 14, 2022
188a0dc
Update README.md
xwings Apr 14, 2022
bde231c
Update giteesync.yml
xwings Apr 14, 2022
597df61
Update giteesync.yml
xwings Apr 14, 2022
6996158
Merge pull request #1091 from ucgJhe/qdb
xwings Apr 14, 2022
f384146
Update and rename CREDITS.TXT to CREDITS.md
xwings Apr 14, 2022
7811af4
Update README.md
xwings Apr 14, 2022
935bfa1
Update README.md
xwings Apr 14, 2022
07edc6e
Merge pull request #1110 from nullableVoidPtr/fstat_empty_path
xwings Apr 16, 2022
29c33ab
Support for MIPS / ARM big endian
ttyS0 Apr 17, 2022
95aaf2b
Allow timespec64 in 32bit architectures
ttyS0 Apr 17, 2022
4ab748a
Merge branch 'dev' of github.com:sigeryang/qiling into dev
ttyS0 Apr 17, 2022
eb73692
Merge branch 'qilingframework:dev' into dev
ttyS0 Apr 17, 2022
b0a8152
Fix typehint problems
ttyS0 Apr 17, 2022
47ebc9d
Merge branch 'dev' of github.com:sigeryang/qiling into dev
ttyS0 Apr 17, 2022
b6761eb
Supplement test for MIPS big endian
ttyS0 Apr 17, 2022
afd2d14
Update unicorn dependency to 2.0.0-rc7
ttyS0 Apr 18, 2022
d49e72a
Update init_linux_traps in QNX
ttyS0 Apr 18, 2022
a12358d
Update README.md
xwings Apr 19, 2022
6a2fec5
Update README.md
xwings Apr 19, 2022
409d400
Update README.md
xwings Apr 19, 2022
20e0ca6
Update README.md
xwings Apr 19, 2022
efdf385
Update CREDITS.md
xwings Apr 19, 2022
0202fb4
Update CREDITS.md
xwings Apr 19, 2022
e1cd89d
Update README.md
xwings Apr 19, 2022
1c5ef83
Add gdb test for MIPS / ARM big endian
ttyS0 Apr 19, 2022
6160f1b
Remove examples (duplicated in tests)
ttyS0 Apr 19, 2022
6c49cde
Update credits
ttyS0 Apr 19, 2022
f0297a1
Merge pull request #1114 from sigeryang/dev
kabeor Apr 20, 2022
9cab7c3
add macho load command 'LC_LOAD_WEAK_DYLIB' support
hackeranonymousdeepweb Apr 21, 2022
a78db28
Compile pefile from source
chfl4gs Apr 23, 2022
7feb823
Merge pull request #1134 from chfl4gs/dev
kabeor Apr 23, 2022
6d56892
Introduce get_image_by_name to loader
elicn Mar 22, 2022
4adbd09
Remove dlls dict in favor of get_image_by_name
elicn Mar 22, 2022
edfe834
Massive revamp of Windows OS and PE Loader
elicn Mar 22, 2022
105916b
Refresh handle module
elicn Mar 22, 2022
f1d1484
Rewrite registry module
elicn Mar 22, 2022
eb0362f
Adjust registry module usages
elicn Mar 22, 2022
ae0e2f1
Refresh clipboard module
elicn Mar 22, 2022
60ea2b7
Adjust clipboard module usages
elicn Mar 22, 2022
a3763db
Refresh fiber module
elicn Mar 22, 2022
b20543e
Adjust fiber module usages
elicn Mar 22, 2022
324bb72
Refresh thread module
elicn Mar 22, 2022
c4593a0
Adjust components initialization
elicn Mar 22, 2022
5bd4f39
Fix some Windows path usages
elicn Mar 22, 2022
458675c
Call get_memory_mapped_image only once
elicn Mar 23, 2022
e77e1f4
Extract and extend QlOsStats
elicn Mar 23, 2022
5a85a16
Refresh gandcrab test
elicn Mar 23, 2022
b3f6b35
Misc. small changes
elicn Mar 23, 2022
1bb0b1d
Fix path canonicalization on Windows hosts
elicn Mar 25, 2022
760dfe9
Add missing ucrtbase.dll to the dllscollector script
elicn Mar 26, 2022
456c26d
Rewrite dllscollector script
elicn Mar 27, 2022
2954b73
Add missing exit command
elicn Mar 27, 2022
e9ff359
Create missing drivers dir
elicn Mar 27, 2022
307d9fd
Add winsys property to Windows OS
elicn Mar 30, 2022
3c1a8a7
Simplify load_dll signature
elicn Mar 30, 2022
5ff3d9a
Let OS determine registry hive path
elicn Mar 30, 2022
3a857e2
Refreshed path module
elicn Mar 30, 2022
a7e5dd0
Some changes to improve clarity
elicn Mar 30, 2022
e290601
Some code quality changes
elicn Mar 30, 2022
090be8f
Refreshed sality test
elicn Mar 30, 2022
fed2b52
Minor additions to dllscolector
elicn Mar 30, 2022
db8f558
Allow searching image name case-insensitive
elicn Mar 31, 2022
5427ff8
Make Image class more linter-friendly
elicn Mar 31, 2022
f0efc6f
Rewrite OS path module
elicn Apr 10, 2022
eefdb28
Adjust path usages
elicn Apr 10, 2022
1951a12
Adjust path tests
elicn Apr 10, 2022
e6f78b3
Handle NT case-insensitive filenames on POSIX hosts
elicn Apr 10, 2022
0e5a31c
Improve case insensitive filenames handling
elicn Apr 11, 2022
15969a8
Make pack / unpack more linter-friendly
elicn Apr 12, 2022
bc10892
Misc code quality fixes
elicn Apr 12, 2022
56c0bf7
Turn cache entry into a named tuple
elicn Apr 12, 2022
b172ba1
Slightly better typing annotations on PE loader
elicn Apr 12, 2022
958361c
Get rid of the problematic _typeshed import
elicn Apr 12, 2022
0484e73
Move EVM hooks handling to EVM arch
elicn Apr 12, 2022
6d8ada5
Tidy up EVM hooks
elicn Apr 12, 2022
8796fcb
Remove ostype property from core and move to OS
elicn Apr 13, 2022
f0c16da
Adjust ostype usages
elicn Apr 13, 2022
88a7836
Properly handle OS set_api
elicn Apr 14, 2022
bd7d20e
Make interpreter predicate based on arch rather than OS
elicn Apr 14, 2022
0d34a27
Misc insignificant changes
elicn Apr 14, 2022
9f3e8e5
Simplify loader_setup
elicn Apr 14, 2022
bc65ff3
Extract logging logic from utils
elicn Apr 14, 2022
68b704d
Move QlFileDes definition to POSIX
elicn Apr 14, 2022
46020d6
Allow deleting log filter
elicn Apr 15, 2022
048c136
Simplify catch_KeyboardInterrupt
elicn Apr 15, 2022
bafc859
Simplify hook_del
elicn Apr 15, 2022
512a6e7
Tidy up EVM hooks (round 2)
elicn Apr 15, 2022
4c20ca8
Fix log colors bug
elicn Apr 17, 2022
fa804dc
Skip tests properly
elicn Apr 17, 2022
6e74077
Improve and comment examples
elicn Apr 17, 2022
fc2c8c8
Rearrange guess_emu_env
elicn Apr 17, 2022
dc9aa8a
Rearrange enum convertion methods
elicn Apr 17, 2022
b868ecd
Use lazy imports to reduce unnecessary deps
elicn Apr 17, 2022
3ef5137
Rearrange components setup methods
elicn Apr 17, 2022
457ca16
Misc insignificant fixes
elicn Apr 17, 2022
829a924
Fix forgotten var rename
elicn Apr 18, 2022
3d0b0ae
Make argreg a class member
elicn Apr 19, 2022
a52bd23
set getRawParam and setRawParam default argbits to 0
elicn Apr 19, 2022
8ad4a1c
Remove unnecessary imports
elicn Apr 19, 2022
e2dc1e8
Make dynamic imports relative to qiling package
elicn Apr 19, 2022
f04e181
Move get_syscall_mapper to POSIX
elicn Apr 19, 2022
11ebcd2
Allow dynamic import of an entire module
elicn Apr 19, 2022
eb6666e
Have baremetal work around nonexistant OS
elicn Apr 19, 2022
63737fa
Fix QDB init args enumeration
elicn Apr 20, 2022
10165ef
Fix QDB test import
elicn Apr 20, 2022
85dfb3c
Handle calls to get_terminal_size from non-tty
elicn Apr 20, 2022
55a0a44
Reduce imports clutter
elicn Apr 21, 2022
913a79a
Have core uc property reference arch uc instance
elicn Apr 21, 2022
3f03eb4
Minor robustness fixes to POSIX syscalls
elicn Apr 21, 2022
2bd8c93
Deduplicate Linux timespec struct
elicn Apr 21, 2022
573ce1f
Remove Python 3.6 workaround
elicn Apr 21, 2022
eec7db5
Introduce PowerPC architecture to qiling
bet4it Apr 23, 2022
59d31c2
Add missing __init__.py to os blob
OlfillasOdikno Apr 25, 2022
6fe3fa4
Merge pull request #1140 from bet4it/powerpc
xwings Apr 28, 2022
513bdee
Use binary mode on Windows host for emulation of non-Windows operatin…
nmantani Apr 29, 2022
d92e50c
Merge pull request #1143 from nmantani/fix-ql_open_flag_mapping
xwings Apr 30, 2022
fe76d4f
fix(memory): remove misused region bound check of unmap_all
chinggg May 1, 2022
9940ae8
change deprecated interfaces of IDA
machinewu May 1, 2022
6c2aa30
Use importlib to retrieve package version
nullableVoidPtr May 1, 2022
7c6b804
Merge pull request #1145 from machinewu/dev2
kabeor May 1, 2022
c05972f
Merge pull request #1144 from chinggg/fix-unmap_all
wtdcode May 1, 2022
b026d58
Merge pull request #1146 from nullableVoidPtr/singlever
kabeor May 2, 2022
9bde07b
Merge branch 'dev' into master
kabeor May 2, 2022
c4a046d
Merge pull request #1133 from profiles/master
kabeor May 2, 2022
aff5f2e
Update test_android.py
xwings May 3, 2022
c9b3922
fix android test
xwings May 3, 2022
253a298
Implement some syscalls to support Android Runtime
bet4it May 3, 2022
69409d7
Complete rewrite of gdbserver
elicn May 4, 2022
0a37fbf
Add XInclude namespace to allow correct parsing
elicn May 4, 2022
d2092bb
Reformat gdb xml files
elicn May 4, 2022
4198033
Rename x86 eflags reg to match gdb name
elicn May 4, 2022
546cbc9
Rename AUX enum
elicn May 4, 2022
7258e4c
Have auxv hold mem address instead of dict values
elicn May 4, 2022
964fc35
Clean up
elicn May 4, 2022
01a1941
Reduce imports clutter
elicn May 4, 2022
5f4c3dc
Fix missing imports
elicn May 4, 2022
baaf9cc
Reformat arm regs map
elicn May 4, 2022
cd8610f
Merge pull request #742 from bet4it/syscalls
kabeor May 5, 2022
09b69d5
Merge branch 'dev' into dev
xwings May 5, 2022
897f2a8
Dummy commit to re-initiate tests
elicn May 5, 2022
d49beed
Add missing regs for MIPS
elicn May 5, 2022
03c47b4
Fix MIPS regs gdb definition
elicn May 5, 2022
3b90595
Make qmark handler generic rather than hardcoded
elicn May 5, 2022
da82023
Add a few gdbserver debug messages
elicn May 5, 2022
f72bfb8
Support arbitrary regs definition order
elicn May 6, 2022
2ee4ecc
Add ARM D* registers
elicn May 6, 2022
e3f7db2
Better handling of EB reg values
elicn May 6, 2022
bf08390
Update explanatory comment
elicn May 6, 2022
c0a657f
Remove unnecessary ARM F* regs
elicn May 6, 2022
de3afe9
Reformat ARM xml files
elicn May 6, 2022
8549aa7
Add aarch64 B*, D*, H*, Q*, S* and V* regs
elicn May 6, 2022
0ac80ef
Reformat ARM64 xml files
elicn May 6, 2022
a03f6ce
Remove nonexistent syspage.bin from MANIFEST
nullableVoidPtr May 7, 2022
d333629
Use pkgutil instead of absolute paths
nullableVoidPtr May 7, 2022
84798b1
Fix for nonexistent profiles
nullableVoidPtr May 7, 2022
d166a98
Run giteesync only on main repository
nullableVoidPtr May 7, 2022
d051174
Replace MANIFEST.in with package_data
nullableVoidPtr May 7, 2022
719b98a
Add to credits
nullableVoidPtr May 7, 2022
d054465
More generic less hardcoded values
elicn May 7, 2022
b3b5511
Fix transmission of large files
elicn May 7, 2022
c375b57
Fix a8086 regs mapping for gdb
elicn May 7, 2022
9bfbba1
Remove method that is no longer used
elicn May 7, 2022
0a06dd4
Simplify qmark_handler further
elicn May 8, 2022
f82ca0f
Use proper value endian
elicn May 8, 2022
945f32d
Document uc stepping bug
elicn May 8, 2022
9c6140d
pkgutil -> inspect + Path
nullableVoidPtr May 8, 2022
561f3a8
Merge pull request #1150 from nullableVoidPtr/pkgutil
kabeor May 10, 2022
fc8c22a
Merge branch 'dev' into gdb-improv
elicn May 10, 2022
7c1580e
Merge pull request #1148 from elicn/gdb-improv
elicn May 10, 2022
7dc2e97
Remove method that is no longer used
elicn May 12, 2022
6f3ccb1
Change is_mapped semantics
elicn May 12, 2022
835d889
Rename and change how show_mapinfo is used
elicn May 12, 2022
0d37928
Support plain and regex memory searches
elicn May 12, 2022
ab06b4b
Improving typing annotations
elicn May 12, 2022
3c531d0
Fix stats
elicn May 12, 2022
d69d03b
Annotate and comment the heck of core_hooks
elicn May 12, 2022
c2d657f
Skip tests the unittest way
elicn May 12, 2022
5081730
Rename handle objects to avoid ambiguity with constants
elicn May 18, 2022
60105fe
Replace magic values with constants
elicn May 18, 2022
6bf4673
Better handling of standard streams on Windows
elicn May 18, 2022
5546c7c
Simplify files handling as std streams can be accessed by handles now
elicn May 18, 2022
5b9c666
Remove the obsolete "authomize output" option
elicn May 18, 2022
e8b8ca5
Reduce tests suite side effects
elicn May 18, 2022
e633e62
Rearrange as a utility class to allow patching XML
elicn May 18, 2022
36b45ef
Fix incorrect fd representation
elicn May 18, 2022
38769e6
Fix DLL cache filename on POSIX hosts
elicn May 18, 2022
fc9898a
Merge pull request #1154 from elicn/improv
xwings May 22, 2022
600e7ad
Fix logger memory exhaustion
Phat3 May 25, 2022
d2df83b
Use proxy instead of ref
Phat3 May 25, 2022
105cf06
Merge pull request #1161 from Phat3/fix/log_mem_exhaustion
xwings May 27, 2022
3b265bb
Update changelog
May 27, 2022
baf35d5
Update changelog
May 27, 2022
369200e
bump pefile to 2022.5.30
chfl4gs May 31, 2022
ef622bb
Merge pull request #1164 from chfl4gs/dev
xwings May 31, 2022
50f4027
Fix #1157
elicn May 22, 2022
efade02
Tweak brk syscall
elicn May 22, 2022
1f0755d
Correct typos
elicn May 23, 2022
2062a72
Let EVM patch ql.run
elicn May 23, 2022
1adf297
Annotate and document ql.run
elicn May 23, 2022
e01ce97
Annotations and import fixes
elicn May 23, 2022
59953e1
Better handling of rootfs default
elicn May 24, 2022
aab3cb2
A few more annotations
elicn May 24, 2022
8e9b21e
Reverting arg name change
elicn May 24, 2022
c01471a
Add missing ARM regs
elicn May 30, 2022
0287c96
Remove ARM endian workaround
elicn May 30, 2022
5ec2c96
Add missing x86-64 regs
elicn May 30, 2022
a8736fe
Merge pull request #1162 from kabeor/qldev
xwings Jun 1, 2022
85d9528
Update ChangeLog
xwings Jun 1, 2022
f9a2b8e
get ready for release
xwings Jun 1, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/build-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
fail-fast: false
matrix:
#os: [windows-2019, macos-10.15, ubuntu-18.04, ubuntu-20.04]
os: [windows-2019, ubuntu-18.04, ubuntu-20.04]
os: [windows-latest, ubuntu-18.04, ubuntu-20.04]
python-version: [3.8, 3.9]
exclude:
- os: ubuntu-18.04
Expand Down
1 change: 1 addition & 0 deletions .github/workflows/giteesync.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
jobs:
deploy:
runs-on: ubuntu-latest
if: github.repository_owner == 'qilingframework'
steps:
- uses: actions/checkout@v2
with:
Expand Down
29 changes: 16 additions & 13 deletions CREDITS.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,27 +3,27 @@

#### Founder

- LAU kaijern (xwings) <kj@qiling.io>
- LAU kaijern (xwings) <kj_at_qiling_io>


#### Advisor

- NGUYEN Anh Quynh <aquynh@gmail.com>
- NGUYEN Anh Quynh <aquynh_at_gmail_com>


#### Core Developers Crew

- Earl MARCUS (klks84) klks84@gmail.com
- WU chenxu (kabeor) <kabeor@qiling.io>
- KONG ziqiao (lazymio) <mio@lazym.io>
- YU zheng (dataisland) <dataisland@outlook.com>
- Eli Cohen Nehemia (elicn) <elichn@gmail.com>
- Earl MARCUS (klks84) <klks84_at_gmail_com>
- WU chenxu (kabeor) <kabeor_at_qiling_io>
- KONG ziqiao (lazymio) <mio_at_lazym_io>
- YU zheng (dataisland) <dataisland_at_outlook_com>
- Eli Cohen Nehemia (elicn) <elichn_at_gmail_com>


#### CI, Website,Documentations, Logo & Swags

- FOO Kevin (chfl4gs) <chfl4gs@qiling.io>
- SU muchen (Mirai Suu) <suu@qiling.io>
- FOO Kevin (chfl4gs) <chfl4gs_at_qiling_io>
- SU muchen (miraisuu) <suu_at_iling_io>


#### Key Contributors (in no particular order)
Expand Down Expand Up @@ -52,14 +52,17 @@
- bambu
- madprogrammer
- danielmoos
- sigeryang
- bet4it
- nullableVoidPtr


#### Legacy Core Developers

- DING tianze (D1iv3) <dddliv3@gmail.com>
- SUN bowen (w1tcher) <w1tcher.bupt@gmail.com>
- CHEN huitao (null) <null@qiling.io>
- YU tong (sp1ke) <spikeinhouse@gmail.com>
- DING tianze (D1iv3)
- SUN bowen (w1tcher)
- CHEN huitao (null)
- YU tong (sp1ke)


#### Demigod team (https://groundx.io/demigod)
Expand Down
53 changes: 53 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -1,5 +1,58 @@
This file details the changelog of Qiling Framework.

------------------------------------
[Version 1.4.4]: July XX, 2022


------------------------------------
[Version 1.4.3]: June 1st, 2022

New features:
- Introduce PowerPC architecture support (#1140)

Improvements:
- Fix fuzzing for tendaac15 (#1096)
- Update unicorn version to 2.0-rc6 (#1100)
- Implemented a few more Windows msvcrt functions (#1102)
- Minor PE Loader fix (#1104)
- Minor quality changes (#1106)
- Fix cacheflush syscall typo (#1115)
- Improvements and fixes for Windows and PE (#1118)
- Add vm_context to EVM hooks (#1119)
- Load interpreter segments with correct perms and vaddr (#1120)
- Fix mistakes in fuzz_x8664_linux binary (#1121)
- Add EVM ABI helpers, fix EVM DBG stack view (#1123)
- Fix regression caused by missing exception handling when opening socket (#1124)
- CI improvement (#1128 #1134)
- Add macho load command 'LC_LOAD_WEAK_DYLIB' support (#1133)
- Fix breakage of non-Windows binary emulation on Windows host (#1143)
- Remove misused region bound check of unmap_all (#1144)
- Change deprecated interfaces of IDA (#1145)
- Use importlib to retrieve package version (#1146)
- New and improved gdbserver (#1148)
- Rewrite package data reading (#1150)
- Misc improvements (#1154)
- Fix memory exhaustion problem caused by the logger (#1161)

Contributors:
- wtdcode
- aquynh
- elicn
- xwings
- cq674350529
- elicn
- TheZ3ro
- bet4it
- chinggg
- kabeor
- chfl4gs
- profiles
- OlfillasOdikno
- nmantan
- machinewu
- nullableVoidPtr
- Phat3


------------------------------------
[Version 1.4.2]: Feb 13th, 2022
Expand Down
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ WORKDIR /qiling
RUN apt-get update \
&& apt-get install -y --no-install-recommends unzip apt-utils \
&& rm -rf /var/lib/apt/lists/* \
&& pip3 install wheels/*.whl \
&& pip3 install --no-deps wheels/*.whl \
&& rm -rf wheels

ENV HOME /qiling
Expand Down
5 changes: 0 additions & 5 deletions MANIFEST.in

This file was deleted.

59 changes: 31 additions & 28 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,12 @@
<img width="150" height="150" src="https://raw.githubusercontent.com/qilingframework/qiling/master/docs/qiling2_logo_small.png">
</p>

[Qiling's usecase, blog and related work](https://github.com/qilingframework/qiling/issues/134)

Qiling is an advanced binary emulation framework, with the following features:

- Emulate multi-platforms: Windows, MacOS, Linux, BSD, UEFI, DOS, MBR, Ethereum Virtual Machine
- Emulate multi-architectures: X86, X86_64, Arm, Arm64, MIPS, 8086
- Emulate multi-platforms: Windows, MacOS, Linux, Android, BSD, UEFI, DOS, MBR, Ethereum Virtual Machine
- Emulate multi-architectures: 8086, X86, X86_64, ARM, ARM64, MIPS, RISCV, PowerPC
- Support multiple file formats: PE, MachO, ELF, COM, MBR
- Support Windows Driver (.sys), Linux Kernel Module (.ko) & MacOS Kernel (.kext) via [Demigod](https://groundx.io/demigod/)
- Emulates & sandbox code in an isolated environment
Expand Down Expand Up @@ -88,55 +90,55 @@ Please see [setup guide](https://docs.qiling.io/en/latest/install/) file for how

#### Examples

- Below example shows how to use Qiling framework to emulate a Windows EXE on a Linux machine
- The example below shows how to use Qiling framework in the most striaghtforward way to emulate a Windows executable.

```python
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()
from qiling import Qiling

if __name__ == "__main__":
# execute Windows EXE under our rootfs
my_sandbox(["examples/rootfs/x86_windows/bin/x86_hello.exe"], "examples/rootfs/x86_windows")
# initialize Qiling instance, specifying the executable to emulate and the emulated system root.
# note that the current working directory is assumed to be Qiling home
ql = Qiling([r'examples/rootfs/x86_windows/bin/x86_hello.exe'], r'examples/rootfs/x86_windows')

# start emulation
ql.run()
```

- Below example shows how to use Qiling framework to dynamically patch a Windows crackme, make it always display "Congratulation" dialog
- The following example shows how a Windows crackme may be patched dynamically to make it always display the "Congratulation" dialog.

```python
from qiling import *
from qiling import Qiling

def force_call_dialog_func(ql: Qiling):
# get DialogFunc address from current stack frame
lpDialogFunc = ql.stack_read(-8)

def force_call_dialog_func(ql):
# get DialogFunc address
lpDialogFunc = ql.unpack32(ql.mem.read(ql.reg.esp - 0x8, 4))
# setup stack memory for DialogFunc
ql.stack_push(0)
ql.stack_push(1001)
ql.stack_push(273)
ql.stack_push(1001) # IDS_APPNAME
ql.stack_push(0x111) # WM_COMMAND
ql.stack_push(0)

# push return address
ql.stack_push(0x0401018)
# force EIP to DialogFunc
ql.reg.eip = lpDialogFunc

# resume emulation from DialogFunc address
ql.arch.regs.eip = lpDialogFunc


def my_sandbox(path, rootfs):
ql = Qiling(path, rootfs)
if __name__ == "__main__":
# initialize Qiling instance
ql = Qiling([r'rootfs/x86_windows/bin/Easy_CrackMe.exe'], r'rootfs/x86_windows')

# 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(force_call_dialog_func, 0x00401016)
ql.run()


if __name__ == "__main__":
my_sandbox(["rootfs/x86_windows/bin/Easy_CrackMe.exe"], "rootfs/x86_windows")
```

The below Youtube video shows how the above example works.
Expand Down Expand Up @@ -221,6 +223,7 @@ Contact us at email info@qiling.io, or via Twitter [@qiling_io](https://twitter.

Please refer to [CREDITS.md](https://github.com/qilingframework/qiling/blob/dev/CREDITS.md)


---

#### This is an awesome project! Can I donate?
Expand Down
38 changes: 21 additions & 17 deletions examples/crackme_x86_linux.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,11 @@

class Solver:
def __init__(self, invalid: bytes):
mock_stdin = pipe.SimpleInStream(sys.stdin.fileno())
mock_stdout = pipe.NullOutStream(sys.stdout.fileno())

# create a silent qiling instance
self.ql = Qiling([rf"{ROOTFS}/bin/crackme_linux"], ROOTFS,
verbose=QL_VERBOSE.OFF, # thwart qiling logger output
stdin=mock_stdin, # take over the input to the program using a fake stdin
stdout=mock_stdout) # disregard program output
self.ql = Qiling([rf"{ROOTFS}/bin/crackme_linux"], ROOTFS, verbose=QL_VERBOSE.OFF)

self.ql.os.stdin = pipe.SimpleInStream(sys.stdin.fileno()) # take over the input to the program using a fake stdin
self.ql.os.stdout = pipe.NullOutStream(sys.stdout.fileno()) # disregard program output

# execute program until it reaches the 'main' function
self.ql.run(end=0x0804851b)
Expand All @@ -32,7 +29,7 @@ def __init__(self, invalid: bytes):
#
# since the emulation halted upon entering 'main', its return address is there on
# the stack. we use it to limit the emulation till function returns
self.replay_starts = self.ql.reg.arch_pc
self.replay_starts = self.ql.arch.regs.arch_pc
self.replay_ends = self.ql.stack_read(0)

# instead of restarting the whole program every time a new flag character is guessed,
Expand Down Expand Up @@ -92,21 +89,26 @@ def replay(self, input: bytes) -> bool:

return False

def progress(msg: str) -> None:
print(msg, end='\r', file=sys.stderr, flush=True)

def main():
idx_list = (1, 4, 2, 0, 3)
flag = [0] * len(idx_list)
flag = bytearray(b'*****')
indices = (1, 4, 2, 0, 3)

solver = Solver(bytes(flag))
# all possible flag characters (may be reduced to uppercase and digits to save time)
charset = string.printable

for idx in idx_list:
progress('Initializing...')
solver = Solver(flag)

# bruteforce all possible flag characters
for ch in string.printable:
flag[idx] = ord(ch)
for i in indices:
for ch in charset:
flag[i] = ord(ch)

print(f'Guessing... [{"".join(chr(ch) if ch else "_" for ch in flag)}]', end='\r', file=sys.stderr, flush=True)
progress(f'Guessing... {flag.decode()}')

if solver.replay(bytes(flag)):
if solver.replay(flag):
break

else:
Expand All @@ -116,3 +118,5 @@ def main():

if __name__ == "__main__":
main()

# expected flag: L1NUX
Loading