Skip to content
Closed
5 changes: 2 additions & 3 deletions .github/workflows/pythonpublish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,11 +13,10 @@ jobs:
python-version: '3.x'
- name: Install dependencies
run: |
pip install setuptools wheel
pip install setuptools wheel build
- name: Build distribution 📦
run: |
pip install .
python setup.py sdist bdist_wheel
python -m build
Comment thread
nullableVoidPtr marked this conversation as resolved.
- uses: actions/upload-artifact@v2
with:
path: ${{ github.workspace }}/dist/*
Expand Down
80 changes: 80 additions & 0 deletions pyproject.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
[project]
name = "qiling"
version = "1.4.5-dev"
description = "Qiling is an advanced binary emulation framework that cross-platform-architecture"
readme = "README.md"
requires-python = ">=3.8"
license = {text = "GPL-2.0-only"}
maintainers = [
{name = "KaiJern Lau (xwings)", email = "info@qiling.io"}
]
keywords = ["qiling", "binary", "emulator", "framework", "malware", "analysis", "UEFI", "IoT"]
classifiers = [
"Development Status :: 3 - Alpha",
"Intended Audience :: Developers",
"Topic :: Software Development :: Build Tools",
"License :: OSI Approved :: GNU General Public License v2 (GPLv2)",
"Programming Language :: Python :: 3"
]

dependencies = [
"capstone>=4.0.1",
"unicorn>=2.0.0",
"pefile>=2022.5.30",
"python-registry>=1.3.1",
"keystone-engine>=0.9.2",
"pyelftools>=0.28",
"gevent>=20.9.0",
"multiprocess>=0.70.12.2",
"windows-curses>=2.1.0;platform_system=='Windows'",
"pyyaml>=6.0",
"python-fx",
"questionary",
"termcolor"
]

[project.optional-dependencies]
evm = [
"blake2b-py>=0.1.2",
"cached-property>=1.5.2;python_version<'3.8'",
"typing-extensions>=3.7.4.3;python_version<'3.8'",
"eth-keys>=0.2.1",
"eth-typing>=2.2.0",
"eth-utils>=1.9.4",
"eth_abi>=2.1.1",
"lru-dict>=1.1.6",
"py-ecc>=1.4.7",
"rlp>=2",
"trie==2.0.0-alpha.5",
"eth-hash[pycryptodome]",
"numpy",
"rich",
"cmd2"
]
fuzz = [
"unicornafl>=2.0.0;platform_system!='Windows'",
"fuzzercorn>=0.0.1;platform_system=='Linux'"
]
RE = [
"r2libr>=5.7.4"
]

[project.urls]
homepage = "https://qiling.io"
documentation = "https://docs.qiling.io"
repository = "https://github.com/qilingframework/qiling"
changelog = "https://github.com/qilingframework/qiling/blob/master/ChangeLog"

[project.scripts]
qltool = "qltool:main"

[build-system]
requires = ["setuptools>=61.0.0", "wheel"]
build-backend = "setuptools.build_meta"

[tool.setuptools.package-data]
qiling = ["profiles/*.ql"]
"qiling.debugger.gdb" = ["xml/*/*"]
"qiling.os.uefi" = ["guids.csv"]
"qiling.arch.evm.analysis" = ["signatures.json"]

14 changes: 9 additions & 5 deletions qltool
Original file line number Diff line number Diff line change
Expand Up @@ -168,7 +168,7 @@ def handle_examples(parser: argparse.ArgumentParser):

parser.exit(0, __ql_examples)

if __name__ == '__main__':
def main():
parser = argparse.ArgumentParser()
parser.add_argument('--version', action='version', version=f'qltool for Qiling {ql_ver}, using Unicorn {uc_ver}')

Expand Down Expand Up @@ -266,11 +266,15 @@ if __name__ == '__main__':
ql.run(timeout=options.timeout)

if options.json:
report = report.generate_report(ql)
generated_report = report.generate_report(ql)
if qltui_enabled:
report["syscalls"] = qltui.transform_syscalls(ql.os.stats.syscalls)
qltui.show_report(ql, report, hook_dictionary)
generated_report["syscalls"] = qltui.transform_syscalls(ql.os.stats.syscalls)
qltui.show_report(ql, generated_report, hook_dictionary)
else:
pprint(report)
pprint(generated_report)

exit(ql.os.exit_code)


if __name__ == '__main__':
main()
99 changes: 2 additions & 97 deletions setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,101 +2,6 @@
#
# Python setup for Qiling framework

from setuptools import setup, find_packages
from setuptools import setup

# NOTE: use "-dev" for dev branch
VERSION = "1.4.5" + "-dev"
#VERSION = "1.4.4"

requirements = [
"capstone>=4.0.1",
"unicorn>=2.0.0",
"pefile>=2022.5.30",
"python-registry>=1.3.1",
"keystone-engine>=0.9.2",
"pyelftools>=0.28",
"gevent>=20.9.0",
"multiprocess>=0.70.12.2",
"windows-curses>=2.1.0;platform_system=='Windows'",
"pyyaml>=6.0",
"python-fx",
"questionary",
"termcolor",
]

extras = {
"evm": [
"blake2b-py>=0.1.2",
"cached-property>=1.5.2;python_version<'3.8'",
"typing-extensions>=3.7.4.3;python_version<'3.8'",
"eth-keys>=0.2.1",
"eth-typing>=2.2.0",
"eth-utils>=1.9.4",
"eth_abi>=2.1.1",
"lru-dict>=1.1.6",
"py-ecc>=1.4.7",
"rlp>=2",
"trie==2.0.0-alpha.5",
"eth-hash[pycryptodome]",
"numpy",
"rich",
"cmd2"
],
"fuzz" : [
"unicornafl>=2.0.0;platform_system!='Windows'",
"fuzzercorn>=0.0.1;platform_system=='Linux'"
],
"RE": [
"r2libr>=5.7.4",
]
}

with open("README.md", "r", encoding="utf-8") as ld:
long_description = ld.read()

setup(
name='qiling',
version=VERSION,

description='Qiling is an advanced binary emulation framework that cross-platform-architecture',
url='http://qiling.io',
long_description=long_description,
long_description_content_type="text/markdown",
maintainer='KaiJern Lau (xwings)',
maintainer_email='info@qiling.io',

license='GPLv2',

# See https://pypi.python.org/pypi?%3Aaction=list_classifiers
classifiers=[
# How mature is this project? Common values are
# 3 - Alpha
# 5 - Production/Stable
#'Development Status :: 5 - Production/Stable',
'Development Status :: 3 - Alpha',

# Indicate who your project is intended for
'Intended Audience :: Developers',
'Topic :: Software Development :: Build Tools',

# Pick your license as you wish (should match "license" above)
'License :: OSI Approved :: GNU General Public License v2 (GPLv2)',

# Specify the Python versions you support here. In particular, ensure
# that you indicate whether you support Python 2, Python 3 or both.
'Programming Language :: Python :: 3',
],

keywords='qiling binary emulator framework malware analysis UEFI IoT',

packages=find_packages(),
scripts=['qltool'],
package_data={
'qiling': ['profiles/*.ql'],
'qiling.debugger.gdb': ['xml/*/*'],
'qiling.os.uefi': ['guids.csv'],
'qiling.arch.evm.analysis': ['signatures.json']
},
install_requires=requirements,
extras_require=extras,
)
setup()